#
tokens: 114692/50000 1/1140 files (page 101/103)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 101 of 103. Use http://codebase.md/cyfrin/aderyn?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .cargo
│   └── config.toml
├── .git-blame-ignore-revs
├── .gitattributes
├── .github
│   ├── images
│   │   ├── aderyn_logo.png
│   │   ├── poweredbycyfrinblack.png
│   │   └── poweredbycyfrinblue.png
│   ├── ISSUE_TEMPLATE
│   │   ├── bug_report.md
│   │   ├── false_positive_issue.md
│   │   └── feature_request.md
│   └── workflows
│       ├── cargo.yml
│       ├── dependencies.yml
│       ├── release.yml
│       ├── reports.yml
│       └── toml.yml
├── .gitignore
├── .gitmodules
├── .vscode
│   └── settings.json
├── aderyn
│   ├── Cargo.toml
│   ├── oranda.json
│   ├── README.md
│   ├── src
│   │   ├── birdsong.rs
│   │   ├── completions.rs
│   │   ├── lib.rs
│   │   ├── lsp.rs
│   │   ├── main.rs
│   │   ├── mcp.rs
│   │   └── panic.rs
│   └── templates
│       └── aderyn.toml
├── aderyn_core
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── README.md
│   ├── src
│   │   ├── ast
│   │   │   ├── ast_nodes.rs
│   │   │   ├── ast.rs
│   │   │   ├── impls
│   │   │   │   ├── ctx
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── workspace.rs
│   │   │   │   ├── ctx.rs
│   │   │   │   ├── disp
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── disp.rs
│   │   │   │   ├── node
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── documentation.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── import_directives.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── pragma_directives.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── node.rs
│   │   │   │   ├── own
│   │   │   │   │   ├── hashing.rs
│   │   │   │   │   ├── node_id.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   └── own.rs
│   │   │   ├── impls.rs
│   │   │   ├── macros.rs
│   │   │   ├── magic.rs
│   │   │   ├── node_type.rs
│   │   │   └── yul.rs
│   │   ├── ast.rs
│   │   ├── audit
│   │   │   ├── attack_surface.rs
│   │   │   ├── auditor.rs
│   │   │   ├── entrypoint.rs
│   │   │   └── public_functions_no_sender.rs
│   │   ├── audit.rs
│   │   ├── context
│   │   │   ├── browser
│   │   │   │   ├── ancestral_line.rs
│   │   │   │   ├── closest_ancestor.rs
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── extractor.rs
│   │   │   │   ├── immediate_children.rs
│   │   │   │   ├── location.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── parent.rs
│   │   │   │   ├── peek_over.rs
│   │   │   │   ├── peek_under.rs
│   │   │   │   ├── peek.rs
│   │   │   │   ├── siblings.rs
│   │   │   │   ├── sort_nodes.rs
│   │   │   │   └── storage_vars.rs
│   │   │   ├── browser.rs
│   │   │   ├── capturable.rs
│   │   │   ├── flow
│   │   │   │   ├── display.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── kind.rs
│   │   │   │   ├── primitives.rs
│   │   │   │   ├── reducibles.rs
│   │   │   │   ├── tests.rs
│   │   │   │   ├── utils.rs
│   │   │   │   ├── visualizer.rs
│   │   │   │   └── voids.rs
│   │   │   ├── flow.rs
│   │   │   ├── graph
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   ├── new.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── visit.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── preprocess
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   └── new.rs
│   │   │   │   ├── preprocess.rs
│   │   │   │   ├── traits.rs
│   │   │   │   └── utils.rs
│   │   │   ├── graph.rs
│   │   │   ├── macros.rs
│   │   │   ├── mcp
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── contract_surface
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── util.rs
│   │   │   │   ├── contract_surface.rs
│   │   │   │   ├── list_contracts
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── list_contracts.rs
│   │   │   │   ├── node_finder
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_finder.rs
│   │   │   │   ├── node_summarizer
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_summarizer.rs
│   │   │   │   ├── project_overview
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── project_overview.rs
│   │   │   │   ├── tool_guide
│   │   │   │   │   └── tool.rs
│   │   │   │   └── tool_guide.rs
│   │   │   ├── mcp.rs
│   │   │   ├── router
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── internal_calls.rs
│   │   │   │   ├── modifier_calls.rs
│   │   │   │   └── tests.rs
│   │   │   ├── router.rs
│   │   │   └── workspace.rs
│   │   ├── context.rs
│   │   ├── detect
│   │   │   ├── detector.rs
│   │   │   ├── entrypoint.rs
│   │   │   ├── helpers.rs
│   │   │   ├── high
│   │   │   │   ├── _template.rs
│   │   │   │   ├── abi_encode_packed_hash_collision.rs
│   │   │   │   ├── arbitrary_transfer_from.rs
│   │   │   │   ├── const_func_changes_state.rs
│   │   │   │   ├── contract_locks_ether.rs
│   │   │   │   ├── dangerous_unary_operator.rs
│   │   │   │   ├── delegate_call_unchecked_address.rs
│   │   │   │   ├── delete_nested_mapping.rs
│   │   │   │   ├── dynamic_array_length_assignment.rs
│   │   │   │   ├── enumerable_loop_removal.rs
│   │   │   │   ├── eth_send_unchecked_address.rs
│   │   │   │   ├── experimental_encoder.rs
│   │   │   │   ├── function_selector_collision.rs
│   │   │   │   ├── incorrect_caret_operator.rs
│   │   │   │   ├── incorrect_erc20_interface.rs
│   │   │   │   ├── incorrect_erc721_interface.rs
│   │   │   │   ├── incorrect_shift_order.rs
│   │   │   │   ├── misused_boolean.rs
│   │   │   │   ├── msg_value_in_loops.rs
│   │   │   │   ├── multiple_constructors.rs
│   │   │   │   ├── nested_struct_in_mapping.rs
│   │   │   │   ├── out_of_order_retryable.rs
│   │   │   │   ├── pre_declared_variable_usage.rs
│   │   │   │   ├── reentrancy_state_change.rs
│   │   │   │   ├── reused_contract_name.rs
│   │   │   │   ├── rtlo.rs
│   │   │   │   ├── selfdestruct.rs
│   │   │   │   ├── signed_integer_storage_array.rs
│   │   │   │   ├── state_variable_shadowing.rs
│   │   │   │   ├── storage_array_memory_edit.rs
│   │   │   │   ├── strict_equality_contract_balance.rs
│   │   │   │   ├── tautological_compare.rs
│   │   │   │   ├── tautology_or_contradiction.rs
│   │   │   │   ├── tx_origin_used_for_auth.rs
│   │   │   │   ├── unchecked_low_level_call.rs
│   │   │   │   ├── unchecked_send.rs
│   │   │   │   ├── unprotected_initializer.rs
│   │   │   │   ├── unsafe_casting.rs
│   │   │   │   ├── weak_randomness.rs
│   │   │   │   └── yul_return.rs
│   │   │   ├── high.rs
│   │   │   ├── low
│   │   │   │   ├── _template.rs
│   │   │   │   ├── assert_state_change.rs
│   │   │   │   ├── block_timestamp_deadline.rs
│   │   │   │   ├── boolean_equality.rs
│   │   │   │   ├── builtin_symbol_shadowing.rs
│   │   │   │   ├── centralization_risk.rs
│   │   │   │   ├── constant_function_contains_assembly.rs
│   │   │   │   ├── costly_loop.rs
│   │   │   │   ├── dead_code.rs
│   │   │   │   ├── delegatecall_in_loop.rs
│   │   │   │   ├── deprecated_oz_function.rs
│   │   │   │   ├── division_before_multiplication.rs
│   │   │   │   ├── ecrecover.rs
│   │   │   │   ├── empty_block.rs
│   │   │   │   ├── empty_require_revert.rs
│   │   │   │   ├── function_initializing_state.rs
│   │   │   │   ├── function_pointer_in_constructor.rs
│   │   │   │   ├── inconsistent_type_names.rs
│   │   │   │   ├── incorrect_modifier.rs
│   │   │   │   ├── internal_function_used_once.rs
│   │   │   │   ├── large_numeric_literal.rs
│   │   │   │   ├── literal_instead_of_constant.rs
│   │   │   │   ├── local_variable_shadowing.rs
│   │   │   │   ├── missing_inheritance.rs
│   │   │   │   ├── modifier_used_only_once.rs
│   │   │   │   ├── multiple_placeholders.rs
│   │   │   │   ├── non_reentrant_not_first.rs
│   │   │   │   ├── push_0_opcode.rs
│   │   │   │   ├── redundant_statement.rs
│   │   │   │   ├── require_revert_in_loop.rs
│   │   │   │   ├── return_bomb.rs
│   │   │   │   ├── solmate_safe_transfer_lib.rs
│   │   │   │   ├── state_change_without_event.rs
│   │   │   │   ├── state_no_address_check.rs
│   │   │   │   ├── state_variable_could_be_constant.rs
│   │   │   │   ├── state_variable_could_be_immutable.rs
│   │   │   │   ├── state_variable_read_external.rs
│   │   │   │   ├── storage_array_length_not_cached.rs
│   │   │   │   ├── todo.rs
│   │   │   │   ├── unchecked_return.rs
│   │   │   │   ├── uninitialized_local_variable.rs
│   │   │   │   ├── unsafe_erc20_operation.rs
│   │   │   │   ├── unsafe_oz_erc721_mint.rs
│   │   │   │   ├── unspecific_solidity_pragma.rs
│   │   │   │   ├── unused_error.rs
│   │   │   │   ├── unused_import.rs
│   │   │   │   ├── unused_public_function.rs
│   │   │   │   ├── unused_state_variable.rs
│   │   │   │   └── void_constructor.rs
│   │   │   ├── low.rs
│   │   │   └── test_utils.rs
│   │   ├── detect.rs
│   │   ├── lib.rs
│   │   ├── stats
│   │   │   ├── cloc.rs
│   │   │   ├── dbg_tips.txt
│   │   │   ├── ignore.rs
│   │   │   ├── token.rs
│   │   │   └── util.rs
│   │   ├── stats.rs
│   │   ├── test_utils
│   │   │   └── load_source_unit.rs
│   │   ├── test_utils.rs
│   │   ├── visitor
│   │   │   ├── ast_visitor.rs
│   │   │   ├── macros.rs
│   │   │   └── workspace_visitor.rs
│   │   └── visitor.rs
│   ├── templates
│   │   └── mcp-tool-response
│   │       ├── callgraph.md
│   │       ├── contract_surface.md
│   │       ├── list_contracts.md
│   │       ├── node_finder_get_all.md
│   │       ├── node_finder_grep.md
│   │       ├── node_finder_search.md
│   │       ├── node_summarizer.md
│   │       ├── project_overview.md
│   │       └── tool_guide.md
│   └── tests
│       ├── common
│       │   ├── ancestral_line.rs
│       │   ├── closest_ancestor.rs
│       │   ├── immediate_children.rs
│       │   ├── immediate_parent.rs
│       │   ├── mod.rs
│       │   ├── new_ast_nodes.rs
│       │   ├── peek_over.rs
│       │   └── sibling.rs
│       └── traversal.rs
├── aderyn_driver
│   ├── .gitignore
│   ├── benches
│   │   └── detectors.rs
│   ├── Cargo.toml
│   ├── README.md
│   ├── src
│   │   ├── compile.rs
│   │   ├── config.rs
│   │   ├── display.rs
│   │   ├── driver.rs
│   │   ├── interface
│   │   │   ├── json.rs
│   │   │   ├── lsp.rs
│   │   │   ├── markdown.rs
│   │   │   ├── mod.rs
│   │   │   ├── sarif.rs
│   │   │   ├── tables.rs
│   │   │   └── util.rs
│   │   ├── lib.rs
│   │   ├── mcp.rs
│   │   ├── process.rs
│   │   └── runner.rs
│   └── tests
│       └── astgen.rs
├── bacon.toml
├── benchmarks
│   ├── aderyn
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── iteration_times.svg
│   │       │   └── pdf.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── iteration_times_small.svg
│   │       ├── iteration_times.svg
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── relative_iteration_times_small.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── SD.svg
│   │       └── typical.svg
│   ├── arbitrary-transfer-from
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── avoid-abi-encode-packed
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── block-timestamp-deadline
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── centralization-risk
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── constants-instead-of-literals
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── delegate-call-in-loop
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── deprecated-oz-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── ecrecover
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── empty-block
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── hello_world
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── inconsistent-type-names
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── large-numeric-literal
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── non-reentrant-before-others
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── push-zero-opcode
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── report
│   │   └── index.html
│   ├── require-with-string
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── solmate-safe-transfer-lib
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unindexed-events
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unprotected-initializer
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-erc20-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-oz-erc721-mint
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unspecific-solidity-pragma
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-internal-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-modifier
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-public-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   └── zero-address-check
│       ├── base
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       ├── change
│       │   └── estimates.json
│       ├── new
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       └── report
│           ├── both
│           │   ├── pdf.svg
│           │   └── regression.svg
│           ├── change
│           │   ├── mean.svg
│           │   ├── median.svg
│           │   └── t-test.svg
│           ├── index.html
│           ├── MAD.svg
│           ├── mean.svg
│           ├── median.svg
│           ├── pdf_small.svg
│           ├── pdf.svg
│           ├── regression_small.svg
│           ├── regression.svg
│           ├── relative_pdf_small.svg
│           ├── relative_regression_small.svg
│           ├── SD.svg
│           ├── slope.svg
│           └── typical.svg
├── Cargo.lock
├── Cargo.toml
├── cli
│   ├── benchmarks.sh
│   └── reportgen.sh
├── CODEOWNERS
├── CONTRIBUTING.md
├── cyfrinup
│   ├── dynamic_script
│   └── why.md
├── deny.toml
├── dist-workspace.toml
├── funding.json
├── LICENSE
├── Makefile
├── package-lock.json
├── package.json
├── README.md
├── RELEASE_CHECKLIST.md
├── reports
│   ├── adhoc-sol-files-highs-only-report.json
│   ├── adhoc-sol-files-report.md
│   ├── ccip-functions-report.md
│   ├── empty_report.md
│   ├── hardhat-playground-report.md
│   ├── nft-report-icm.md
│   ├── nft-report.md
│   ├── prb-math-report.md
│   ├── report.json
│   ├── report.md
│   ├── report.sarif
│   ├── sablier-aderyn-toml-nested-root.md
│   ├── templegold-report.md
│   └── uniswap_profile.md
├── rust-toolchain.toml
├── rustfmt.toml
├── tests
│   ├── adhoc-sol-files
│   │   ├── aderyn.toml
│   │   ├── Counter.sol
│   │   ├── DemoASTNodes.sol
│   │   ├── Helper.sol
│   │   ├── InconsistentUints.sol
│   │   ├── inheritance
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   └── InheritanceBase.sol
│   │   ├── InternalFunctions.sol
│   │   ├── lib
│   │   │   └── ThisShouldBeExcluded.sol
│   │   ├── multiple-versions
│   │   │   ├── 0.4
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.5
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.6
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.7
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   └── 0.8
│   │   │       ├── A.sol
│   │   │       └── B.sol
│   │   ├── OnceModifierExample.sol
│   │   └── StateVariables.sol
│   ├── ast
│   │   ├── abstract_contract.json
│   │   ├── address_payable.json
│   │   ├── array_type_name.json
│   │   ├── ast-erc4626.json
│   │   ├── base_constructor_call.json
│   │   ├── bit_not.json
│   │   ├── call.json
│   │   ├── constructor.json
│   │   ├── contract_dep_order.json
│   │   ├── do_while.json
│   │   ├── documentation_1.json
│   │   ├── documentation_2.json
│   │   ├── documentation_3.json
│   │   ├── documentation_local_variable.json
│   │   ├── documentation_on_statements.json
│   │   ├── documentation_triple.json
│   │   ├── empty_block.json
│   │   ├── enum_value_declaration.json
│   │   ├── enum_value.json
│   │   ├── event_definition.json
│   │   ├── experimental_encoder_pragma.json
│   │   ├── fallback_and_reveice_ether.json
│   │   ├── fallback_payable.json
│   │   ├── fallback.json
│   │   ├── function_type.json
│   │   ├── function.json
│   │   ├── global_enum.json
│   │   ├── global_struct.json
│   │   ├── inheritance_specifier.json
│   │   ├── leave.json
│   │   ├── license.json
│   │   ├── long_type_name_binary_operation.json
│   │   ├── long_type_name_identifier.json
│   │   ├── loop.json
│   │   ├── mappings.json
│   │   ├── modifier_definition.json
│   │   ├── modifier_invocation.json
│   │   ├── mutability.json
│   │   ├── nested_functions.json
│   │   ├── non_utf8.json
│   │   ├── override.json
│   │   ├── placeholder_statement.json
│   │   ├── receive_ether.json
│   │   ├── short_type_name_ref.json
│   │   ├── short_type_name.json
│   │   ├── slot_offset.json
│   │   ├── smoke.json
│   │   ├── source_location.json
│   │   ├── string.json
│   │   ├── stringlit.json
│   │   ├── switch_default.json
│   │   ├── switch.json
│   │   ├── try_catch.json
│   │   ├── two_base_functions.json
│   │   ├── unicode.json
│   │   ├── used_errors.json
│   │   ├── userDefinedValueType.json
│   │   ├── using_for_directive.json
│   │   ├── var_access.json
│   │   └── yul_hex_literal.json
│   ├── contract-playground
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── dot
│   │   │   └── .gitkeep
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── script
│   │   │   └── Counter.s.sol
│   │   ├── src
│   │   │   ├── AbstractContract.sol
│   │   │   ├── AderynIgnoreCustomDetectors.sol
│   │   │   ├── AdminContract.sol
│   │   │   ├── ArbitraryTransferFrom.sol
│   │   │   ├── AssemblyExample.sol
│   │   │   ├── AssertStateChange.sol
│   │   │   ├── auditor_mode
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   └── PublicFunctionsWithoutSenderCheck.sol
│   │   │   ├── BooleanEquality.sol
│   │   │   ├── BuiltinSymbolShadow.sol
│   │   │   ├── CacheArrayLength.sol
│   │   │   ├── CallGraphTests.sol
│   │   │   ├── Casting.sol
│   │   │   ├── cloc
│   │   │   │   ├── AnotherHeavilyCommentedContract.sol
│   │   │   │   ├── EmptyContractFile.sol
│   │   │   │   └── HeavilyCommentedContract.sol
│   │   │   ├── CompilerBugStorageSignedIntegerArray.sol
│   │   │   ├── ConstantFuncsAssembly.sol
│   │   │   ├── ConstantsLiterals.sol
│   │   │   ├── ConstFuncChangeState.sol
│   │   │   ├── ContractLocksEther.sol
│   │   │   ├── ContractWithTodo.sol
│   │   │   ├── control_flow
│   │   │   │   └── SimpleProgram.sol
│   │   │   ├── CostlyOperationsInsideLoops.sol
│   │   │   ├── Counter.sol
│   │   │   ├── CrazyPragma.sol
│   │   │   ├── DangerousStrictEquality1.sol
│   │   │   ├── DangerousStrictEquality2.sol
│   │   │   ├── DangerousUnaryOperator.sol
│   │   │   ├── DeadCode.sol
│   │   │   ├── DelegateCallWithoutAddressCheck.sol
│   │   │   ├── DeletionNestedMappingStructureContract.sol
│   │   │   ├── DeprecatedOZFunctions.sol
│   │   │   ├── DivisionBeforeMultiplication.sol
│   │   │   ├── DynamicArrayLengthAssignment.sol
│   │   │   ├── EmitAfterExternalCall.sol
│   │   │   ├── EmptyBlocks.sol
│   │   │   ├── EnumerableSetIteration.sol
│   │   │   ├── eth2
│   │   │   │   └── DepositContract.sol
│   │   │   ├── ExperimentalEncoder.sol
│   │   │   ├── ExternalCalls.sol
│   │   │   ├── FunctionInitializingState.sol
│   │   │   ├── FunctionPointers.sol
│   │   │   ├── FunctionSignatureCollision.sol
│   │   │   ├── HugeConstants.sol
│   │   │   ├── IgnoreEverything.sol
│   │   │   ├── InconsistentUints.sol
│   │   │   ├── IncorrectCaretOperator.sol
│   │   │   ├── IncorrectERC20.sol
│   │   │   ├── IncorrectERC721.sol
│   │   │   ├── IncorrectModifier.sol
│   │   │   ├── IncorrectShift.sol
│   │   │   ├── inheritance
│   │   │   │   ├── ExtendedInheritance.sol
│   │   │   │   ├── IContractInheritance.sol
│   │   │   │   └── InheritanceBase.sol
│   │   │   ├── InternalFunctions.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── LocalVariableShadow.sol
│   │   │   ├── MissingInheritance.sol
│   │   │   ├── MisusedBoolean.sol
│   │   │   ├── MsgValueInLoop.sol
│   │   │   ├── MultipleConstructorSchemes.sol
│   │   │   ├── MultiplePlaceholders.sol
│   │   │   ├── nested
│   │   │   │   ├── 1
│   │   │   │   │   └── Nested.sol
│   │   │   │   └── 2
│   │   │   │       └── Nested.sol
│   │   │   ├── nested_mappings
│   │   │   │   ├── LaterVersion.sol
│   │   │   │   └── NestedMappings.sol
│   │   │   ├── OnceModifierExample.sol
│   │   │   ├── OnlyLibrary.sol
│   │   │   ├── OutOfOrderRetryable.sol
│   │   │   ├── parent_chain
│   │   │   │   └── ParentChainContract.sol
│   │   │   ├── PragmaRange.sol
│   │   │   ├── PreDeclaredVarUsage.sol
│   │   │   ├── PublicFunction.sol
│   │   │   ├── PublicVariableReadInExternalContext.sol
│   │   │   ├── RedundantStatements.sol
│   │   │   ├── ReturnBomb.sol
│   │   │   ├── reused_contract_name
│   │   │   │   ├── ContractA.sol
│   │   │   │   └── ContractB.sol
│   │   │   ├── RevertsAndRequriesInLoops.sol
│   │   │   ├── router
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   ├── FallbackAndReceiveOverrides.sol
│   │   │   │   ├── InternalCalls.sol
│   │   │   │   ├── ModifierCalls.sol
│   │   │   │   └── VarOverridesFunction.sol
│   │   │   ├── RTLO.sol
│   │   │   ├── SendEtherNoChecks.sol
│   │   │   ├── SendEtherNoChecksLibImport.sol
│   │   │   ├── StateChangeAfterExternalCall.sol
│   │   │   ├── StateShadowing.sol
│   │   │   ├── StateVariableCouldBeDeclaredConstant.sol
│   │   │   ├── StateVariableCouldBeDeclaredImmutable.sol
│   │   │   ├── StateVariables.sol
│   │   │   ├── StateVariablesChangesWithoutEvents.sol
│   │   │   ├── StateVariablesManipulation.sol
│   │   │   ├── StorageConditionals.sol
│   │   │   ├── StorageParameters.sol
│   │   │   ├── T11sTranferer.sol
│   │   │   ├── TautologicalCompare.sol
│   │   │   ├── TautologyOrContradiction.sol
│   │   │   ├── TestERC20.sol
│   │   │   ├── TransientKeyword.sol
│   │   │   ├── Trump.sol
│   │   │   ├── TxOriginUsedForAuth.sol
│   │   │   ├── U2.sol
│   │   │   ├── U3.sol
│   │   │   ├── U4.sol
│   │   │   ├── U5.sol
│   │   │   ├── UncheckedCalls.sol
│   │   │   ├── UncheckedReturn.sol
│   │   │   ├── UncheckedSend.sol
│   │   │   ├── UninitializedLocalVariables.sol
│   │   │   ├── UninitializedStateVariable.sol
│   │   │   ├── uniswap
│   │   │   │   ├── UniswapV2Swapper.sol
│   │   │   │   └── UniswapV3Swapper.sol
│   │   │   ├── UnprotectedInitialize.sol
│   │   │   ├── UnsafeERC721Mint.sol
│   │   │   ├── UnusedError.sol
│   │   │   ├── UnusedImport.sol
│   │   │   ├── UnusedStateVariables.sol
│   │   │   ├── UsingSelfdestruct.sol
│   │   │   ├── VoidConstructor.sol
│   │   │   ├── WeakRandomness.sol
│   │   │   ├── WrongOrderOfLayout.sol
│   │   │   ├── YulReturn.sol
│   │   │   └── ZeroAddressCheck.sol
│   │   └── test
│   │       └── Counter.t.sol
│   ├── foundry-nft-f23
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── foundry.lock
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── foundry-nft-f23-icm
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── aderyn.toml
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── hardhat-js-playground
│   │   ├── .gitignore
│   │   ├── artifacts
│   │   │   ├── build-info
│   │   │   │   └── cee6fe9a9a2f03f7ff10a27ab2746af6.json
│   │   │   └── contracts
│   │   │       ├── Counter.sol
│   │   │       │   ├── Counter.dbg.json
│   │   │       │   └── Counter.json
│   │   │       ├── ExtendedInheritance.sol
│   │   │       │   ├── ExtendedInheritance.dbg.json
│   │   │       │   └── ExtendedInheritance.json
│   │   │       ├── IContractInheritance.sol
│   │   │       │   ├── IContractInheritance.dbg.json
│   │   │       │   └── IContractInheritance.json
│   │   │       ├── InheritanceBase.sol
│   │   │       │   ├── InheritanceBase.dbg.json
│   │   │       │   └── InheritanceBase.json
│   │   │       ├── KeccakContract.sol
│   │   │       │   ├── KeccakContract.dbg.json
│   │   │       │   └── KeccakContract.json
│   │   │       ├── Lock.sol
│   │   │       │   ├── Lock.dbg.json
│   │   │       │   └── Lock.json
│   │   │       └── StateVariables.sol
│   │   │           ├── StateVariables.dbg.json
│   │   │           └── StateVariables.json
│   │   ├── contracts
│   │   │   ├── Counter.sol
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   ├── InheritanceBase.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── Lock.sol
│   │   │   └── StateVariables.sol
│   │   ├── hardhat.config.js
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── scripts
│   │   │   └── deploy.js
│   │   ├── test
│   │   │   └── Lock.js
│   │   └── yarn.lock
│   ├── no-sol-files
│   │   ├── extra
│   │   │   └── HelloAgain.md
│   │   ├── Hello.txt
│   │   └── Hello.yul
│   └── toml
│       ├── nested_project1
│       │   ├── aderyn.toml
│       │   ├── folder1
│       │   │   └── hardhat.config.ts
│       │   ├── folder2
│       │   │   └── hardhat.config.ts
│       │   └── folder3
│       │       └── file.txt
│       └── nested_project2
│           ├── aderyn.toml
│           ├── folder1
│           │   └── foundry.toml
│           └── folder2
│               └── file1.txt
├── tools
│   └── xtask
│       ├── Cargo.toml
│       └── src
│           ├── blesspr.rs
│           ├── cut_release.rs
│           ├── flags.rs
│           ├── main.rs
│           ├── reportgen.rs
│           └── tomlgen.rs
└── typos.toml
```

# Files

--------------------------------------------------------------------------------
/reports/report.md:
--------------------------------------------------------------------------------

```markdown
   1 | # Aderyn Analysis Report
   2 | 
   3 | This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.
   4 | # Table of Contents
   5 | 
   6 | - [Summary](#summary)
   7 |   - [Files Summary](#files-summary)
   8 |   - [Files Details](#files-details)
   9 |   - [Issue Summary](#issue-summary)
  10 | - [High Issues](#high-issues)
  11 |   - [H-1: `abi.encodePacked()` Hash Collision](#h-1-abiencodepacked-hash-collision)
  12 |   - [H-2: Arbitrary `from` Passed to `transferFrom`](#h-2-arbitrary-from-passed-to-transferfrom)
  13 |   - [H-3: Unprotected initializer](#h-3-unprotected-initializer)
  14 |   - [H-4: Unsafe Casting of integers](#h-4-unsafe-casting-of-integers)
  15 |   - [H-5: EnumerableSet.remove Corrupts Order](#h-5-enumerablesetremove-corrupts-order)
  16 |   - [H-6: Experimental ABI Encoder](#h-6-experimental-abi-encoder)
  17 |   - [H-7: Incorrect Assembly Shift Parameter Order](#h-7-incorrect-assembly-shift-parameter-order)
  18 |   - [H-8: Storage Array Edited with Memory](#h-8-storage-array-edited-with-memory)
  19 |   - [H-9: Contract Has Multiple Constructors](#h-9-contract-has-multiple-constructors)
  20 |   - [H-10: Contract Name Reused in Different Files](#h-10-contract-name-reused-in-different-files)
  21 |   - [H-11: Nested Structs in Mappings pre-0.5.0](#h-11-nested-structs-in-mappings-pre-050)
  22 |   - [H-12: `selfdestruct` is Deprecated](#h-12-selfdestruct-is-deprecated)
  23 |   - [H-13: Direct assignment of array length](#h-13-direct-assignment-of-array-length)
  24 |   - [H-14: Incorrect use of caret operator](#h-14-incorrect-use-of-caret-operator)
  25 |   - [H-15: Yul block contains `return`](#h-15-yul-block-contains-return)
  26 |   - [H-16: Shadowed State Variable](#h-16-shadowed-state-variable)
  27 |   - [H-17: Unchecked `bool success` value for ETH send](#h-17-unchecked-bool-success-value-for-eth-send)
  28 |   - [H-18: Misused boolean with logical operators](#h-18-misused-boolean-with-logical-operators)
  29 |   - [H-19: ETH transferred without address checks](#h-19-eth-transferred-without-address-checks)
  30 |   - [H-20: `delegatecall` to an Arbitrary Address](#h-20-delegatecall-to-an-arbitrary-address)
  31 |   - [H-21: Tautological comparison](#h-21-tautological-comparison)
  32 |   - [H-22: RTLO character detected in file: \u{202e}](#h-22-rtlo-character-detected-in-file-u202e)
  33 |   - [H-23: Dangerous unary operator](#h-23-dangerous-unary-operator)
  34 |   - [H-24: Tautology or Contradiction in comparison](#h-24-tautology-or-contradiction-in-comparison)
  35 |   - [H-25: Dangerous strict equality checks on contract balances](#h-25-dangerous-strict-equality-checks-on-contract-balances)
  36 |   - [H-26: Signed integer array in storage (solc `<0.5.10`)](#h-26-signed-integer-array-in-storage-solc-0510)
  37 |   - [H-27: Weak Randomness](#h-27-weak-randomness)
  38 |   - [H-28: Usage of variable before declaration](#h-28-usage-of-variable-before-declaration)
  39 |   - [H-29: Deletion from a nested mapping](#h-29-deletion-from-a-nested-mapping)
  40 |   - [H-30: Use of `tx.origin` for authentication](#h-30-use-of-txorigin-for-authentication)
  41 |   - [H-31: Loop contains `msg.value`](#h-31-loop-contains-msgvalue)
  42 |   - [H-32: Contract locks Ether without a withdraw function](#h-32-contract-locks-ether-without-a-withdraw-function)
  43 |   - [H-33: Incorrect ERC721 interface](#h-33-incorrect-erc721-interface)
  44 |   - [H-34: Incorrect ERC20 interface](#h-34-incorrect-erc20-interface)
  45 |   - [H-35: Out of Order Retryable Transaction](#h-35-out-of-order-retryable-transaction)
  46 |   - [H-36: Constant functions changes state](#h-36-constant-functions-changes-state)
  47 |   - [H-37: Function Selector Collision](#h-37-function-selector-collision)
  48 |   - [H-38: Unchecked Low level calls](#h-38-unchecked-low-level-calls)
  49 |   - [H-39: Reentrancy: State change after external call](#h-39-reentrancy-state-change-after-external-call)
  50 | - [Low Issues](#low-issues)
  51 |   - [L-1: `delegatecall` in loop](#l-1-delegatecall-in-loop)
  52 |   - [L-2: Centralization Risk](#l-2-centralization-risk)
  53 |   - [L-3: Solmate's SafeTransferLib](#l-3-solmates-safetransferlib)
  54 |   - [L-4: `ecrecover` Signature Malleability](#l-4-ecrecover-signature-malleability)
  55 |   - [L-5: Deprecated OpenZeppelin Function](#l-5-deprecated-openzeppelin-function)
  56 |   - [L-6: Unsafe ERC20 Operation](#l-6-unsafe-erc20-operation)
  57 |   - [L-7: Unspecific Solidity Pragma](#l-7-unspecific-solidity-pragma)
  58 |   - [L-8: Address State Variable Set Without Checks](#l-8-address-state-variable-set-without-checks)
  59 |   - [L-9: Public Function Not Used Internally](#l-9-public-function-not-used-internally)
  60 |   - [L-10: Literal Instead of Constant](#l-10-literal-instead-of-constant)
  61 |   - [L-11: Empty `require()` / `revert()` Statement](#l-11-empty-require--revert-statement)
  62 |   - [L-12: `nonReentrant` is Not the First Modifier](#l-12-nonreentrant-is-not-the-first-modifier)
  63 |   - [L-13: Using `block.timestamp` for swap deadline offers no protection](#l-13-using-blocktimestamp-for-swap-deadline-offers-no-protection)
  64 |   - [L-14: Unsafe `ERC721::_mint()`](#l-14-unsafe-erc721mint)
  65 |   - [L-15: PUSH0 Opcode](#l-15-push0-opcode)
  66 |   - [L-16: Modifier Invoked Only Once](#l-16-modifier-invoked-only-once)
  67 |   - [L-17: Empty Block](#l-17-empty-block)
  68 |   - [L-18: Large Numeric Literal](#l-18-large-numeric-literal)
  69 |   - [L-19: Internal Function Used Only Once](#l-19-internal-function-used-only-once)
  70 |   - [L-20: Contract has TODO Comments](#l-20-contract-has-todo-comments)
  71 |   - [L-21: Inconsistent uint256/uint (or) int256/int types](#l-21-inconsistent-uint256uint-or-int256int-types)
  72 |   - [L-22: Unused Error](#l-22-unused-error)
  73 |   - [L-23: Loop Contains `require`/`revert`](#l-23-loop-contains-requirerevert)
  74 |   - [L-24: Incorrect Order of Division and Multiplication](#l-24-incorrect-order-of-division-and-multiplication)
  75 |   - [L-25: Redundant Statement](#l-25-redundant-statement)
  76 |   - [L-26: State Variable is Read as External](#l-26-state-variable-is-read-as-external)
  77 |   - [L-27: Unused State Variable](#l-27-unused-state-variable)
  78 |   - [L-28: Constant Function Contains Assembly](#l-28-constant-function-contains-assembly)
  79 |   - [L-29: Boolean equality is not required](#l-29-boolean-equality-is-not-required)
  80 |   - [L-30: Local Variable Shadows State Variable](#l-30-local-variable-shadows-state-variable)
  81 |   - [L-31: Uninitialized Local Variable](#l-31-uninitialized-local-variable)
  82 |   - [L-32: Return Bomb](#l-32-return-bomb)
  83 |   - [L-33: Function Used to Initialize State Variable](#l-33-function-used-to-initialize-state-variable)
  84 |   - [L-34: Dead Code](#l-34-dead-code)
  85 |   - [L-35: Storage Array Length not Cached](#l-35-storage-array-length-not-cached)
  86 |   - [L-36: State change in `assert()` statement](#l-36-state-change-in-assert-statement)
  87 |   - [L-37: Costly operations inside loop](#l-37-costly-operations-inside-loop)
  88 |   - [L-38: Builtin Symbol Shadowing](#l-38-builtin-symbol-shadowing)
  89 |   - [L-39: Void constructor](#l-39-void-constructor)
  90 |   - [L-40: Missing Inheritance](#l-40-missing-inheritance)
  91 |   - [L-41: Unused Import](#l-41-unused-import)
  92 |   - [L-42: Function Pointer in Constructor](#l-42-function-pointer-in-constructor)
  93 |   - [L-43: State Variable Could Be Constant](#l-43-state-variable-could-be-constant)
  94 |   - [L-44: State Change Without Event](#l-44-state-change-without-event)
  95 |   - [L-45: State Variable Could Be Immutable](#l-45-state-variable-could-be-immutable)
  96 |   - [L-46: Multiple Placeholders in Modifier](#l-46-multiple-placeholders-in-modifier)
  97 |   - [L-47: Incorrect Use Of Modifier](#l-47-incorrect-use-of-modifier)
  98 |   - [L-48: Unchecked Return](#l-48-unchecked-return)
  99 | 
 100 | 
 101 | # Summary
 102 | 
 103 | ## Files Summary
 104 | 
 105 | | Key | Value |
 106 | | --- | --- |
 107 | | .sol Files | 126 |
 108 | | Total nSLOC | 4727 |
 109 | 
 110 | 
 111 | ## Files Details
 112 | 
 113 | | Filepath | nSLOC |
 114 | | --- | --- |
 115 | | src/AbstractContract.sol | 12 |
 116 | | src/AderynIgnoreCustomDetectors.sol | 17 |
 117 | | src/AdminContract.sol | 11 |
 118 | | src/ArbitraryTransferFrom.sol | 37 |
 119 | | src/AssemblyExample.sol | 9 |
 120 | | src/AssertStateChange.sol | 11 |
 121 | | src/BooleanEquality.sol | 27 |
 122 | | src/BuiltinSymbolShadow.sol | 14 |
 123 | | src/CacheArrayLength.sol | 38 |
 124 | | src/CallGraphTests.sol | 49 |
 125 | | src/Casting.sol | 146 |
 126 | | src/CompilerBugStorageSignedIntegerArray.sol | 13 |
 127 | | src/ConstFuncChangeState.sol | 15 |
 128 | | src/ConstantFuncsAssembly.sol | 26 |
 129 | | src/ConstantsLiterals.sol | 28 |
 130 | | src/ContractLocksEther.sol | 142 |
 131 | | src/ContractWithTodo.sol | 7 |
 132 | | src/CostlyOperationsInsideLoops.sol | 17 |
 133 | | src/Counter.sol | 20 |
 134 | | src/CrazyPragma.sol | 4 |
 135 | | src/DangerousStrictEquality1.sol | 6 |
 136 | | src/DangerousStrictEquality2.sol | 9 |
 137 | | src/DangerousUnaryOperator.sol | 13 |
 138 | | src/DeadCode.sol | 23 |
 139 | | src/DelegateCallWithoutAddressCheck.sol | 31 |
 140 | | src/DeletionNestedMappingStructureContract.sol | 11 |
 141 | | src/DeprecatedOZFunctions.sol | 32 |
 142 | | src/DivisionBeforeMultiplication.sol | 22 |
 143 | | src/DynamicArrayLengthAssignment.sol | 16 |
 144 | | src/EmitAfterExternalCall.sol | 67 |
 145 | | src/EmptyBlocks.sol | 48 |
 146 | | src/EnumerableSetIteration.sol | 55 |
 147 | | src/ExperimentalEncoder.sol | 4 |
 148 | | src/ExternalCalls.sol | 60 |
 149 | | src/FunctionInitializingState.sol | 49 |
 150 | | src/FunctionPointers.sol | 10 |
 151 | | src/FunctionSignatureCollision.sol | 9 |
 152 | | src/HugeConstants.sol | 36 |
 153 | | src/IgnoreEverything.sol | 5 |
 154 | | src/InconsistentUints.sol | 17 |
 155 | | src/IncorrectCaretOperator.sol | 16 |
 156 | | src/IncorrectERC20.sol | 98 |
 157 | | src/IncorrectERC721.sol | 238 |
 158 | | src/IncorrectModifier.sol | 65 |
 159 | | src/IncorrectShift.sol | 17 |
 160 | | src/InternalFunctions.sol | 22 |
 161 | | src/KeccakContract.sol | 21 |
 162 | | src/LocalVariableShadow.sol | 23 |
 163 | | src/MissingInheritance.sol | 39 |
 164 | | src/MisusedBoolean.sol | 67 |
 165 | | src/MsgValueInLoop.sol | 55 |
 166 | | src/MultipleConstructorSchemes.sol | 10 |
 167 | | src/MultiplePlaceholders.sol | 40 |
 168 | | src/OnceModifierExample.sol | 8 |
 169 | | src/OnlyLibrary.sol | 2 |
 170 | | src/OutOfOrderRetryable.sol | 165 |
 171 | | src/PragmaRange.sol | 6 |
 172 | | src/PreDeclaredVarUsage.sol | 9 |
 173 | | src/PublicFunction.sol | 15 |
 174 | | src/PublicVariableReadInExternalContext.sol | 32 |
 175 | | src/RTLO.sol | 7 |
 176 | | src/RedundantStatements.sol | 14 |
 177 | | src/ReturnBomb.sol | 44 |
 178 | | src/RevertsAndRequriesInLoops.sol | 27 |
 179 | | src/SendEtherNoChecks.sol | 58 |
 180 | | src/SendEtherNoChecksLibImport.sol | 17 |
 181 | | src/StateChangeAfterExternalCall.sol | 54 |
 182 | | src/StateShadowing.sol | 17 |
 183 | | src/StateVariableCouldBeDeclaredConstant.sol | 27 |
 184 | | src/StateVariableCouldBeDeclaredImmutable.sol | 22 |
 185 | | src/StateVariables.sol | 58 |
 186 | | src/StateVariablesChangesWithoutEvents.sol | 80 |
 187 | | src/StateVariablesManipulation.sol | 250 |
 188 | | src/StorageConditionals.sol | 59 |
 189 | | src/StorageParameters.sol | 16 |
 190 | | src/T11sTranferer.sol | 8 |
 191 | | src/TautologicalCompare.sol | 17 |
 192 | | src/TautologyOrContradiction.sol | 11 |
 193 | | src/TestERC20.sol | 62 |
 194 | | src/TransientKeyword.sol | 10 |
 195 | | src/Trump.sol | 281 |
 196 | | src/TxOriginUsedForAuth.sol | 43 |
 197 | | src/U2.sol | 3 |
 198 | | src/U3.sol | 2 |
 199 | | src/U4.sol | 3 |
 200 | | src/U5.sol | 6 |
 201 | | src/UncheckedCalls.sol | 24 |
 202 | | src/UncheckedReturn.sol | 33 |
 203 | | src/UncheckedSend.sol | 18 |
 204 | | src/UninitializedLocalVariables.sol | 62 |
 205 | | src/UninitializedStateVariable.sol | 29 |
 206 | | src/UnprotectedInitialize.sol | 44 |
 207 | | src/UnsafeERC721Mint.sol | 18 |
 208 | | src/UnusedError.sol | 23 |
 209 | | src/UnusedImport.sol | 10 |
 210 | | src/UnusedStateVariables.sol | 12 |
 211 | | src/UsingSelfdestruct.sol | 6 |
 212 | | src/VoidConstructor.sol | 21 |
 213 | | src/WeakRandomness.sol | 59 |
 214 | | src/WrongOrderOfLayout.sol | 13 |
 215 | | src/YulReturn.sol | 8 |
 216 | | src/ZeroAddressCheck.sol | 41 |
 217 | | src/auditor_mode/ExternalCalls.sol | 65 |
 218 | | src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol | 45 |
 219 | | src/cloc/AnotherHeavilyCommentedContract.sol | 32 |
 220 | | src/cloc/EmptyContractFile.sol | 0 |
 221 | | src/cloc/HeavilyCommentedContract.sol | 21 |
 222 | | src/control_flow/SimpleProgram.sol | 188 |
 223 | | src/eth2/DepositContract.sol | 96 |
 224 | | src/inheritance/ExtendedInheritance.sol | 18 |
 225 | | src/inheritance/IContractInheritance.sol | 4 |
 226 | | src/inheritance/InheritanceBase.sol | 12 |
 227 | | src/nested/1/Nested.sol | 10 |
 228 | | src/nested/2/Nested.sol | 7 |
 229 | | src/nested_mappings/LaterVersion.sol | 10 |
 230 | | src/nested_mappings/NestedMappings.sol | 10 |
 231 | | src/parent_chain/ParentChainContract.sol | 29 |
 232 | | src/reused_contract_name/ContractA.sol | 7 |
 233 | | src/reused_contract_name/ContractB.sol | 7 |
 234 | | src/router/ExternalCalls.sol | 30 |
 235 | | src/router/FallbackAndReceiveOverrides.sol | 17 |
 236 | | src/router/InternalCalls.sol | 135 |
 237 | | src/router/ModifierCalls.sol | 33 |
 238 | | src/router/VarOverridesFunction.sol | 20 |
 239 | | src/uniswap/UniswapV2Swapper.sol | 50 |
 240 | | src/uniswap/UniswapV3Swapper.sol | 150 |
 241 | | **Total** | **4727** |
 242 | 
 243 | 
 244 | ## Issue Summary
 245 | 
 246 | | Category | No. of Issues |
 247 | | --- | --- |
 248 | | High | 39 |
 249 | | Low | 48 |
 250 | 
 251 | 
 252 | # High Issues
 253 | 
 254 | ## H-1: `abi.encodePacked()` Hash Collision
 255 | 
 256 | abi.encodePacked() should not be used with dynamic types when passing the result to a hash function such as `keccak256()`. Use `abi.encode()` instead which will pad items to 32 bytes, preventing hash collisions: https://docs.soliditylang.org/en/v0.8.13/abi-spec.html#non-standard-packed-mode. (e.g. `abi.encodePacked(0x123,0x456)` => `0x123456` => `abi.encodePacked(0x1,0x23456)`, but `abi.encode(0x123,0x456)` => `0x0...1230...456`). Unless there is a compelling reason, `abi.encode` should be preferred. If there is only one argument to `abi.encodePacked()` it can often be cast to `bytes()` or `bytes32()` instead: https://ethereum.stackexchange.com/questions/30912/how-to-compare-strings-in-solidity#answer-82739. If all arguments are strings and or bytes, `bytes.concat()` should be used instead.
 257 | 
 258 | <details><summary>3 Found Instances</summary>
 259 | 
 260 | 
 261 | - Found in src/KeccakContract.sol [Line: 18](../tests/contract-playground/src/KeccakContract.sol#L18)
 262 | 
 263 | 	```solidity
 264 | 	        return keccak256(abi.encodePacked(a, b));
 265 | 	```
 266 | 
 267 | - Found in src/KeccakContract.sol [Line: 22](../tests/contract-playground/src/KeccakContract.sol#L22)
 268 | 
 269 | 	```solidity
 270 | 	        return keccak256(abi.encodePacked(a, b));
 271 | 	```
 272 | 
 273 | - Found in src/KeccakContract.sol [Line: 26](../tests/contract-playground/src/KeccakContract.sol#L26)
 274 | 
 275 | 	```solidity
 276 | 	        return keccak256(abi.encodePacked(a, b));
 277 | 	```
 278 | 
 279 | </details>
 280 | 
 281 | 
 282 | 
 283 | ## H-2: Arbitrary `from` Passed to `transferFrom`
 284 | 
 285 | Passing an arbitrary `from` address to `transferFrom` (or `safeTransferFrom`) can lead to loss of funds, because anyone can transfer tokens from the `from` address if an approval is made.
 286 | 
 287 | <details><summary>4 Found Instances</summary>
 288 | 
 289 | 
 290 | - Found in src/ArbitraryTransferFrom.sol [Line: 24](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L24)
 291 | 
 292 | 	```solidity
 293 | 	        s_token.safeTransferFrom(from, to, amount);
 294 | 	```
 295 | 
 296 | - Found in src/ArbitraryTransferFrom.sol [Line: 29](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L29)
 297 | 
 298 | 	```solidity
 299 | 	        SafeERC20.safeTransferFrom(s_token, from, to, amount);
 300 | 	```
 301 | 
 302 | - Found in src/DeprecatedOZFunctions.sol [Line: 17](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L17)
 303 | 
 304 | 	```solidity
 305 | 	        token.safeTransferFrom(from, to, value);
 306 | 	```
 307 | 
 308 | - Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)
 309 | 
 310 | 	```solidity
 311 | 	        token.transferFrom(from, to, value);
 312 | 	```
 313 | 
 314 | </details>
 315 | 
 316 | 
 317 | 
 318 | ## H-3: Unprotected initializer
 319 | 
 320 | Consider protecting the initializer functions with modifiers.
 321 | 
 322 | <details><summary>2 Found Instances</summary>
 323 | 
 324 | 
 325 | - Found in src/UnprotectedInitialize.sol [Line: 37](../tests/contract-playground/src/UnprotectedInitialize.sol#L37)
 326 | 
 327 | 	```solidity
 328 | 	    function initializeWithoutModifierOrRevert() external {
 329 | 	```
 330 | 
 331 | - Found in src/UnprotectedInitialize.sol [Line: 70](../tests/contract-playground/src/UnprotectedInitialize.sol#L70)
 332 | 
 333 | 	```solidity
 334 | 	    function initializeWithoutProtection() external {
 335 | 	```
 336 | 
 337 | </details>
 338 | 
 339 | 
 340 | 
 341 | ## H-4: Unsafe Casting of integers
 342 | 
 343 | Downcasting int/uints in Solidity can be unsafe due to the potential for data loss and unintended behavior.When downcasting a larger integer type to a smaller one (e.g., uint256 to uint128), the value may exceed the range of the target type,leading to truncation and loss of significant digits. Use OpenZeppelin's SafeCast library to safely downcast integers.
 344 | 
 345 | <details><summary>94 Found Instances</summary>
 346 | 
 347 | 
 348 | - Found in src/Casting.sol [Line: 42](../tests/contract-playground/src/Casting.sol#L42)
 349 | 
 350 | 	```solidity
 351 | 	        uint248 b = uint248(a);
 352 | 	```
 353 | 
 354 | - Found in src/Casting.sol [Line: 43](../tests/contract-playground/src/Casting.sol#L43)
 355 | 
 356 | 	```solidity
 357 | 	        uint240 c = uint240(b);
 358 | 	```
 359 | 
 360 | - Found in src/Casting.sol [Line: 44](../tests/contract-playground/src/Casting.sol#L44)
 361 | 
 362 | 	```solidity
 363 | 	        uint232 d = uint232(c);
 364 | 	```
 365 | 
 366 | - Found in src/Casting.sol [Line: 45](../tests/contract-playground/src/Casting.sol#L45)
 367 | 
 368 | 	```solidity
 369 | 	        uint224 e = uint224(d);
 370 | 	```
 371 | 
 372 | - Found in src/Casting.sol [Line: 46](../tests/contract-playground/src/Casting.sol#L46)
 373 | 
 374 | 	```solidity
 375 | 	        uint216 f = uint216(e);
 376 | 	```
 377 | 
 378 | - Found in src/Casting.sol [Line: 47](../tests/contract-playground/src/Casting.sol#L47)
 379 | 
 380 | 	```solidity
 381 | 	        uint208 g = uint208(f);
 382 | 	```
 383 | 
 384 | - Found in src/Casting.sol [Line: 48](../tests/contract-playground/src/Casting.sol#L48)
 385 | 
 386 | 	```solidity
 387 | 	        uint200 h = uint200(g);
 388 | 	```
 389 | 
 390 | - Found in src/Casting.sol [Line: 49](../tests/contract-playground/src/Casting.sol#L49)
 391 | 
 392 | 	```solidity
 393 | 	        uint192 i = uint192(h);
 394 | 	```
 395 | 
 396 | - Found in src/Casting.sol [Line: 50](../tests/contract-playground/src/Casting.sol#L50)
 397 | 
 398 | 	```solidity
 399 | 	        uint184 j = uint184(i);
 400 | 	```
 401 | 
 402 | - Found in src/Casting.sol [Line: 51](../tests/contract-playground/src/Casting.sol#L51)
 403 | 
 404 | 	```solidity
 405 | 	        uint176 k = uint176(j);
 406 | 	```
 407 | 
 408 | - Found in src/Casting.sol [Line: 52](../tests/contract-playground/src/Casting.sol#L52)
 409 | 
 410 | 	```solidity
 411 | 	        uint168 l = uint168(k);
 412 | 	```
 413 | 
 414 | - Found in src/Casting.sol [Line: 53](../tests/contract-playground/src/Casting.sol#L53)
 415 | 
 416 | 	```solidity
 417 | 	        uint160 m = uint160(l);
 418 | 	```
 419 | 
 420 | - Found in src/Casting.sol [Line: 54](../tests/contract-playground/src/Casting.sol#L54)
 421 | 
 422 | 	```solidity
 423 | 	        uint152 n = uint152(m);
 424 | 	```
 425 | 
 426 | - Found in src/Casting.sol [Line: 55](../tests/contract-playground/src/Casting.sol#L55)
 427 | 
 428 | 	```solidity
 429 | 	        uint144 o = uint144(n);
 430 | 	```
 431 | 
 432 | - Found in src/Casting.sol [Line: 56](../tests/contract-playground/src/Casting.sol#L56)
 433 | 
 434 | 	```solidity
 435 | 	        uint136 p = uint136(o);
 436 | 	```
 437 | 
 438 | - Found in src/Casting.sol [Line: 57](../tests/contract-playground/src/Casting.sol#L57)
 439 | 
 440 | 	```solidity
 441 | 	        uint128 q = uint128(p);
 442 | 	```
 443 | 
 444 | - Found in src/Casting.sol [Line: 58](../tests/contract-playground/src/Casting.sol#L58)
 445 | 
 446 | 	```solidity
 447 | 	        uint120 r = uint120(q);
 448 | 	```
 449 | 
 450 | - Found in src/Casting.sol [Line: 59](../tests/contract-playground/src/Casting.sol#L59)
 451 | 
 452 | 	```solidity
 453 | 	        uint112 s = uint112(r);
 454 | 	```
 455 | 
 456 | - Found in src/Casting.sol [Line: 60](../tests/contract-playground/src/Casting.sol#L60)
 457 | 
 458 | 	```solidity
 459 | 	        uint104 t = uint104(s);
 460 | 	```
 461 | 
 462 | - Found in src/Casting.sol [Line: 61](../tests/contract-playground/src/Casting.sol#L61)
 463 | 
 464 | 	```solidity
 465 | 	        uint96 u = uint96(t);
 466 | 	```
 467 | 
 468 | - Found in src/Casting.sol [Line: 62](../tests/contract-playground/src/Casting.sol#L62)
 469 | 
 470 | 	```solidity
 471 | 	        uint88 v = uint88(u);
 472 | 	```
 473 | 
 474 | - Found in src/Casting.sol [Line: 63](../tests/contract-playground/src/Casting.sol#L63)
 475 | 
 476 | 	```solidity
 477 | 	        uint80 w = uint80(v);
 478 | 	```
 479 | 
 480 | - Found in src/Casting.sol [Line: 64](../tests/contract-playground/src/Casting.sol#L64)
 481 | 
 482 | 	```solidity
 483 | 	        uint72 x = uint72(w);
 484 | 	```
 485 | 
 486 | - Found in src/Casting.sol [Line: 65](../tests/contract-playground/src/Casting.sol#L65)
 487 | 
 488 | 	```solidity
 489 | 	        uint64 y = uint64(x);
 490 | 	```
 491 | 
 492 | - Found in src/Casting.sol [Line: 66](../tests/contract-playground/src/Casting.sol#L66)
 493 | 
 494 | 	```solidity
 495 | 	        uint56 z = uint56(y);
 496 | 	```
 497 | 
 498 | - Found in src/Casting.sol [Line: 67](../tests/contract-playground/src/Casting.sol#L67)
 499 | 
 500 | 	```solidity
 501 | 	        uint48 aa = uint48(z);
 502 | 	```
 503 | 
 504 | - Found in src/Casting.sol [Line: 68](../tests/contract-playground/src/Casting.sol#L68)
 505 | 
 506 | 	```solidity
 507 | 	        uint40 ab = uint40(aa);
 508 | 	```
 509 | 
 510 | - Found in src/Casting.sol [Line: 69](../tests/contract-playground/src/Casting.sol#L69)
 511 | 
 512 | 	```solidity
 513 | 	        uint32 ac = uint32(ab);
 514 | 	```
 515 | 
 516 | - Found in src/Casting.sol [Line: 70](../tests/contract-playground/src/Casting.sol#L70)
 517 | 
 518 | 	```solidity
 519 | 	        uint24 ad = uint24(ac);
 520 | 	```
 521 | 
 522 | - Found in src/Casting.sol [Line: 71](../tests/contract-playground/src/Casting.sol#L71)
 523 | 
 524 | 	```solidity
 525 | 	        uint16 ae = uint16(ad);
 526 | 	```
 527 | 
 528 | - Found in src/Casting.sol [Line: 72](../tests/contract-playground/src/Casting.sol#L72)
 529 | 
 530 | 	```solidity
 531 | 	        uint8Value = uint8(ae);
 532 | 	```
 533 | 
 534 | - Found in src/Casting.sol [Line: 80](../tests/contract-playground/src/Casting.sol#L80)
 535 | 
 536 | 	```solidity
 537 | 	        int248 b = int248(a);
 538 | 	```
 539 | 
 540 | - Found in src/Casting.sol [Line: 81](../tests/contract-playground/src/Casting.sol#L81)
 541 | 
 542 | 	```solidity
 543 | 	        int240 c = int240(b);
 544 | 	```
 545 | 
 546 | - Found in src/Casting.sol [Line: 82](../tests/contract-playground/src/Casting.sol#L82)
 547 | 
 548 | 	```solidity
 549 | 	        int232 d = int232(c);
 550 | 	```
 551 | 
 552 | - Found in src/Casting.sol [Line: 83](../tests/contract-playground/src/Casting.sol#L83)
 553 | 
 554 | 	```solidity
 555 | 	        int224 e = int224(d);
 556 | 	```
 557 | 
 558 | - Found in src/Casting.sol [Line: 84](../tests/contract-playground/src/Casting.sol#L84)
 559 | 
 560 | 	```solidity
 561 | 	        int216 f = int216(e);
 562 | 	```
 563 | 
 564 | - Found in src/Casting.sol [Line: 85](../tests/contract-playground/src/Casting.sol#L85)
 565 | 
 566 | 	```solidity
 567 | 	        int208 g = int208(f);
 568 | 	```
 569 | 
 570 | - Found in src/Casting.sol [Line: 86](../tests/contract-playground/src/Casting.sol#L86)
 571 | 
 572 | 	```solidity
 573 | 	        int200 h = int200(g);
 574 | 	```
 575 | 
 576 | - Found in src/Casting.sol [Line: 87](../tests/contract-playground/src/Casting.sol#L87)
 577 | 
 578 | 	```solidity
 579 | 	        int192 i = int192(h);
 580 | 	```
 581 | 
 582 | - Found in src/Casting.sol [Line: 88](../tests/contract-playground/src/Casting.sol#L88)
 583 | 
 584 | 	```solidity
 585 | 	        int184 j = int184(i);
 586 | 	```
 587 | 
 588 | - Found in src/Casting.sol [Line: 89](../tests/contract-playground/src/Casting.sol#L89)
 589 | 
 590 | 	```solidity
 591 | 	        int176 k = int176(j);
 592 | 	```
 593 | 
 594 | - Found in src/Casting.sol [Line: 90](../tests/contract-playground/src/Casting.sol#L90)
 595 | 
 596 | 	```solidity
 597 | 	        int168 l = int168(k);
 598 | 	```
 599 | 
 600 | - Found in src/Casting.sol [Line: 91](../tests/contract-playground/src/Casting.sol#L91)
 601 | 
 602 | 	```solidity
 603 | 	        int160 m = int160(l);
 604 | 	```
 605 | 
 606 | - Found in src/Casting.sol [Line: 92](../tests/contract-playground/src/Casting.sol#L92)
 607 | 
 608 | 	```solidity
 609 | 	        int152 n = int152(m);
 610 | 	```
 611 | 
 612 | - Found in src/Casting.sol [Line: 93](../tests/contract-playground/src/Casting.sol#L93)
 613 | 
 614 | 	```solidity
 615 | 	        int144 o = int144(n);
 616 | 	```
 617 | 
 618 | - Found in src/Casting.sol [Line: 94](../tests/contract-playground/src/Casting.sol#L94)
 619 | 
 620 | 	```solidity
 621 | 	        int136 p = int136(o);
 622 | 	```
 623 | 
 624 | - Found in src/Casting.sol [Line: 95](../tests/contract-playground/src/Casting.sol#L95)
 625 | 
 626 | 	```solidity
 627 | 	        int128 q = int128(p);
 628 | 	```
 629 | 
 630 | - Found in src/Casting.sol [Line: 96](../tests/contract-playground/src/Casting.sol#L96)
 631 | 
 632 | 	```solidity
 633 | 	        int120 r = int120(q);
 634 | 	```
 635 | 
 636 | - Found in src/Casting.sol [Line: 97](../tests/contract-playground/src/Casting.sol#L97)
 637 | 
 638 | 	```solidity
 639 | 	        int112 s = int112(r);
 640 | 	```
 641 | 
 642 | - Found in src/Casting.sol [Line: 98](../tests/contract-playground/src/Casting.sol#L98)
 643 | 
 644 | 	```solidity
 645 | 	        int104 t = int104(s);
 646 | 	```
 647 | 
 648 | - Found in src/Casting.sol [Line: 99](../tests/contract-playground/src/Casting.sol#L99)
 649 | 
 650 | 	```solidity
 651 | 	        int96 u = int96(t);
 652 | 	```
 653 | 
 654 | - Found in src/Casting.sol [Line: 100](../tests/contract-playground/src/Casting.sol#L100)
 655 | 
 656 | 	```solidity
 657 | 	        int88 v = int88(u);
 658 | 	```
 659 | 
 660 | - Found in src/Casting.sol [Line: 101](../tests/contract-playground/src/Casting.sol#L101)
 661 | 
 662 | 	```solidity
 663 | 	        int80 w = int80(v);
 664 | 	```
 665 | 
 666 | - Found in src/Casting.sol [Line: 102](../tests/contract-playground/src/Casting.sol#L102)
 667 | 
 668 | 	```solidity
 669 | 	        int72 x = int72(w);
 670 | 	```
 671 | 
 672 | - Found in src/Casting.sol [Line: 103](../tests/contract-playground/src/Casting.sol#L103)
 673 | 
 674 | 	```solidity
 675 | 	        int64 y = int64(x);
 676 | 	```
 677 | 
 678 | - Found in src/Casting.sol [Line: 104](../tests/contract-playground/src/Casting.sol#L104)
 679 | 
 680 | 	```solidity
 681 | 	        int56 z = int56(y);
 682 | 	```
 683 | 
 684 | - Found in src/Casting.sol [Line: 105](../tests/contract-playground/src/Casting.sol#L105)
 685 | 
 686 | 	```solidity
 687 | 	        int48 aa = int48(z);
 688 | 	```
 689 | 
 690 | - Found in src/Casting.sol [Line: 106](../tests/contract-playground/src/Casting.sol#L106)
 691 | 
 692 | 	```solidity
 693 | 	        int40 ab = int40(aa);
 694 | 	```
 695 | 
 696 | - Found in src/Casting.sol [Line: 107](../tests/contract-playground/src/Casting.sol#L107)
 697 | 
 698 | 	```solidity
 699 | 	        int32 ac = int32(ab);
 700 | 	```
 701 | 
 702 | - Found in src/Casting.sol [Line: 108](../tests/contract-playground/src/Casting.sol#L108)
 703 | 
 704 | 	```solidity
 705 | 	        int24 ad = int24(ac);
 706 | 	```
 707 | 
 708 | - Found in src/Casting.sol [Line: 109](../tests/contract-playground/src/Casting.sol#L109)
 709 | 
 710 | 	```solidity
 711 | 	        int16 ae = int16(ad);
 712 | 	```
 713 | 
 714 | - Found in src/Casting.sol [Line: 110](../tests/contract-playground/src/Casting.sol#L110)
 715 | 
 716 | 	```solidity
 717 | 	        int8Value = int8(ae);
 718 | 	```
 719 | 
 720 | - Found in src/Casting.sol [Line: 118](../tests/contract-playground/src/Casting.sol#L118)
 721 | 
 722 | 	```solidity
 723 | 	        bytes31 b = bytes31(a);
 724 | 	```
 725 | 
 726 | - Found in src/Casting.sol [Line: 119](../tests/contract-playground/src/Casting.sol#L119)
 727 | 
 728 | 	```solidity
 729 | 	        bytes30 c = bytes30(b);
 730 | 	```
 731 | 
 732 | - Found in src/Casting.sol [Line: 120](../tests/contract-playground/src/Casting.sol#L120)
 733 | 
 734 | 	```solidity
 735 | 	        bytes29 d = bytes29(c);
 736 | 	```
 737 | 
 738 | - Found in src/Casting.sol [Line: 121](../tests/contract-playground/src/Casting.sol#L121)
 739 | 
 740 | 	```solidity
 741 | 	        bytes28 e = bytes28(d);
 742 | 	```
 743 | 
 744 | - Found in src/Casting.sol [Line: 122](../tests/contract-playground/src/Casting.sol#L122)
 745 | 
 746 | 	```solidity
 747 | 	        bytes27 f = bytes27(e);
 748 | 	```
 749 | 
 750 | - Found in src/Casting.sol [Line: 123](../tests/contract-playground/src/Casting.sol#L123)
 751 | 
 752 | 	```solidity
 753 | 	        bytes26 g = bytes26(f);
 754 | 	```
 755 | 
 756 | - Found in src/Casting.sol [Line: 124](../tests/contract-playground/src/Casting.sol#L124)
 757 | 
 758 | 	```solidity
 759 | 	        bytes25 h = bytes25(g);
 760 | 	```
 761 | 
 762 | - Found in src/Casting.sol [Line: 125](../tests/contract-playground/src/Casting.sol#L125)
 763 | 
 764 | 	```solidity
 765 | 	        bytes24 i = bytes24(h);
 766 | 	```
 767 | 
 768 | - Found in src/Casting.sol [Line: 126](../tests/contract-playground/src/Casting.sol#L126)
 769 | 
 770 | 	```solidity
 771 | 	        bytes23 j = bytes23(i);
 772 | 	```
 773 | 
 774 | - Found in src/Casting.sol [Line: 127](../tests/contract-playground/src/Casting.sol#L127)
 775 | 
 776 | 	```solidity
 777 | 	        bytes22 k = bytes22(j);
 778 | 	```
 779 | 
 780 | - Found in src/Casting.sol [Line: 128](../tests/contract-playground/src/Casting.sol#L128)
 781 | 
 782 | 	```solidity
 783 | 	        bytes21 l = bytes21(k);
 784 | 	```
 785 | 
 786 | - Found in src/Casting.sol [Line: 129](../tests/contract-playground/src/Casting.sol#L129)
 787 | 
 788 | 	```solidity
 789 | 	        bytes20 m = bytes20(l);
 790 | 	```
 791 | 
 792 | - Found in src/Casting.sol [Line: 130](../tests/contract-playground/src/Casting.sol#L130)
 793 | 
 794 | 	```solidity
 795 | 	        bytes19 n = bytes19(m);
 796 | 	```
 797 | 
 798 | - Found in src/Casting.sol [Line: 131](../tests/contract-playground/src/Casting.sol#L131)
 799 | 
 800 | 	```solidity
 801 | 	        bytes18 o = bytes18(n);
 802 | 	```
 803 | 
 804 | - Found in src/Casting.sol [Line: 132](../tests/contract-playground/src/Casting.sol#L132)
 805 | 
 806 | 	```solidity
 807 | 	        bytes17 p = bytes17(o);
 808 | 	```
 809 | 
 810 | - Found in src/Casting.sol [Line: 133](../tests/contract-playground/src/Casting.sol#L133)
 811 | 
 812 | 	```solidity
 813 | 	        bytes16 q = bytes16(p);
 814 | 	```
 815 | 
 816 | - Found in src/Casting.sol [Line: 134](../tests/contract-playground/src/Casting.sol#L134)
 817 | 
 818 | 	```solidity
 819 | 	        bytes15 r = bytes15(q);
 820 | 	```
 821 | 
 822 | - Found in src/Casting.sol [Line: 135](../tests/contract-playground/src/Casting.sol#L135)
 823 | 
 824 | 	```solidity
 825 | 	        bytes14 s = bytes14(r);
 826 | 	```
 827 | 
 828 | - Found in src/Casting.sol [Line: 136](../tests/contract-playground/src/Casting.sol#L136)
 829 | 
 830 | 	```solidity
 831 | 	        bytes13 t = bytes13(s);
 832 | 	```
 833 | 
 834 | - Found in src/Casting.sol [Line: 137](../tests/contract-playground/src/Casting.sol#L137)
 835 | 
 836 | 	```solidity
 837 | 	        bytes12 u = bytes12(t);
 838 | 	```
 839 | 
 840 | - Found in src/Casting.sol [Line: 138](../tests/contract-playground/src/Casting.sol#L138)
 841 | 
 842 | 	```solidity
 843 | 	        bytes11 v = bytes11(u);
 844 | 	```
 845 | 
 846 | - Found in src/Casting.sol [Line: 139](../tests/contract-playground/src/Casting.sol#L139)
 847 | 
 848 | 	```solidity
 849 | 	        bytes10 w = bytes10(v);
 850 | 	```
 851 | 
 852 | - Found in src/Casting.sol [Line: 140](../tests/contract-playground/src/Casting.sol#L140)
 853 | 
 854 | 	```solidity
 855 | 	        bytes9 x = bytes9(w);
 856 | 	```
 857 | 
 858 | - Found in src/Casting.sol [Line: 141](../tests/contract-playground/src/Casting.sol#L141)
 859 | 
 860 | 	```solidity
 861 | 	        bytes8 y = bytes8(x);
 862 | 	```
 863 | 
 864 | - Found in src/Casting.sol [Line: 142](../tests/contract-playground/src/Casting.sol#L142)
 865 | 
 866 | 	```solidity
 867 | 	        bytes7 z = bytes7(y);
 868 | 	```
 869 | 
 870 | - Found in src/Casting.sol [Line: 143](../tests/contract-playground/src/Casting.sol#L143)
 871 | 
 872 | 	```solidity
 873 | 	        bytes6 aa = bytes6(z);
 874 | 	```
 875 | 
 876 | - Found in src/Casting.sol [Line: 144](../tests/contract-playground/src/Casting.sol#L144)
 877 | 
 878 | 	```solidity
 879 | 	        bytes5 ab = bytes5(aa);
 880 | 	```
 881 | 
 882 | - Found in src/Casting.sol [Line: 145](../tests/contract-playground/src/Casting.sol#L145)
 883 | 
 884 | 	```solidity
 885 | 	        bytes4 ac = bytes4(ab);
 886 | 	```
 887 | 
 888 | - Found in src/Casting.sol [Line: 146](../tests/contract-playground/src/Casting.sol#L146)
 889 | 
 890 | 	```solidity
 891 | 	        bytes3 ad = bytes3(ac);
 892 | 	```
 893 | 
 894 | - Found in src/Casting.sol [Line: 147](../tests/contract-playground/src/Casting.sol#L147)
 895 | 
 896 | 	```solidity
 897 | 	        bytes2 ae = bytes2(ad);
 898 | 	```
 899 | 
 900 | - Found in src/Casting.sol [Line: 148](../tests/contract-playground/src/Casting.sol#L148)
 901 | 
 902 | 	```solidity
 903 | 	        bytes1Value = bytes1(ae);
 904 | 	```
 905 | 
 906 | - Found in src/Casting.sol [Line: 155](../tests/contract-playground/src/Casting.sol#L155)
 907 | 
 908 | 	```solidity
 909 | 	            return int128(result);
 910 | 	```
 911 | 
 912 | </details>
 913 | 
 914 | 
 915 | 
 916 | ## H-5: EnumerableSet.remove Corrupts Order
 917 | 
 918 | If the order of an EnumerableSet is required, removing items in a loop using `at` and `remove` corrupts this order.
 919 | Consider using a different data structure or removing items by collecting them during the loop, then removing after the loop.
 920 | 
 921 | <details><summary>5 Found Instances</summary>
 922 | 
 923 | 
 924 | - Found in src/EnumerableSetIteration.sol [Line: 31](../tests/contract-playground/src/EnumerableSetIteration.sol#L31)
 925 | 
 926 | 	```solidity
 927 | 	            bytes32Set.remove(thisBytes32);
 928 | 	```
 929 | 
 930 | - Found in src/EnumerableSetIteration.sol [Line: 40](../tests/contract-playground/src/EnumerableSetIteration.sol#L40)
 931 | 
 932 | 	```solidity
 933 | 	            bytes32Set.remove(thisBytes32);
 934 | 	```
 935 | 
 936 | - Found in src/EnumerableSetIteration.sol [Line: 50](../tests/contract-playground/src/EnumerableSetIteration.sol#L50)
 937 | 
 938 | 	```solidity
 939 | 	            bytes32Set.remove(thisBytes32);
 940 | 	```
 941 | 
 942 | - Found in src/EnumerableSetIteration.sol [Line: 59](../tests/contract-playground/src/EnumerableSetIteration.sol#L59)
 943 | 
 944 | 	```solidity
 945 | 	            addressSet.remove(thisAddress);
 946 | 	```
 947 | 
 948 | - Found in src/EnumerableSetIteration.sol [Line: 67](../tests/contract-playground/src/EnumerableSetIteration.sol#L67)
 949 | 
 950 | 	```solidity
 951 | 	            uintSet.remove(thisUint);
 952 | 	```
 953 | 
 954 | </details>
 955 | 
 956 | 
 957 | 
 958 | ## H-6: Experimental ABI Encoder
 959 | 
 960 | Experimental encoders should not be used in production. There are multiple known compiler bugs that are caused by the experimental encoder. Upgrade your solidity version to remove the need for experimental features.
 961 | 
 962 | <details><summary>1 Found Instances</summary>
 963 | 
 964 | 
 965 | - Found in src/ExperimentalEncoder.sol [Line: 2](../tests/contract-playground/src/ExperimentalEncoder.sol#L2)
 966 | 
 967 | 	```solidity
 968 | 	pragma experimental ABIEncoderV2;
 969 | 	```
 970 | 
 971 | </details>
 972 | 
 973 | 
 974 | 
 975 | ## H-7: Incorrect Assembly Shift Parameter Order
 976 | 
 977 | Example: `shl(shifted, 4)` will shift the right constant `4` by `a` bits. The correct order is `shl(4, shifted)`.
 978 | 
 979 | <details><summary>2 Found Instances</summary>
 980 | 
 981 | 
 982 | - Found in src/IncorrectShift.sol [Line: 7](../tests/contract-playground/src/IncorrectShift.sol#L7)
 983 | 
 984 | 	```solidity
 985 | 	            shifted := shr(shifted, 4) // BAD
 986 | 	```
 987 | 
 988 | - Found in src/IncorrectShift.sol [Line: 8](../tests/contract-playground/src/IncorrectShift.sol#L8)
 989 | 
 990 | 	```solidity
 991 | 	            shifted := shl(shifted, 4) // BAD
 992 | 	```
 993 | 
 994 | </details>
 995 | 
 996 | 
 997 | 
 998 | ## H-8: Storage Array Edited with Memory
 999 | 
1000 | Storage reference is passed to a function with a memory parameter. This will not update the storage variable as expected. Consider using storage parameters instead.
1001 | 
1002 | <details><summary>1 Found Instances</summary>
1003 | 
1004 | 
1005 | - Found in src/StorageParameters.sol [Line: 11](../tests/contract-playground/src/StorageParameters.sol#L11)
1006 | 
1007 | 	```solidity
1008 | 	        editMemory(storageArray); // BAD LINE
1009 | 	```
1010 | 
1011 | </details>
1012 | 
1013 | 
1014 | 
1015 | ## H-9: Contract Has Multiple Constructors
1016 | 
1017 | In some versions of Solidity, contracts compile with multiple constructors. The first constructor takes precedence. This can lead to unexpected behavior.
1018 | 
1019 | <details><summary>1 Found Instances</summary>
1020 | 
1021 | 
1022 | - Found in src/MultipleConstructorSchemes.sol [Line: 3](../tests/contract-playground/src/MultipleConstructorSchemes.sol#L3)
1023 | 
1024 | 	```solidity
1025 | 	contract MultipleConstructorSchemes {
1026 | 	```
1027 | 
1028 | </details>
1029 | 
1030 | 
1031 | 
1032 | ## H-10: Contract Name Reused in Different Files
1033 | 
1034 | When compiling contracts with certain development frameworks (for example: Truffle), having contracts with the same name across different files can lead to one being overwritten.
1035 | 
1036 | <details><summary>26 Found Instances</summary>
1037 | 
1038 | 
1039 | - Found in src/EmitAfterExternalCall.sol [Line: 4](../tests/contract-playground/src/EmitAfterExternalCall.sol#L4)
1040 | 
1041 | 	```solidity
1042 | 	contract MaliciousActor {
1043 | 	```
1044 | 
1045 | - Found in src/StateChangeAfterExternalCall.sol [Line: 4](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L4)
1046 | 
1047 | 	```solidity
1048 | 	contract MaliciousActor {
1049 | 	```
1050 | 
1051 | - Found in src/Trump.sol [Line: 18](../tests/contract-playground/src/Trump.sol#L18)
1052 | 
1053 | 	```solidity
1054 | 	abstract contract Context {
1055 | 	```
1056 | 
1057 | - Found in src/Trump.sol [Line: 24](../tests/contract-playground/src/Trump.sol#L24)
1058 | 
1059 | 	```solidity
1060 | 	interface IERC20 {
1061 | 	```
1062 | 
1063 | - Found in src/Trump.sol [Line: 73](../tests/contract-playground/src/Trump.sol#L73)
1064 | 
1065 | 	```solidity
1066 | 	contract Ownable is Context {
1067 | 	```
1068 | 
1069 | - Found in src/Trump.sol [Line: 103](../tests/contract-playground/src/Trump.sol#L103)
1070 | 
1071 | 	```solidity
1072 | 	interface IUniswapV2Router02 {
1073 | 	```
1074 | 
1075 | - Found in src/ZeroAddressCheck.sol [Line: 4](../tests/contract-playground/src/ZeroAddressCheck.sol#L4)
1076 | 
1077 | 	```solidity
1078 | 	interface IERC20 {
1079 | 	```
1080 | 
1081 | - Found in src/eth2/DepositContract.sol [Line: 44](../tests/contract-playground/src/eth2/DepositContract.sol#L44)
1082 | 
1083 | 	```solidity
1084 | 	interface ERC165 {
1085 | 	```
1086 | 
1087 | - Found in src/nested/1/Nested.sol [Line: 7](../tests/contract-playground/src/nested/1/Nested.sol#L7)
1088 | 
1089 | 	```solidity
1090 | 	contract Nested {
1091 | 	```
1092 | 
1093 | - Found in src/nested/2/Nested.sol [Line: 7](../tests/contract-playground/src/nested/2/Nested.sol#L7)
1094 | 
1095 | 	```solidity
1096 | 	contract Nested {
1097 | 	```
1098 | 
1099 | - Found in src/reused_contract_name/ContractA.sol [Line: 4](../tests/contract-playground/src/reused_contract_name/ContractA.sol#L4)
1100 | 
1101 | 	```solidity
1102 | 	contract ReusedName {
1103 | 	```
1104 | 
1105 | - Found in src/reused_contract_name/ContractB.sol [Line: 4](../tests/contract-playground/src/reused_contract_name/ContractB.sol#L4)
1106 | 
1107 | 	```solidity
1108 | 	contract ReusedName {
1109 | 	```
1110 | 
1111 | - Found in src/router/ExternalCalls.sol [Line: 4](../tests/contract-playground/src/router/ExternalCalls.sol#L4)
1112 | 
1113 | 	```solidity
1114 | 	interface A {
1115 | 	```
1116 | 
1117 | - Found in src/router/ExternalCalls.sol [Line: 8](../tests/contract-playground/src/router/ExternalCalls.sol#L8)
1118 | 
1119 | 	```solidity
1120 | 	contract B is A {
1121 | 	```
1122 | 
1123 | - Found in src/router/ExternalCalls.sol [Line: 12](../tests/contract-playground/src/router/ExternalCalls.sol#L12)
1124 | 
1125 | 	```solidity
1126 | 	contract E is A {
1127 | 	```
1128 | 
1129 | - Found in src/router/ExternalCalls.sol [Line: 31](../tests/contract-playground/src/router/ExternalCalls.sol#L31)
1130 | 
1131 | 	```solidity
1132 | 	abstract contract C {
1133 | 	```
1134 | 
1135 | - Found in src/router/ExternalCalls.sol [Line: 35](../tests/contract-playground/src/router/ExternalCalls.sol#L35)
1136 | 
1137 | 	```solidity
1138 | 	contract D is C {
1139 | 	```
1140 | 
1141 | - Found in src/router/ModifierCalls.sol [Line: 4](../tests/contract-playground/src/router/ModifierCalls.sol#L4)
1142 | 
1143 | 	```solidity
1144 | 	abstract contract A {
1145 | 	```
1146 | 
1147 | - Found in src/router/ModifierCalls.sol [Line: 12](../tests/contract-playground/src/router/ModifierCalls.sol#L12)
1148 | 
1149 | 	```solidity
1150 | 	contract B is A {
1151 | 	```
1152 | 
1153 | - Found in src/router/ModifierCalls.sol [Line: 28](../tests/contract-playground/src/router/ModifierCalls.sol#L28)
1154 | 
1155 | 	```solidity
1156 | 	contract C is B {
1157 | 	```
1158 | 
1159 | - Found in src/router/ModifierCalls.sol [Line: 41](../tests/contract-playground/src/router/ModifierCalls.sol#L41)
1160 | 
1161 | 	```solidity
1162 | 	library D {
1163 | 	```
1164 | 
1165 | - Found in src/router/VarOverridesFunction.sol [Line: 4](../tests/contract-playground/src/router/VarOverridesFunction.sol#L4)
1166 | 
1167 | 	```solidity
1168 | 	contract A {
1169 | 	```
1170 | 
1171 | - Found in src/router/VarOverridesFunction.sol [Line: 9](../tests/contract-playground/src/router/VarOverridesFunction.sol#L9)
1172 | 
1173 | 	```solidity
1174 | 	contract B is A {
1175 | 	```
1176 | 
1177 | - Found in src/router/VarOverridesFunction.sol [Line: 13](../tests/contract-playground/src/router/VarOverridesFunction.sol#L13)
1178 | 
1179 | 	```solidity
1180 | 	contract C is A {
1181 | 	```
1182 | 
1183 | - Found in src/router/VarOverridesFunction.sol [Line: 17](../tests/contract-playground/src/router/VarOverridesFunction.sol#L17)
1184 | 
1185 | 	```solidity
1186 | 	contract D is A {
1187 | 	```
1188 | 
1189 | - Found in src/router/VarOverridesFunction.sol [Line: 21](../tests/contract-playground/src/router/VarOverridesFunction.sol#L21)
1190 | 
1191 | 	```solidity
1192 | 	contract E is A {
1193 | 	```
1194 | 
1195 | </details>
1196 | 
1197 | 
1198 | 
1199 | ## H-11: Nested Structs in Mappings pre-0.5.0
1200 | 
1201 | Prior to updates in Solidity 0.5.0, public mappings with nested structs compiled, but produced incorrect values. Refrain from using these, or update to a more recent version of Solidity.
1202 | 
1203 | <details><summary>1 Found Instances</summary>
1204 | 
1205 | 
1206 | - Found in src/nested_mappings/NestedMappings.sol [Line: 17](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L17)
1207 | 
1208 | 	```solidity
1209 | 	    mapping(uint256 => structMain) public s_mapOfNestedStructs;
1210 | 	```
1211 | 
1212 | </details>
1213 | 
1214 | 
1215 | 
1216 | ## H-12: `selfdestruct` is Deprecated
1217 | 
1218 | Remove the `selfdestruct` instruction from the code.
1219 | 
1220 | <details><summary>1 Found Instances</summary>
1221 | 
1222 | 
1223 | - Found in src/UsingSelfdestruct.sol [Line: 7](../tests/contract-playground/src/UsingSelfdestruct.sol#L7)
1224 | 
1225 | 	```solidity
1226 | 	        selfdestruct(payable(sink));
1227 | 	```
1228 | 
1229 | </details>
1230 | 
1231 | 
1232 | 
1233 | ## H-13: Direct assignment of array length
1234 | 
1235 | If the length of a dynamic array (storage variable) is directly assigned to, it may allow access to other storage slots by tweaking it's value. This practice has been deprecated in newer Solidity versions
1236 | 
1237 | <details><summary>5 Found Instances</summary>
1238 | 
1239 | 
1240 | - Found in src/DynamicArrayLengthAssignment.sol [Line: 13](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L13)
1241 | 
1242 | 	```solidity
1243 | 			myArray.length = 200;
1244 | 	```
1245 | 
1246 | - Found in src/DynamicArrayLengthAssignment.sol [Line: 14](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L14)
1247 | 
1248 | 	```solidity
1249 | 	        myArray2[7].length = 200;
1250 | 	```
1251 | 
1252 | - Found in src/DynamicArrayLengthAssignment.sol [Line: 15](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L15)
1253 | 
1254 | 	```solidity
1255 | 	        myArray3[bytes("blah")][5].length = 100;
1256 | 	```
1257 | 
1258 | - Found in src/DynamicArrayLengthAssignment.sol [Line: 16](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L16)
1259 | 
1260 | 	```solidity
1261 | 	        myArray4.length = 900;
1262 | 	```
1263 | 
1264 | - Found in src/DynamicArrayLengthAssignment.sol [Line: 17](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L17)
1265 | 
1266 | 	```solidity
1267 | 	        myArray.length += 200;
1268 | 	```
1269 | 
1270 | </details>
1271 | 
1272 | 
1273 | 
1274 | ## H-14: Incorrect use of caret operator
1275 | 
1276 | The caret operator is usually mistakenly thought of as an exponentiation operator but actually, it's a bitwise xor operator.
1277 | 
1278 | <details><summary>5 Found Instances</summary>
1279 | 
1280 | 
1281 | - Found in src/IncorrectCaretOperator.sol [Line: 16](../tests/contract-playground/src/IncorrectCaretOperator.sol#L16)
1282 | 
1283 | 	```solidity
1284 | 	        uint256 x = 3^40 - 1;
1285 | 	```
1286 | 
1287 | - Found in src/IncorrectCaretOperator.sol [Line: 17](../tests/contract-playground/src/IncorrectCaretOperator.sol#L17)
1288 | 
1289 | 	```solidity
1290 | 	        uint256 z = s_second^89 + 13;
1291 | 	```
1292 | 
1293 | - Found in src/IncorrectCaretOperator.sol [Line: 18](../tests/contract-playground/src/IncorrectCaretOperator.sol#L18)
1294 | 
1295 | 	```solidity
1296 | 	        uint256 w = s_second^s_first + 13; 
1297 | 	```
1298 | 
1299 | - Found in src/IncorrectCaretOperator.sol [Line: 19](../tests/contract-playground/src/IncorrectCaretOperator.sol#L19)
1300 | 
1301 | 	```solidity
1302 | 	        uint256 y = s_first ^ 100; // s_first is not a constant but, 100 is.
1303 | 	```
1304 | 
1305 | - Found in src/IncorrectCaretOperator.sol [Line: 20](../tests/contract-playground/src/IncorrectCaretOperator.sol#L20)
1306 | 
1307 | 	```solidity
1308 | 	        uint256 p = s_third ^ 20;
1309 | 	```
1310 | 
1311 | </details>
1312 | 
1313 | 
1314 | 
1315 | ## H-15: Yul block contains `return`
1316 | 
1317 | This causes the transaction execution to halt, and nothing after that call will execute including code following the assembly block.
1318 | 
1319 | <details><summary>1 Found Instances</summary>
1320 | 
1321 | 
1322 | - Found in src/YulReturn.sol [Line: 8](../tests/contract-playground/src/YulReturn.sol#L8)
1323 | 
1324 | 	```solidity
1325 | 	            return(0, 0)
1326 | 	```
1327 | 
1328 | </details>
1329 | 
1330 | 
1331 | 
1332 | ## H-16: Shadowed State Variable
1333 | 
1334 | This vulnerability arises when a derived contract unintentionally shadows a state variable from a parent contract by declaring a variable with the same name. This can be misleading. To prevent this, ensure variable names are unique across the inheritance hierarchy or use proper visibility and scope controls.
1335 | 
1336 | <details><summary>1 Found Instances</summary>
1337 | 
1338 | 
1339 | - Found in src/StateShadowing.sol [Line: 15](../tests/contract-playground/src/StateShadowing.sol#L15)
1340 | 
1341 | 	```solidity
1342 | 	    address owner;
1343 | 	```
1344 | 
1345 | </details>
1346 | 
1347 | 
1348 | 
1349 | ## H-17: Unchecked `bool success` value for ETH send
1350 | 
1351 | The call `address(payable?).send(address)` may fail because of reasons like out-of-gas, invalid recipient address or revert from the recipient, but not revert the transaction. Therefore, the boolean returned by this function call must be checked to be `true` in order to verify that the transaction was successful.
1352 | 
1353 | <details><summary>1 Found Instances</summary>
1354 | 
1355 | 
1356 | - Found in src/UncheckedSend.sol [Line: 24](../tests/contract-playground/src/UncheckedSend.sol#L24)
1357 | 
1358 | 	```solidity
1359 | 	        recipient.send(amount); // parent of Send FunctionCall is Block (return value is unused)
1360 | 	```
1361 | 
1362 | </details>
1363 | 
1364 | 
1365 | 
1366 | ## H-18: Misused boolean with logical operators
1367 | 
1368 | The patterns `if (… || true)` and `if (.. && false)` will always evaluate to true and false respectively.
1369 | 
1370 | <details><summary>10 Found Instances</summary>
1371 | 
1372 | 
1373 | - Found in src/MisusedBoolean.sol [Line: 12](../tests/contract-playground/src/MisusedBoolean.sol#L12)
1374 | 
1375 | 	```solidity
1376 | 	        if (isEven(num) || true) {
1377 | 	```
1378 | 
1379 | - Found in src/MisusedBoolean.sol [Line: 19](../tests/contract-playground/src/MisusedBoolean.sol#L19)
1380 | 
1381 | 	```solidity
1382 | 	        if (isEven(num) && false) {
1383 | 	```
1384 | 
1385 | - Found in src/MisusedBoolean.sol [Line: 26](../tests/contract-playground/src/MisusedBoolean.sol#L26)
1386 | 
1387 | 	```solidity
1388 | 	        if (false && isEven(num)) {
1389 | 	```
1390 | 
1391 | - Found in src/MisusedBoolean.sol [Line: 33](../tests/contract-playground/src/MisusedBoolean.sol#L33)
1392 | 
1393 | 	```solidity
1394 | 	        if (true || isEven(num)) {
1395 | 	```
1396 | 
1397 | - Found in src/MisusedBoolean.sol [Line: 40](../tests/contract-playground/src/MisusedBoolean.sol#L40)
1398 | 
1399 | 	```solidity
1400 | 	        if (true) {
1401 | 	```
1402 | 
1403 | - Found in src/MisusedBoolean.sol [Line: 47](../tests/contract-playground/src/MisusedBoolean.sol#L47)
1404 | 
1405 | 	```solidity
1406 | 	        if (false) {
1407 | 	```
1408 | 
1409 | - Found in src/MisusedBoolean.sol [Line: 54](../tests/contract-playground/src/MisusedBoolean.sol#L54)
1410 | 
1411 | 	```solidity
1412 | 	        if (!false) {
1413 | 	```
1414 | 
1415 | - Found in src/MisusedBoolean.sol [Line: 61](../tests/contract-playground/src/MisusedBoolean.sol#L61)
1416 | 
1417 | 	```solidity
1418 | 	        if (isEven(num) && !false) {
1419 | 	```
1420 | 
1421 | - Found in src/MisusedBoolean.sol [Line: 68](../tests/contract-playground/src/MisusedBoolean.sol#L68)
1422 | 
1423 | 	```solidity
1424 | 	        if (isEven(num) && NO) {
1425 | 	```
1426 | 
1427 | - Found in src/MisusedBoolean.sol [Line: 75](../tests/contract-playground/src/MisusedBoolean.sol#L75)
1428 | 
1429 | 	```solidity
1430 | 	        if (isEven(num) && !NO) {
1431 | 	```
1432 | 
1433 | </details>
1434 | 
1435 | 
1436 | 
1437 | ## H-19: ETH transferred without address checks
1438 | 
1439 | Consider introducing checks for `msg.sender` to ensure the recipient of the money is as intended.
1440 | 
1441 | <details><summary>27 Found Instances</summary>
1442 | 
1443 | 
1444 | - Found in src/ArbitraryTransferFrom.sol [Line: 23](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L23)
1445 | 
1446 | 	```solidity
1447 | 	    function bad2(address from, address to, uint256 amount) external {
1448 | 	```
1449 | 
1450 | - Found in src/ArbitraryTransferFrom.sol [Line: 28](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L28)
1451 | 
1452 | 	```solidity
1453 | 	    function bad3(address from, address to, uint256 amount) external {
1454 | 	```
1455 | 
1456 | - Found in src/ArbitraryTransferFrom.sol [Line: 37](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L37)
1457 | 
1458 | 	```solidity
1459 | 	    function good2(address to, uint256 amount) external {
1460 | 	```
1461 | 
1462 | - Found in src/ArbitraryTransferFrom.sol [Line: 41](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L41)
1463 | 
1464 | 	```solidity
1465 | 	    function good3(address to, uint256 amount) external {
1466 | 	```
1467 | 
1468 | - Found in src/ArbitraryTransferFrom.sol [Line: 45](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L45)
1469 | 
1470 | 	```solidity
1471 | 	    function good4(address to, uint256 amount) external {
1472 | 	```
1473 | 
1474 | - Found in src/ArbitraryTransferFrom.sol [Line: 49](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L49)
1475 | 
1476 | 	```solidity
1477 | 	    function good5(address from, address to, uint256 amount) external {
1478 | 	```
1479 | 
1480 | - Found in src/CallGraphTests.sol [Line: 38](../tests/contract-playground/src/CallGraphTests.sol#L38)
1481 | 
1482 | 	```solidity
1483 | 	    function enterTenthFloor2(address x) external passThroughNinthFloor2(x) {
1484 | 	```
1485 | 
1486 | - Found in src/ContractLocksEther.sol [Line: 94](../tests/contract-playground/src/ContractLocksEther.sol#L94)
1487 | 
1488 | 	```solidity
1489 | 	    function takeEthBack(uint256 amount) external {
1490 | 	```
1491 | 
1492 | - Found in src/ContractLocksEther.sol [Line: 131](../tests/contract-playground/src/ContractLocksEther.sol#L131)
1493 | 
1494 | 	```solidity
1495 | 	    function takeEthBack(uint256 amount) external {
1496 | 	```
1497 | 
1498 | - Found in src/ContractLocksEther.sol [Line: 167](../tests/contract-playground/src/ContractLocksEther.sol#L167)
1499 | 
1500 | 	```solidity
1501 | 	    function takeEthBack(uint256 amount) external {
1502 | 	```
1503 | 
1504 | - Found in src/ContractLocksEther.sol [Line: 194](../tests/contract-playground/src/ContractLocksEther.sol#L194)
1505 | 
1506 | 	```solidity
1507 | 	    function takeEthBack(uint256 amount) external {
1508 | 	```
1509 | 
1510 | - Found in src/DeprecatedOZFunctions.sol [Line: 16](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L16)
1511 | 
1512 | 	```solidity
1513 | 	    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) external {
1514 | 	```
1515 | 
1516 | - Found in src/DeprecatedOZFunctions.sol [Line: 26](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L26)
1517 | 
1518 | 	```solidity
1519 | 	    function safeApprove(IERC20 token, address spender, uint256 value) external {
1520 | 	```
1521 | 
1522 | - Found in src/ExternalCalls.sol [Line: 67](../tests/contract-playground/src/ExternalCalls.sol#L67)
1523 | 
1524 | 	```solidity
1525 | 	    function ext9() external {
1526 | 	```
1527 | 
1528 | - Found in src/OutOfOrderRetryable.sol [Line: 167](../tests/contract-playground/src/OutOfOrderRetryable.sol#L167)
1529 | 
1530 | 	```solidity
1531 | 	    function claim_rewards() public {
1532 | 	```
1533 | 
1534 | - Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)
1535 | 
1536 | 	```solidity
1537 | 	    function unstake() public {
1538 | 	```
1539 | 
1540 | - Found in src/SendEtherNoChecks.sol [Line: 53](../tests/contract-playground/src/SendEtherNoChecks.sol#L53)
1541 | 
1542 | 	```solidity
1543 | 	    function func1(address x) external mod1(x) {
1544 | 	```
1545 | 
1546 | - Found in src/SendEtherNoChecks.sol [Line: 77](../tests/contract-playground/src/SendEtherNoChecks.sol#L77)
1547 | 
1548 | 	```solidity
1549 | 	    function func1(address x) external mod1(x) {
1550 | 	```
1551 | 
1552 | - Found in src/SendEtherNoChecks.sol [Line: 99](../tests/contract-playground/src/SendEtherNoChecks.sol#L99)
1553 | 
1554 | 	```solidity
1555 | 	    function func1(address x) external mod1(x) {
1556 | 	```
1557 | 
1558 | - Found in src/Trump.sol [Line: 321](../tests/contract-playground/src/Trump.sol#L321)
1559 | 
1560 | 	```solidity
1561 | 	    function manualSend() external {
1562 | 	```
1563 | 
1564 | - Found in src/UncheckedCalls.sol [Line: 6](../tests/contract-playground/src/UncheckedCalls.sol#L6)
1565 | 
1566 | 	```solidity
1567 | 	    function sendEther(address payable recipient) external payable {
1568 | 	```
1569 | 
1570 | - Found in src/UncheckedCalls.sol [Line: 22](../tests/contract-playground/src/UncheckedCalls.sol#L22)
1571 | 
1572 | 	```solidity
1573 | 	    function testMultipleUncheckedCalls(address target) external payable {
1574 | 	```
1575 | 
1576 | - Found in src/UncheckedSend.sol [Line: 6](../tests/contract-playground/src/UncheckedSend.sol#L6)
1577 | 
1578 | 	```solidity
1579 | 	    function send1(address payable recipient, uint256 amount) external {
1580 | 	```
1581 | 
1582 | - Found in src/UncheckedSend.sol [Line: 12](../tests/contract-playground/src/UncheckedSend.sol#L12)
1583 | 
1584 | 	```solidity
1585 | 	    function send2(address payable recipient, uint256 amount) external {
1586 | 	```
1587 | 
1588 | - Found in src/UncheckedSend.sol [Line: 17](../tests/contract-playground/src/UncheckedSend.sol#L17)
1589 | 
1590 | 	```solidity
1591 | 	    function send3(address payable recipient, uint256 amount) external returns(bool) {
1592 | 	```
1593 | 
1594 | - Found in src/UncheckedSend.sol [Line: 22](../tests/contract-playground/src/UncheckedSend.sol#L22)
1595 | 
1596 | 	```solidity
1597 | 	    function send4(address payable recipient, uint256 amount) external {
1598 | 	```
1599 | 
1600 | - Found in src/UninitializedStateVariable.sol [Line: 17](../tests/contract-playground/src/UninitializedStateVariable.sol#L17)
1601 | 
1602 | 	```solidity
1603 | 	    function transfer() payable public {
1604 | 	```
1605 | 
1606 | </details>
1607 | 
1608 | 
1609 | 
1610 | ## H-20: `delegatecall` to an Arbitrary Address
1611 | 
1612 | Making a `delegatecall` to an arbitrary address without any checks is dangerous. Consider adding requirements on the target address.
1613 | 
1614 | <details><summary>5 Found Instances</summary>
1615 | 
1616 | 
1617 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 15](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L15)
1618 | 
1619 | 	```solidity
1620 | 	    function delegate1(address to, bytes memory data) external {
1621 | 	```
1622 | 
1623 | - Found in src/UncheckedCalls.sol [Line: 14](../tests/contract-playground/src/UncheckedCalls.sol#L14)
1624 | 
1625 | 	```solidity
1626 | 	    function delegateCallFunction(address target, bytes calldata data) external {
1627 | 	```
1628 | 
1629 | - Found in src/UncheckedCalls.sol [Line: 22](../tests/contract-playground/src/UncheckedCalls.sol#L22)
1630 | 
1631 | 	```solidity
1632 | 	    function testMultipleUncheckedCalls(address target) external payable {
1633 | 	```
1634 | 
1635 | - Found in src/auditor_mode/ExternalCalls.sol [Line: 38](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L38)
1636 | 
1637 | 	```solidity
1638 | 	    function rawDelegateCallFromParameter(address myTarget, bytes calldata data) external returns (bytes memory) {
1639 | 	```
1640 | 
1641 | - Found in src/inheritance/ExtendedInheritance.sol [Line: 14](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L14)
1642 | 
1643 | 	```solidity
1644 | 	    function doSomethingElse(address target) external {
1645 | 	```
1646 | 
1647 | </details>
1648 | 
1649 | 
1650 | 
1651 | ## H-21: Tautological comparison
1652 | 
1653 | The left hand side and the right hand side of the binary operation has the same value. This makes the condition always true or always false.
1654 | 
1655 | <details><summary>3 Found Instances</summary>
1656 | 
1657 | 
1658 | - Found in src/TautologicalCompare.sol [Line: 18](../tests/contract-playground/src/TautologicalCompare.sol#L18)
1659 | 
1660 | 	```solidity
1661 | 	        return (f >= 7);
1662 | 	```
1663 | 
1664 | - Found in src/TautologicalCompare.sol [Line: 23](../tests/contract-playground/src/TautologicalCompare.sol#L23)
1665 | 
1666 | 	```solidity
1667 | 	        return (f < f);
1668 | 	```
1669 | 
1670 | - Found in src/TautologicalCompare.sol [Line: 28](../tests/contract-playground/src/TautologicalCompare.sol#L28)
1671 | 
1672 | 	```solidity
1673 | 	        return (f < g);
1674 | 	```
1675 | 
1676 | </details>
1677 | 
1678 | 
1679 | 
1680 | ## H-22: RTLO character detected in file: \u{202e}
1681 | 
1682 | The right to left override character may be misleading and cause potential attacks by visually misordering method arguments.
1683 | 
1684 | <details><summary>1 Found Instances</summary>
1685 | 
1686 | 
1687 | - Found in src/RTLO.sol [Line: 3](../tests/contract-playground/src/RTLO.sol#L3)
1688 | 
1689 | 	```solidity
1690 | 	pragma solidity 0.6.4;
1691 | 	```
1692 | 
1693 | </details>
1694 | 
1695 | 
1696 | 
1697 | ## H-23: Dangerous unary operator
1698 | 
1699 | Potentially mistaken `=+` for `+=` or `=-` for `-=`. This acts as an assignment instead of an increment or decrement.Use the correct operator to increment or decrement a variable.
1700 | 
1701 | <details><summary>2 Found Instances</summary>
1702 | 
1703 | 
1704 | - Found in src/DangerousUnaryOperator.sol [Line: 12](../tests/contract-playground/src/DangerousUnaryOperator.sol#L12)
1705 | 
1706 | 	```solidity
1707 | 	        counter=+1; // BAD
1708 | 	```
1709 | 
1710 | - Found in src/DangerousUnaryOperator.sol [Line: 13](../tests/contract-playground/src/DangerousUnaryOperator.sol#L13)
1711 | 
1712 | 	```solidity
1713 | 	        counter=-1; // BAD
1714 | 	```
1715 | 
1716 | </details>
1717 | 
1718 | 
1719 | 
1720 | ## H-24: Tautology or Contradiction in comparison
1721 | 
1722 | The condition has been determined to be either always true or always false due to the integer range in which we're operating.
1723 | 
1724 | <details><summary>3 Found Instances</summary>
1725 | 
1726 | 
1727 | - Found in src/EmitAfterExternalCall.sol [Line: 48](../tests/contract-playground/src/EmitAfterExternalCall.sol#L48)
1728 | 
1729 | 	```solidity
1730 | 	        for (uint256 i = 0; i < 0; ++i) {
1731 | 	```
1732 | 
1733 | - Found in src/TautologyOrContradiction.sol [Line: 13](../tests/contract-playground/src/TautologyOrContradiction.sol#L13)
1734 | 
1735 | 	```solidity
1736 | 	        if (a > 258) {}
1737 | 	```
1738 | 
1739 | - Found in src/TautologyOrContradiction.sol [Line: 16](../tests/contract-playground/src/TautologyOrContradiction.sol#L16)
1740 | 
1741 | 	```solidity
1742 | 	        if (map[67] < 0) {}
1743 | 	```
1744 | 
1745 | </details>
1746 | 
1747 | 
1748 | 
1749 | ## H-25: Dangerous strict equality checks on contract balances
1750 | 
1751 | A contract's balance can be forcibly manipulated by another selfdestructing contract. Therefore, it's recommended to use >, <, >= or <= instead of strict equality.
1752 | 
1753 | <details><summary>3 Found Instances</summary>
1754 | 
1755 | 
1756 | - Found in src/DangerousStrictEquality1.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality1.sol#L6)
1757 | 
1758 | 	```solidity
1759 | 	        return this.balance == 100 ether;
1760 | 	```
1761 | 
1762 | - Found in src/DangerousStrictEquality2.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality2.sol#L6)
1763 | 
1764 | 	```solidity
1765 | 	        return address(this).balance == 100 ether;
1766 | 	```
1767 | 
1768 | - Found in src/DangerousStrictEquality2.sol [Line: 10](../tests/contract-playground/src/DangerousStrictEquality2.sol#L10)
1769 | 
1770 | 	```solidity
1771 | 	        return payable(address(this)).balance == 100 ether;
1772 | 	```
1773 | 
1774 | </details>
1775 | 
1776 | 
1777 | 
1778 | ## H-26: Signed integer array in storage (solc `<0.5.10`)
1779 | 
1780 | solc versions 0.4.7-0.5.9 contain a compiler bug leading to incorrect values in signed integer arrays.Use solidity version 0.5.10 or above.
1781 | 
1782 | <details><summary>1 Found Instances</summary>
1783 | 
1784 | 
1785 | - Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 9](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L9)
1786 | 
1787 | 	```solidity
1788 | 	        affectedArray = [-1, 5, 2];
1789 | 	```
1790 | 
1791 | </details>
1792 | 
1793 | 
1794 | 
1795 | ## H-27: Weak Randomness
1796 | 
1797 | The use of keccak256 hash functions on predictable values like block.timestamp, block.number, or similar data, including modulo operations on these values, should be avoided for generating randomness, as they are easily predictable and manipulable. The `PREVRANDAO` opcode also should not be used as a source of randomness. Instead, utilize Chainlink VRF for cryptographically secure and provably random values to ensure protocol integrity.
1798 | 
1799 | <details><summary>9 Found Instances</summary>
1800 | 
1801 | 
1802 | - Found in src/WeakRandomness.sol [Line: 6](../tests/contract-playground/src/WeakRandomness.sol#L6)
1803 | 
1804 | 	```solidity
1805 | 	        uint256 randomNumber = uint256(keccak256(abi.encodePacked(msg.sender, block.number, block.timestamp)));
1806 | 	```
1807 | 
1808 | - Found in src/WeakRandomness.sol [Line: 11](../tests/contract-playground/src/WeakRandomness.sol#L11)
1809 | 
1810 | 	```solidity
1811 | 	        return uint256(keccak256(abi.encodePacked(block.number)));
1812 | 	```
1813 | 
1814 | - Found in src/WeakRandomness.sol [Line: 16](../tests/contract-playground/src/WeakRandomness.sol#L16)
1815 | 
1816 | 	```solidity
1817 | 	        return uint256(keccak256(someBytes));
1818 | 	```
1819 | 
1820 | - Found in src/WeakRandomness.sol [Line: 21](../tests/contract-playground/src/WeakRandomness.sol#L21)
1821 | 
1822 | 	```solidity
1823 | 	        return uint256(keccak256(someBytes));
1824 | 	```
1825 | 
1826 | - Found in src/WeakRandomness.sol [Line: 25](../tests/contract-playground/src/WeakRandomness.sol#L25)
1827 | 
1828 | 	```solidity
1829 | 	        return block.timestamp % 10;
1830 | 	```
1831 | 
1832 | - Found in src/WeakRandomness.sol [Line: 31](../tests/contract-playground/src/WeakRandomness.sol#L31)
1833 | 
1834 | 	```solidity
1835 | 	        return a % b;
1836 | 	```
1837 | 
1838 | - Found in src/WeakRandomness.sol [Line: 35](../tests/contract-playground/src/WeakRandomness.sol#L35)
1839 | 
1840 | 	```solidity
1841 | 	        uint256 randomNumber = uint256(blockhash(block.number)) % 10;
1842 | 	```
1843 | 
1844 | - Found in src/WeakRandomness.sol [Line: 41](../tests/contract-playground/src/WeakRandomness.sol#L41)
1845 | 
1846 | 	```solidity
1847 | 	        return hash % 10;
1848 | 	```
1849 | 
1850 | - Found in src/WeakRandomness.sol [Line: 45](../tests/contract-playground/src/WeakRandomness.sol#L45)
1851 | 
1852 | 	```solidity
1853 | 	        uint256 randomNumber = block.prevrandao;
1854 | 	```
1855 | 
1856 | </details>
1857 | 
1858 | 
1859 | 
1860 | ## H-28: Usage of variable before declaration
1861 | 
1862 | Declare the variable before using it to avoid unintended consequences.
1863 | 
1864 | <details><summary>1 Found Instances</summary>
1865 | 
1866 | 
1867 | - Found in src/PreDeclaredVarUsage.sol [Line: 8](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L8)
1868 | 
1869 | 	```solidity
1870 | 	        a = 100;
1871 | 	```
1872 | 
1873 | </details>
1874 | 
1875 | 
1876 | 
1877 | ## H-29: Deletion from a nested mapping
1878 | 
1879 | A deletion in a structure containing a mapping will not delete the mapping. The remaining data may be used to compromise the contract.
1880 | 
1881 | <details><summary>1 Found Instances</summary>
1882 | 
1883 | 
1884 | - Found in src/DeletionNestedMappingStructureContract.sol [Line: 17](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L17)
1885 | 
1886 | 	```solidity
1887 | 	        delete people[msg.sender];
1888 | 	```
1889 | 
1890 | </details>
1891 | 
1892 | 
1893 | 
1894 | ## H-30: Use of `tx.origin` for authentication
1895 | 
1896 | Using `tx.origin` may lead to problems when users are interacting via smart contract with your protocol. It is recommended to use `msg.sender` for authentication.
1897 | 
1898 | <details><summary>3 Found Instances</summary>
1899 | 
1900 | 
1901 | - Found in src/TxOriginUsedForAuth.sol [Line: 40](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L40)
1902 | 
1903 | 	```solidity
1904 | 	        if (tx.origin == owner) {
1905 | 	```
1906 | 
1907 | - Found in src/TxOriginUsedForAuth.sol [Line: 51](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L51)
1908 | 
1909 | 	```solidity
1910 | 	        if (tx.origin == owner || authorizedUsers[tx.origin]) {
1911 | 	```
1912 | 
1913 | - Found in src/TxOriginUsedForAuth.sol [Line: 59](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L59)
1914 | 
1915 | 	```solidity
1916 | 	        require(tx.origin == owner, "Not authorized to perform this action");
1917 | 	```
1918 | 
1919 | </details>
1920 | 
1921 | 
1922 | 
1923 | ## H-31: Loop contains `msg.value`
1924 | 
1925 | Provide an explicit array of amounts alongside the receivers array, and check that the sum of all amounts matches `msg.value`.
1926 | 
1927 | <details><summary>4 Found Instances</summary>
1928 | 
1929 | 
1930 | - Found in src/MsgValueInLoop.sol [Line: 12](../tests/contract-playground/src/MsgValueInLoop.sol#L12)
1931 | 
1932 | 	```solidity
1933 | 	        for (uint256 i = 0; i < receivers.length; i++) {
1934 | 	```
1935 | 
1936 | - Found in src/MsgValueInLoop.sol [Line: 38](../tests/contract-playground/src/MsgValueInLoop.sol#L38)
1937 | 
1938 | 	```solidity
1939 | 	        for (uint256 i = 0; i < receivers.length; i++) {
1940 | 	```
1941 | 
1942 | - Found in src/MsgValueInLoop.sol [Line: 54](../tests/contract-playground/src/MsgValueInLoop.sol#L54)
1943 | 
1944 | 	```solidity
1945 | 	        while (i < receivers.length) {
1946 | 	```
1947 | 
1948 | - Found in src/MsgValueInLoop.sol [Line: 71](../tests/contract-playground/src/MsgValueInLoop.sol#L71)
1949 | 
1950 | 	```solidity
1951 | 	        do {
1952 | 	```
1953 | 
1954 | </details>
1955 | 
1956 | 
1957 | 
1958 | ## H-32: Contract locks Ether without a withdraw function
1959 | 
1960 | It appears that the contract includes a payable function to accept Ether but lacks a corresponding function to withdraw it, which leads to the Ether being locked in the contract. To resolve this issue, please implement a public or external function that allows for the withdrawal of Ether from the contract.
1961 | 
1962 | <details><summary>15 Found Instances</summary>
1963 | 
1964 | 
1965 | - Found in src/ContractLocksEther.sol [Line: 5](../tests/contract-playground/src/ContractLocksEther.sol#L5)
1966 | 
1967 | 	```solidity
1968 | 	contract NoWithdraw {
1969 | 	```
1970 | 
1971 | - Found in src/ContractLocksEther.sol [Line: 31](../tests/contract-playground/src/ContractLocksEther.sol#L31)
1972 | 
1973 | 	```solidity
1974 | 	contract NoWithdraw2 {
1975 | 	```
1976 | 
1977 | - Found in src/EmptyBlocks.sol [Line: 20](../tests/contract-playground/src/EmptyBlocks.sol#L20)
1978 | 
1979 | 	```solidity
1980 | 	contract EmptyBlocksNestedInReceiverAndFallbacks {
1981 | 	```
1982 | 
1983 | - Found in src/EmptyBlocks.sol [Line: 44](../tests/contract-playground/src/EmptyBlocks.sol#L44)
1984 | 
1985 | 	```solidity
1986 | 	contract EmptyBlocks {
1987 | 	```
1988 | 
1989 | - Found in src/ExternalCalls.sol [Line: 8](../tests/contract-playground/src/ExternalCalls.sol#L8)
1990 | 
1991 | 	```solidity
1992 | 	contract MyTarget is IMyTarget {
1993 | 	```
1994 | 
1995 | - Found in src/MsgValueInLoop.sol [Line: 7](../tests/contract-playground/src/MsgValueInLoop.sol#L7)
1996 | 
1997 | 	```solidity
1998 | 	contract MsgValueInLoop1 {
1999 | 	```
2000 | 
2001 | - Found in src/MsgValueInLoop.sol [Line: 19](../tests/contract-playground/src/MsgValueInLoop.sol#L19)
2002 | 
2003 | 	```solidity
2004 | 	contract MsgValueOutsideLoop {
2005 | 	```
2006 | 
2007 | - Found in src/MsgValueInLoop.sol [Line: 33](../tests/contract-playground/src/MsgValueInLoop.sol#L33)
2008 | 
2009 | 	```solidity
2010 | 	contract MsgValueInLoop2 {
2011 | 	```
2012 | 
2013 | - Found in src/MsgValueInLoop.sol [Line: 48](../tests/contract-playground/src/MsgValueInLoop.sol#L48)
2014 | 
2015 | 	```solidity
2016 | 	contract MsgValueInLoop3 {
2017 | 	```
2018 | 
2019 | - Found in src/MsgValueInLoop.sol [Line: 65](../tests/contract-playground/src/MsgValueInLoop.sol#L65)
2020 | 
2021 | 	```solidity
2022 | 	contract MsgValueInLoop4 {
2023 | 	```
2024 | 
2025 | - Found in src/OutOfOrderRetryable.sol [Line: 38](../tests/contract-playground/src/OutOfOrderRetryable.sol#L38)
2026 | 
2027 | 	```solidity
2028 | 	contract L1 {
2029 | 	```
2030 | 
2031 | - Found in src/eth2/DepositContract.sol [Line: 58](../tests/contract-playground/src/eth2/DepositContract.sol#L58)
2032 | 
2033 | 	```solidity
2034 | 	contract DepositContract is IDepositContract, ERC165 {
2035 | 	```
2036 | 
2037 | - Found in src/router/FallbackAndReceiveOverrides.sol [Line: 4](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L4)
2038 | 
2039 | 	```solidity
2040 | 	contract A {
2041 | 	```
2042 | 
2043 | - Found in src/router/FallbackAndReceiveOverrides.sol [Line: 10](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L10)
2044 | 
2045 | 	```solidity
2046 | 	contract B is A {
2047 | 	```
2048 | 
2049 | - Found in src/router/FallbackAndReceiveOverrides.sol [Line: 14](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L14)
2050 | 
2051 | 	```solidity
2052 | 	contract C is A {}
2053 | 	```
2054 | 
2055 | </details>
2056 | 
2057 | 
2058 | 
2059 | ## H-33: Incorrect ERC721 interface
2060 | 
2061 | Incorrect return values for ERC721 functions. A contract compiled with Solidity > 0.4.22 interacting with these functions will fail to execute them, as the return value is missing. Set the appropriate return values and types for the defined ERC721 functions.
2062 | 
2063 | <details><summary>8 Found Instances</summary>
2064 | 
2065 | 
2066 | - Found in src/IncorrectERC721.sol [Line: 14](../tests/contract-playground/src/IncorrectERC721.sol#L14)
2067 | 
2068 | 	```solidity
2069 | 	    function balanceOf(address owner) external view returns (uint72) {
2070 | 	```
2071 | 
2072 | - Found in src/IncorrectERC721.sol [Line: 18](../tests/contract-playground/src/IncorrectERC721.sol#L18)
2073 | 
2074 | 	```solidity
2075 | 	    function ownerOf(uint256 tokenId) public view returns (bytes4) {
2076 | 	```
2077 | 
2078 | - Found in src/IncorrectERC721.sol [Line: 22](../tests/contract-playground/src/IncorrectERC721.sol#L22)
2079 | 
2080 | 	```solidity
2081 | 	    function approve(
2082 | 	```
2083 | 
2084 | - Found in src/IncorrectERC721.sol [Line: 37](../tests/contract-playground/src/IncorrectERC721.sol#L37)
2085 | 
2086 | 	```solidity
2087 | 	    function getApproved(uint256 tokenId) external view returns (uint72) {
2088 | 	```
2089 | 
2090 | - Found in src/IncorrectERC721.sol [Line: 41](../tests/contract-playground/src/IncorrectERC721.sol#L41)
2091 | 
2092 | 	```solidity
2093 | 	    function setApprovalForAll(
2094 | 	```
2095 | 
2096 | - Found in src/IncorrectERC721.sol [Line: 49](../tests/contract-playground/src/IncorrectERC721.sol#L49)
2097 | 
2098 | 	```solidity
2099 | 	    function isApprovedForAll(
2100 | 	```
2101 | 
2102 | - Found in src/IncorrectERC721.sol [Line: 56](../tests/contract-playground/src/IncorrectERC721.sol#L56)
2103 | 
2104 | 	```solidity
2105 | 	    function transferFrom(
2106 | 	```
2107 | 
2108 | - Found in src/IncorrectERC721.sol [Line: 71](../tests/contract-playground/src/IncorrectERC721.sol#L71)
2109 | 
2110 | 	```solidity
2111 | 	    function safeTransferFrom(
2112 | 	```
2113 | 
2114 | </details>
2115 | 
2116 | 
2117 | 
2118 | ## H-34: Incorrect ERC20 interface
2119 | 
2120 | Incorrect return values for ERC20 functions. A contract compiled with Solidity > 0.4.22 interacting with these functions will fail to execute them, as the return value is missing. Set the appropriate return values and types for the defined ERC20 functions.
2121 | 
2122 | <details><summary>5 Found Instances</summary>
2123 | 
2124 | 
2125 | - Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)
2126 | 
2127 | 	```solidity
2128 | 	    function transfer(address to, uint256 value) public {
2129 | 	```
2130 | 
2131 | - Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)
2132 | 
2133 | 	```solidity
2134 | 	    function approve(address spender, uint256 value) public {
2135 | 	```
2136 | 
2137 | - Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)
2138 | 
2139 | 	```solidity
2140 | 	    function transferFrom(address from, address to, uint256 value) public {
2141 | 	```
2142 | 
2143 | - Found in src/IncorrectERC20.sol [Line: 35](../tests/contract-playground/src/IncorrectERC20.sol#L35)
2144 | 
2145 | 	```solidity
2146 | 	    function balanceOf(address account) public pure returns (address) {
2147 | 	```
2148 | 
2149 | - Found in src/IncorrectERC20.sol [Line: 39](../tests/contract-playground/src/IncorrectERC20.sol#L39)
2150 | 
2151 | 	```solidity
2152 | 	    function allowance(
2153 | 	```
2154 | 
2155 | </details>
2156 | 
2157 | 
2158 | 
2159 | ## H-35: Out of Order Retryable Transaction
2160 | 
2161 | Do not rely on the order or successful execution of retryable tickets. Functions like createRetryableTicket, outboundTransferCustomRefund, unsafeCreateRetryableTicket are free to be re-tried in any
2162 |             order if they fail in the first go. Since this operation happens off chain, the sequencer is in control of the
2163 |             order of these transactions. Therefore, restrict the use to at most 1 ticket call per function.
2164 | 
2165 | <details><summary>2 Found Instances</summary>
2166 | 
2167 | 
2168 | - Found in src/OutOfOrderRetryable.sol [Line: 63](../tests/contract-playground/src/OutOfOrderRetryable.sol#L63)
2169 | 
2170 | 	```solidity
2171 | 	    function doStuffOnL2() external {
2172 | 	```
2173 | 
2174 | - Found in src/OutOfOrderRetryable.sol [Line: 90](../tests/contract-playground/src/OutOfOrderRetryable.sol#L90)
2175 | 
2176 | 	```solidity
2177 | 	    function doStuffOnL2Alternative() external {
2178 | 	```
2179 | 
2180 | </details>
2181 | 
2182 | 
2183 | 
2184 | ## H-36: Constant functions changes state
2185 | 
2186 | Function is declared constant/view but it changes state. Ensure that the attributes of contract compiled prior to 0.5 are correct.
2187 | 
2188 | <details><summary>1 Found Instances</summary>
2189 | 
2190 | 
2191 | - Found in src/ConstFuncChangeState.sol [Line: 8](../tests/contract-playground/src/ConstFuncChangeState.sol#L8)
2192 | 
2193 | 	```solidity
2194 | 	    function changeState() public view returns (uint) {
2195 | 	```
2196 | 
2197 | </details>
2198 | 
2199 | 
2200 | 
2201 | ## H-37: Function Selector Collision
2202 | 
2203 | Function selector collides with other functions. This may cause the solidity function dispatcher to invoke the wrong function if the functions happen to be included in the same contract through an inheritance hierarchy later down the line. It is recommended to rename this function or change its parameters.
2204 | 
2205 | <details><summary>2 Found Instances</summary>
2206 | 
2207 | 
2208 | - Found in src/FunctionSignatureCollision.sol [Line: 7](../tests/contract-playground/src/FunctionSignatureCollision.sol#L7)
2209 | 
2210 | 	collides with the following function name(s) in scope: OwnerTransferV7b711143
2211 | 	```solidity
2212 | 	    function withdraw(uint256) external {
2213 | 	```
2214 | 
2215 | - Found in src/FunctionSignatureCollision.sol [Line: 13](../tests/contract-playground/src/FunctionSignatureCollision.sol#L13)
2216 | 
2217 | 	collides with the following function name(s) in scope: withdraw
2218 | 	```solidity
2219 | 	    function OwnerTransferV7b711143(uint256) external {
2220 | 	```
2221 | 
2222 | </details>
2223 | 
2224 | 
2225 | 
2226 | ## H-38: Unchecked Low level calls
2227 | 
2228 | The return value of the low-level call is not checked, so if the call fails, the Ether will be locked in the contract. If the low level is used to prevent blocking operations, consider logging failed calls. Ensure that the return value of a low-level call is checked or logged.
2229 | 
2230 | <details><summary>14 Found Instances</summary>
2231 | 
2232 | 
2233 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 16](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L16)
2234 | 
2235 | 	```solidity
2236 | 	        to.delegatecall(data); // `to` is not protected, therefore BAD
2237 | 	```
2238 | 
2239 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 20](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L20)
2240 | 
2241 | 	```solidity
2242 | 	        manager.delegatecall(data); // `manager` is state variable, therefore GOOD
2243 | 	```
2244 | 
2245 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 36](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L36)
2246 | 
2247 | 	```solidity
2248 | 	        to.delegatecall(data); // `to` is protected, therefore GOOD
2249 | 	```
2250 | 
2251 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 42](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L42)
2252 | 
2253 | 	```solidity
2254 | 	            to.delegatecall(data);
2255 | 	```
2256 | 
2257 | - Found in src/UncheckedCalls.sol [Line: 7](../tests/contract-playground/src/UncheckedCalls.sol#L7)
2258 | 
2259 | 	```solidity
2260 | 	        recipient.call{value: 100}("");
2261 | 	```
2262 | 
2263 | - Found in src/UncheckedCalls.sol [Line: 11](../tests/contract-playground/src/UncheckedCalls.sol#L11)
2264 | 
2265 | 	```solidity
2266 | 	        target.call(data);
2267 | 	```
2268 | 
2269 | - Found in src/UncheckedCalls.sol [Line: 15](../tests/contract-playground/src/UncheckedCalls.sol#L15)
2270 | 
2271 | 	```solidity
2272 | 	        target.delegatecall(data);
2273 | 	```
2274 | 
2275 | - Found in src/UncheckedCalls.sol [Line: 19](../tests/contract-playground/src/UncheckedCalls.sol#L19)
2276 | 
2277 | 	```solidity
2278 | 	        target.staticcall(data);
2279 | 	```
2280 | 
2281 | - Found in src/UncheckedCalls.sol [Line: 23](../tests/contract-playground/src/UncheckedCalls.sol#L23)
2282 | 
2283 | 	```solidity
2284 | 	        target.call{value: 100}("");
2285 | 	```
2286 | 
2287 | - Found in src/UncheckedCalls.sol [Line: 25](../tests/contract-playground/src/UncheckedCalls.sol#L25)
2288 | 
2289 | 	```solidity
2290 | 	        target.call(abi.encodeWithSignature("someFunction(uint256)", 123));
2291 | 	```
2292 | 
2293 | - Found in src/UncheckedCalls.sol [Line: 27](../tests/contract-playground/src/UncheckedCalls.sol#L27)
2294 | 
2295 | 	```solidity
2296 | 	        target.delegatecall(abi.encodeWithSignature("someOtherFunction(address)", msg.sender));
2297 | 	```
2298 | 
2299 | - Found in src/UncheckedCalls.sol [Line: 29](../tests/contract-playground/src/UncheckedCalls.sol#L29)
2300 | 
2301 | 	```solidity
2302 | 	        target.staticcall(abi.encodeWithSignature("aViewFunction()"));
2303 | 	```
2304 | 
2305 | - Found in src/UncheckedCalls.sol [Line: 34](../tests/contract-playground/src/UncheckedCalls.sol#L34)
2306 | 
2307 | 	```solidity
2308 | 	        dst.call.value(100)("");
2309 | 	```
2310 | 
2311 | - Found in src/inheritance/ExtendedInheritance.sol [Line: 16](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L16)
2312 | 
2313 | 	```solidity
2314 | 	            target.delegatecall(abi.encodeWithSignature("doSomething(uint256)", i));
2315 | 	```
2316 | 
2317 | </details>
2318 | 
2319 | 
2320 | 
2321 | ## H-39: Reentrancy: State change after external call
2322 | 
2323 | Changing state after an external call can lead to re-entrancy attacks.Use the checks-effects-interactions pattern to avoid this issue.
2324 | 
2325 | <details><summary>7 Found Instances</summary>
2326 | 
2327 | 
2328 | - Found in src/StateChangeAfterExternalCall.sol [Line: 24](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L24)
2329 | 
2330 | 	State is changed at: `s_useMe += 1`
2331 | 	```solidity
2332 | 	        s_actor.hello();
2333 | 	```
2334 | 
2335 | - Found in src/StateChangeAfterExternalCall.sol [Line: 33](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L33)
2336 | 
2337 | 	State is changed at: `s_useMe -= 1`
2338 | 	```solidity
2339 | 	        s_actor.hello();
2340 | 	```
2341 | 
2342 | - Found in src/StateChangeAfterExternalCall.sol [Line: 52](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L52)
2343 | 
2344 | 	State is changed at: `s_useMe += 4`
2345 | 	```solidity
2346 | 	            s_actor.hello();
2347 | 	```
2348 | 
2349 | - Found in src/StateChangeAfterExternalCall.sol [Line: 82](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L82)
2350 | 
2351 | 	State is changed at: `s_useMe += 1`
2352 | 	```solidity
2353 | 	        s_actor.hello();
2354 | 	```
2355 | 
2356 | - Found in src/Trump.sol [Line: 342](../tests/contract-playground/src/Trump.sol#L342)
2357 | 
2358 | 	State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
2359 | 	```solidity
2360 | 	        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
2361 | 	```
2362 | 
2363 | - Found in src/Trump.sol [Line: 343](../tests/contract-playground/src/Trump.sol#L343)
2364 | 
2365 | 	State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
2366 | 	```solidity
2367 | 	        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
2368 | 	```
2369 | 
2370 | - Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)
2371 | 
2372 | 	State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
2373 | 	```solidity
2374 | 	        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
2375 | 	```
2376 | 
2377 | </details>
2378 | 
2379 | 
2380 | 
2381 | # Low Issues
2382 | 
2383 | ## L-1: `delegatecall` in loop
2384 | 
2385 | Using `delegatecall` in loop may consume excessive gas, or worse, lead to more severe issues.
2386 | 
2387 | <details><summary>1 Found Instances</summary>
2388 | 
2389 | 
2390 | - Found in src/inheritance/ExtendedInheritance.sol [Line: 15](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L15)
2391 | 
2392 | 	```solidity
2393 | 	        for (uint256 i = 0; i < 3; i++) {
2394 | 	```
2395 | 
2396 | </details>
2397 | 
2398 | 
2399 | 
2400 | ## L-2: Centralization Risk
2401 | 
2402 | Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds.
2403 | 
2404 | <details><summary>23 Found Instances</summary>
2405 | 
2406 | 
2407 | - Found in src/AdminContract.sol [Line: 7](../tests/contract-playground/src/AdminContract.sol#L7)
2408 | 
2409 | 	```solidity
2410 | 	contract AdminContract is Ownable, ReentrancyGuard {
2411 | 	```
2412 | 
2413 | - Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)
2414 | 
2415 | 	```solidity
2416 | 	    function setOwner(address _owner) external onlyOwner nonReentrant {
2417 | 	```
2418 | 
2419 | - Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)
2420 | 
2421 | 	```solidity
2422 | 	    function someOtherImportantThing() external nonReentrant onlyOwner {
2423 | 	```
2424 | 
2425 | - Found in src/DeprecatedOZFunctions.sol [Line: 7](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L7)
2426 | 
2427 | 	```solidity
2428 | 	contract DeprecatedOZFunctions is AccessControl {
2429 | 	```
2430 | 
2431 | - Found in src/EmptyBlocks.sol [Line: 6](../tests/contract-playground/src/EmptyBlocks.sol#L6)
2432 | 
2433 | 	```solidity
2434 | 	contract EmptyBlocksWithOwnableConstructor is Ownable {
2435 | 	```
2436 | 
2437 | - Found in src/InternalFunctions.sol [Line: 12](../tests/contract-playground/src/InternalFunctions.sol#L12)
2438 | 
2439 | 	```solidity
2440 | 	    function setValue(uint256 _newValue) external onlyOwner {
2441 | 	```
2442 | 
2443 | - Found in src/SendEtherNoChecksLibImport.sol [Line: 7](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L7)
2444 | 
2445 | 	```solidity
2446 | 	contract SendEtherCheckOZOnlyOWner is Ownable, AccessControl {
2447 | 	```
2448 | 
2449 | - Found in src/SendEtherNoChecksLibImport.sol [Line: 16](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L16)
2450 | 
2451 | 	```solidity
2452 | 	    function send(address x) external onlyOwner {
2453 | 	```
2454 | 
2455 | - Found in src/SendEtherNoChecksLibImport.sol [Line: 20](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L20)
2456 | 
2457 | 	```solidity
2458 | 	    function sendWithRole(address x) external onlyRole(DEFAULT_ADMIN_ROLE) {
2459 | 	```
2460 | 
2461 | - Found in src/StateChangeAfterExternalCall.sol [Line: 81](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L81)
2462 | 
2463 | 	```solidity
2464 | 	    function badSituation4() external onlyOwner {
2465 | 	```
2466 | 
2467 | - Found in src/StateChangeAfterExternalCall.sol [Line: 87](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L87)
2468 | 
2469 | 	```solidity
2470 | 	    function goodSituation3() external onlyOwner {
2471 | 	```
2472 | 
2473 | - Found in src/Trump.sol [Line: 92](../tests/contract-playground/src/Trump.sol#L92)
2474 | 
2475 | 	```solidity
2476 | 	    function renounceOwnership() public virtual onlyOwner {
2477 | 	```
2478 | 
2479 | - Found in src/Trump.sol [Line: 123](../tests/contract-playground/src/Trump.sol#L123)
2480 | 
2481 | 	```solidity
2482 | 	contract MAGA is Context, IERC20, Ownable {
2483 | 	```
2484 | 
2485 | - Found in src/Trump.sol [Line: 299](../tests/contract-playground/src/Trump.sol#L299)
2486 | 
2487 | 	```solidity
2488 | 	    function removeLimits() external onlyOwner{
2489 | 	```
2490 | 
2491 | - Found in src/Trump.sol [Line: 338](../tests/contract-playground/src/Trump.sol#L338)
2492 | 
2493 | 	```solidity
2494 | 	    function openTrading() external onlyOwner() {
2495 | 	```
2496 | 
2497 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 9](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L9)
2498 | 
2499 | 	```solidity
2500 | 	contract OwnableExamples is Ownable {
2501 | 	```
2502 | 
2503 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 11](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L11)
2504 | 
2505 | 	```solidity
2506 | 	    function onlyOwnerFunction() external onlyOwner {
2507 | 	```
2508 | 
2509 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 35](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L35)
2510 | 
2511 | 	```solidity
2512 | 	contract AccessControlExamples is AccessControl {
2513 | 	```
2514 | 
2515 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 38](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L38)
2516 | 
2517 | 	```solidity
2518 | 	    function onlyRoleFunction() external onlyRole(ROLE) {
2519 | 	```
2520 | 
2521 | - Found in src/parent_chain/ParentChainContract.sol [Line: 7](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L7)
2522 | 
2523 | 	```solidity
2524 | 	contract ParentChainContract is Ownable, ReentrancyGuard {
2525 | 	```
2526 | 
2527 | - Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)
2528 | 
2529 | 	```solidity
2530 | 	    function setOwner(address _owner) external onlyOwner nonReentrant {
2531 | 	```
2532 | 
2533 | - Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)
2534 | 
2535 | 	```solidity
2536 | 	    function someOtherImportantThing() external nonReentrant onlyOwner {
2537 | 	```
2538 | 
2539 | </details>
2540 | 
2541 | 
2542 | 
2543 | ## L-3: Solmate's SafeTransferLib
2544 | 
2545 | There is a subtle difference between the implementation of solmate's SafeTransferLib and OZ's SafeERC20: OZ's SafeERC20 checks if the token is a contract or not, solmate's SafeTransferLib does not.
2546 | https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol#L9 
2547 | `@dev Note that none of the functions in this library check that a token has code at all! That responsibility is delegated to the caller`
2548 | 
2549 | 
2550 | <details><summary>1 Found Instances</summary>
2551 | 
2552 | 
2553 | - Found in src/T11sTranferer.sol [Line: 4](../tests/contract-playground/src/T11sTranferer.sol#L4)
2554 | 
2555 | 	```solidity
2556 | 	import {ERC20, SafeTransferLib} from "../lib/solmate/src/utils/SafeTransferLib.sol";
2557 | 	```
2558 | 
2559 | </details>
2560 | 
2561 | 
2562 | 
2563 | ## L-4: `ecrecover` Signature Malleability
2564 | 
2565 | The `ecrecover` function is susceptible to signature malleability. This means that the same message can be signed in multiple ways, allowing an attacker to change the message signature without invalidating it. This can lead to unexpected behavior in smart contracts, such as the loss of funds or the ability to bypass access control. Consider using OpenZeppelin's ECDSA library instead of the built-in function.
2566 | 
2567 | <details><summary>1 Found Instances</summary>
2568 | 
2569 | 
2570 | - Found in src/inheritance/ExtendedInheritance.sol [Line: 22](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L22)
2571 | 
2572 | 	```solidity
2573 | 	        return ecrecover(theHash, v, r, s);
2574 | 	```
2575 | 
2576 | </details>
2577 | 
2578 | 
2579 | 
2580 | ## L-5: Deprecated OpenZeppelin Function
2581 | 
2582 | Openzeppelin has deprecated several functions and replaced with newer versions. Please consult https://docs.openzeppelin.com/
2583 | 
2584 | <details><summary>2 Found Instances</summary>
2585 | 
2586 | 
2587 | - Found in src/DeprecatedOZFunctions.sol [Line: 22](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L22)
2588 | 
2589 | 	```solidity
2590 | 	        _setupRole(role, account);
2591 | 	```
2592 | 
2593 | - Found in src/DeprecatedOZFunctions.sol [Line: 27](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L27)
2594 | 
2595 | 	```solidity
2596 | 	        token.safeApprove(spender, value);
2597 | 	```
2598 | 
2599 | </details>
2600 | 
2601 | 
2602 | 
2603 | ## L-6: Unsafe ERC20 Operation
2604 | 
2605 | ERC20 functions may not behave as expected. For example: return values are not always meaningful. It is recommended to use OpenZeppelin's SafeERC20 library.
2606 | 
2607 | <details><summary>20 Found Instances</summary>
2608 | 
2609 | 
2610 | - Found in src/ArbitraryTransferFrom.sol [Line: 19](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L19)
2611 | 
2612 | 	```solidity
2613 | 	        s_token.transferFrom(from, to, amount);
2614 | 	```
2615 | 
2616 | - Found in src/ArbitraryTransferFrom.sol [Line: 34](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L34)
2617 | 
2618 | 	```solidity
2619 | 	        s_token.transferFrom(from_msgsender, to, am);
2620 | 	```
2621 | 
2622 | - Found in src/ArbitraryTransferFrom.sol [Line: 54](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L54)
2623 | 
2624 | 	```solidity
2625 | 	        s_token.transferFrom(msg.sender, to, amount);
2626 | 	```
2627 | 
2628 | - Found in src/ContractLocksEther.sol [Line: 162](../tests/contract-playground/src/ContractLocksEther.sol#L162)
2629 | 
2630 | 	```solidity
2631 | 	        recipient.transfer(amount);
2632 | 	```
2633 | 
2634 | - Found in src/DeprecatedOZFunctions.sol [Line: 32](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L32)
2635 | 
2636 | 	```solidity
2637 | 	        token.approve(spender, value);
2638 | 	```
2639 | 
2640 | - Found in src/DeprecatedOZFunctions.sol [Line: 37](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L37)
2641 | 
2642 | 	```solidity
2643 | 	        require(token.approve(spender, value));
2644 | 	```
2645 | 
2646 | - Found in src/DeprecatedOZFunctions.sol [Line: 38](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L38)
2647 | 
2648 | 	```solidity
2649 | 	        success = token.approve(spender, value);
2650 | 	```
2651 | 
2652 | - Found in src/DeprecatedOZFunctions.sol [Line: 42](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L42)
2653 | 
2654 | 	```solidity
2655 | 	        return token.approve(spender, value);
2656 | 	```
2657 | 
2658 | - Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)
2659 | 
2660 | 	```solidity
2661 | 	        token.transferFrom(from, to, value);
2662 | 	```
2663 | 
2664 | - Found in src/IncorrectModifier.sol [Line: 83](../tests/contract-playground/src/IncorrectModifier.sol#L83)
2665 | 
2666 | 	```solidity
2667 | 	            payable(owner).transfer(USEME);
2668 | 	```
2669 | 
2670 | - Found in src/OutOfOrderRetryable.sol [Line: 171](../tests/contract-playground/src/OutOfOrderRetryable.sol#L171)
2671 | 
2672 | 	```solidity
2673 | 	        payable(msg.sender).transfer(unclaimed_rewards);
2674 | 	```
2675 | 
2676 | - Found in src/OutOfOrderRetryable.sol [Line: 180](../tests/contract-playground/src/OutOfOrderRetryable.sol#L180)
2677 | 
2678 | 	```solidity
2679 | 	        payable(msg.sender).transfer(user_balance);
2680 | 	```
2681 | 
2682 | - Found in src/SendEtherNoChecks.sol [Line: 67](../tests/contract-playground/src/SendEtherNoChecks.sol#L67)
2683 | 
2684 | 	```solidity
2685 | 	        payable(x).transfer(BAL);
2686 | 	```
2687 | 
2688 | - Found in src/StateShadowing.sol [Line: 22](../tests/contract-playground/src/StateShadowing.sol#L22)
2689 | 
2690 | 	```solidity
2691 | 	        msg.sender.transfer(address(this).balance);
2692 | 	```
2693 | 
2694 | - Found in src/Trump.sol [Line: 309](../tests/contract-playground/src/Trump.sol#L309)
2695 | 
2696 | 	```solidity
2697 | 	        _taxWallet.transfer(taxWalletShare);
2698 | 	```
2699 | 
2700 | - Found in src/Trump.sol [Line: 310](../tests/contract-playground/src/Trump.sol#L310)
2701 | 
2702 | 	```solidity
2703 | 	        _teamWallet.transfer(teamWalletShare);
2704 | 	```
2705 | 
2706 | - Found in src/Trump.sol [Line: 318](../tests/contract-playground/src/Trump.sol#L318)
2707 | 
2708 | 	```solidity
2709 | 	        return IERC20(tokenAddress).transfer(_taxWallet, tokens);
2710 | 	```
2711 | 
2712 | - Found in src/Trump.sol [Line: 324](../tests/contract-playground/src/Trump.sol#L324)
2713 | 
2714 | 	```solidity
2715 | 	        payable(_taxWallet).transfer(balance);
2716 | 	```
2717 | 
2718 | - Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)
2719 | 
2720 | 	```solidity
2721 | 	        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
2722 | 	```
2723 | 
2724 | - Found in src/UninitializedStateVariable.sol [Line: 18](../tests/contract-playground/src/UninitializedStateVariable.sol#L18)
2725 | 
2726 | 	```solidity
2727 | 	        payable(destination).transfer(msg.value); // `destination` does not have any assignments.
2728 | 	```
2729 | 
2730 | </details>
2731 | 
2732 | 
2733 | 
2734 | ## L-7: Unspecific Solidity Pragma
2735 | 
2736 | Consider using a specific version of Solidity in your contracts instead of a wide version. For example, instead of `pragma solidity ^0.8.0;`, use `pragma solidity 0.8.0;`
2737 | 
2738 | <details><summary>36 Found Instances</summary>
2739 | 
2740 | 
2741 | - Found in src/BuiltinSymbolShadow.sol [Line: 2](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L2)
2742 | 
2743 | 	```solidity
2744 | 	pragma solidity ^0.4.0;
2745 | 	```
2746 | 
2747 | - Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 2](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L2)
2748 | 
2749 | 	```solidity
2750 | 	pragma solidity ^0.4.0;
2751 | 	```
2752 | 
2753 | - Found in src/ConstFuncChangeState.sol [Line: 2](../tests/contract-playground/src/ConstFuncChangeState.sol#L2)
2754 | 
2755 | 	```solidity
2756 | 	pragma solidity ^0.4.0;
2757 | 	```
2758 | 
2759 | - Found in src/ConstantFuncsAssembly.sol [Line: 2](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L2)
2760 | 
2761 | 	```solidity
2762 | 	pragma solidity ^0.4.0;
2763 | 	```
2764 | 
2765 | - Found in src/ContractLocksEther.sol [Line: 2](../tests/contract-playground/src/ContractLocksEther.sol#L2)
2766 | 
2767 | 	```solidity
2768 | 	pragma solidity ^0.8.0;
2769 | 	```
2770 | 
2771 | - Found in src/ContractWithTodo.sol [Line: 2](../tests/contract-playground/src/ContractWithTodo.sol#L2)
2772 | 
2773 | 	```solidity
2774 | 	pragma solidity ^0.8.0;
2775 | 	```
2776 | 
2777 | - Found in src/CostlyOperationsInsideLoops.sol [Line: 2](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L2)
2778 | 
2779 | 	```solidity
2780 | 	pragma solidity ^0.8.0;
2781 | 	```
2782 | 
2783 | - Found in src/Counter.sol [Line: 2](../tests/contract-playground/src/Counter.sol#L2)
2784 | 
2785 | 	```solidity
2786 | 	pragma solidity ^0.8.13;
2787 | 	```
2788 | 
2789 | - Found in src/CrazyPragma.sol [Line: 2](../tests/contract-playground/src/CrazyPragma.sol#L2)
2790 | 
2791 | 	```solidity
2792 | 	pragma solidity >=0.8.19 <0.9.1;
2793 | 	```
2794 | 
2795 | - Found in src/DangerousStrictEquality1.sol [Line: 2](../tests/contract-playground/src/DangerousStrictEquality1.sol#L2)
2796 | 
2797 | 	```solidity
2798 | 	pragma solidity ^0.4.0;
2799 | 	```
2800 | 
2801 | - Found in src/DangerousUnaryOperator.sol [Line: 2](../tests/contract-playground/src/DangerousUnaryOperator.sol#L2)
2802 | 
2803 | 	```solidity
2804 | 	pragma solidity ^0.4.0;
2805 | 	```
2806 | 
2807 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 2](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L2)
2808 | 
2809 | 	```solidity
2810 | 	pragma solidity ^0.8;
2811 | 	```
2812 | 
2813 | - Found in src/DeletionNestedMappingStructureContract.sol [Line: 2](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L2)
2814 | 
2815 | 	```solidity
2816 | 	pragma solidity ^0.8.0;
2817 | 	```
2818 | 
2819 | - Found in src/FunctionInitializingState.sol [Line: 2](../tests/contract-playground/src/FunctionInitializingState.sol#L2)
2820 | 
2821 | 	```solidity
2822 | 	pragma solidity ^0.8.0;
2823 | 	```
2824 | 
2825 | - Found in src/FunctionSignatureCollision.sol [Line: 2](../tests/contract-playground/src/FunctionSignatureCollision.sol#L2)
2826 | 
2827 | 	```solidity
2828 | 	pragma solidity ^0.8.0;
2829 | 	```
2830 | 
2831 | - Found in src/InconsistentUints.sol [Line: 1](../tests/contract-playground/src/InconsistentUints.sol#L1)
2832 | 
2833 | 	```solidity
2834 | 	pragma solidity ^0.8.24;
2835 | 	```
2836 | 
2837 | - Found in src/IncorrectERC20.sol [Line: 2](../tests/contract-playground/src/IncorrectERC20.sol#L2)
2838 | 
2839 | 	```solidity
2840 | 	pragma solidity ^0.8.0;
2841 | 	```
2842 | 
2843 | - Found in src/IncorrectERC721.sol [Line: 2](../tests/contract-playground/src/IncorrectERC721.sol#L2)
2844 | 
2845 | 	```solidity
2846 | 	pragma solidity ^0.8.0;
2847 | 	```
2848 | 
2849 | - Found in src/MsgValueInLoop.sol [Line: 2](../tests/contract-playground/src/MsgValueInLoop.sol#L2)
2850 | 
2851 | 	```solidity
2852 | 	pragma solidity ^0.8.0;
2853 | 	```
2854 | 
2855 | - Found in src/OutOfOrderRetryable.sol [Line: 2](../tests/contract-playground/src/OutOfOrderRetryable.sol#L2)
2856 | 
2857 | 	```solidity
2858 | 	pragma solidity ^0.8.0;
2859 | 	```
2860 | 
2861 | - Found in src/PragmaRange.sol [Line: 2](../tests/contract-playground/src/PragmaRange.sol#L2)
2862 | 
2863 | 	```solidity
2864 | 	pragma solidity >=0.5.0 <0.8.0;
2865 | 	```
2866 | 
2867 | - Found in src/PreDeclaredVarUsage.sol [Line: 2](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L2)
2868 | 
2869 | 	```solidity
2870 | 	pragma solidity ^0.4.0;
2871 | 	```
2872 | 
2873 | - Found in src/RedundantStatements.sol [Line: 2](../tests/contract-playground/src/RedundantStatements.sol#L2)
2874 | 
2875 | 	```solidity
2876 | 	pragma solidity ^0.4.0;
2877 | 	```
2878 | 
2879 | - Found in src/TautologyOrContradiction.sol [Line: 2](../tests/contract-playground/src/TautologyOrContradiction.sol#L2)
2880 | 
2881 | 	```solidity
2882 | 	pragma solidity ^0.5.0;
2883 | 	```
2884 | 
2885 | - Found in src/TxOriginUsedForAuth.sol [Line: 2](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L2)
2886 | 
2887 | 	```solidity
2888 | 	pragma solidity ^0.8.20;
2889 | 	```
2890 | 
2891 | - Found in src/UncheckedCalls.sol [Line: 2](../tests/contract-playground/src/UncheckedCalls.sol#L2)
2892 | 
2893 | 	```solidity
2894 | 	pragma solidity ^0.6.0;
2895 | 	```
2896 | 
2897 | - Found in src/UncheckedSend.sol [Line: 2](../tests/contract-playground/src/UncheckedSend.sol#L2)
2898 | 
2899 | 	```solidity
2900 | 	pragma solidity ^0.7.0;
2901 | 	```
2902 | 
2903 | - Found in src/UnusedStateVariables.sol [Line: 2](../tests/contract-playground/src/UnusedStateVariables.sol#L2)
2904 | 
2905 | 	```solidity
2906 | 	pragma solidity ^0.8.20;
2907 | 	```
2908 | 
2909 | - Found in src/UsingSelfdestruct.sol [Line: 2](../tests/contract-playground/src/UsingSelfdestruct.sol#L2)
2910 | 
2911 | 	```solidity
2912 | 	pragma solidity ^0.6.0;
2913 | 	```
2914 | 
2915 | - Found in src/VoidConstructor.sol [Line: 2](../tests/contract-playground/src/VoidConstructor.sol#L2)
2916 | 
2917 | 	```solidity
2918 | 	pragma solidity ^0.8.0;
2919 | 	```
2920 | 
2921 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L6)
2922 | 
2923 | 	```solidity
2924 | 	pragma solidity ^0.8.18;
2925 | 	```
2926 | 
2927 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L6)
2928 | 
2929 | 	```solidity
2930 | 	pragma solidity >=0.8.0 <0.8.25; 
2931 | 	```
2932 | 
2933 | - Found in src/inheritance/IContractInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/IContractInheritance.sol#L2)
2934 | 
2935 | 	```solidity
2936 | 	pragma solidity >=0.8.0;
2937 | 	```
2938 | 
2939 | - Found in src/inheritance/InheritanceBase.sol [Line: 2](../tests/contract-playground/src/inheritance/InheritanceBase.sol#L2)
2940 | 
2941 | 	```solidity
2942 | 	pragma solidity ^0.8.0;
2943 | 	```
2944 | 
2945 | - Found in src/nested_mappings/LaterVersion.sol [Line: 2](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L2)
2946 | 
2947 | 	```solidity
2948 | 	pragma solidity ^0.8.0;
2949 | 	```
2950 | 
2951 | - Found in src/nested_mappings/NestedMappings.sol [Line: 2](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L2)
2952 | 
2953 | 	```solidity
2954 | 	pragma solidity ^0.4.25;
2955 | 	```
2956 | 
2957 | </details>
2958 | 
2959 | 
2960 | 
2961 | ## L-8: Address State Variable Set Without Checks
2962 | 
2963 | Check for `address(0)` when assigning values to address state variables.
2964 | 
2965 | <details><summary>12 Found Instances</summary>
2966 | 
2967 | 
2968 | - Found in src/ArbitraryTransferFrom.sol [Line: 12](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L12)
2969 | 
2970 | 	```solidity
2971 | 	        s_token = token;
2972 | 	```
2973 | 
2974 | - Found in src/ExternalCalls.sol [Line: 20](../tests/contract-playground/src/ExternalCalls.sol#L20)
2975 | 
2976 | 	```solidity
2977 | 	        t2 = MyTarget(x);
2978 | 	```
2979 | 
2980 | - Found in src/ExternalCalls.sol [Line: 28](../tests/contract-playground/src/ExternalCalls.sol#L28)
2981 | 
2982 | 	```solidity
2983 | 	        t1 = t;
2984 | 	```
2985 | 
2986 | - Found in src/OutOfOrderRetryable.sol [Line: 54](../tests/contract-playground/src/OutOfOrderRetryable.sol#L54)
2987 | 
2988 | 	```solidity
2989 | 	        inbox = _inbox;
2990 | 	```
2991 | 
2992 | - Found in src/OutOfOrderRetryable.sol [Line: 55](../tests/contract-playground/src/OutOfOrderRetryable.sol#L55)
2993 | 
2994 | 	```solidity
2995 | 	        l2contract = _l2contract;
2996 | 	```
2997 | 
2998 | - Found in src/StateVariables.sol [Line: 58](../tests/contract-playground/src/StateVariables.sol#L58)
2999 | 
3000 | 	```solidity
3001 | 	        addr = newAddr;
3002 | 	```
3003 | 
3004 | - Found in src/StateVariablesManipulation.sol [Line: 56](../tests/contract-playground/src/StateVariablesManipulation.sol#L56)
3005 | 
3006 | 	```solidity
3007 | 	        simpleAddress = d;
3008 | 	```
3009 | 
3010 | - Found in src/ZeroAddressCheck.sol [Line: 43](../tests/contract-playground/src/ZeroAddressCheck.sol#L43)
3011 | 
3012 | 	```solidity
3013 | 	        addr = newAddr;
3014 | 	```
3015 | 
3016 | - Found in src/ZeroAddressCheck.sol [Line: 47](../tests/contract-playground/src/ZeroAddressCheck.sol#L47)
3017 | 
3018 | 	```solidity
3019 | 	        token = newToken;
3020 | 	```
3021 | 
3022 | - Found in src/ZeroAddressCheck.sol [Line: 51](../tests/contract-playground/src/ZeroAddressCheck.sol#L51)
3023 | 
3024 | 	```solidity
3025 | 	        token = IERC20(newAddr);
3026 | 	```
3027 | 
3028 | - Found in src/inheritance/ExtendedInheritance.sol [Line: 18](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L18)
3029 | 
3030 | 	```solidity
3031 | 	        s_baseAddress = target;
3032 | 	```
3033 | 
3034 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 11](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L11)
3035 | 
3036 | 	```solidity
3037 | 	        s_router = router;
3038 | 	```
3039 | 
3040 | </details>
3041 | 
3042 | 
3043 | 
3044 | ## L-9: Public Function Not Used Internally
3045 | 
3046 | If a function is marked public but is not used internally, consider marking it as `external`.
3047 | 
3048 | <details><summary>72 Found Instances</summary>
3049 | 
3050 | 
3051 | - Found in src/AderynIgnoreCustomDetectors.sol [Line: 7](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L7)
3052 | 
3053 | 	```solidity
3054 | 	    function f1() public {
3055 | 	```
3056 | 
3057 | - Found in src/AderynIgnoreCustomDetectors.sol [Line: 26](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L26)
3058 | 
3059 | 	```solidity
3060 | 	    function f4() public {
3061 | 	```
3062 | 
3063 | - Found in src/ArbitraryTransferFrom.sol [Line: 32](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L32)
3064 | 
3065 | 	```solidity
3066 | 	    function good1(address to, uint256 am) public {
3067 | 	```
3068 | 
3069 | - Found in src/AssemblyExample.sol [Line: 6](../tests/contract-playground/src/AssemblyExample.sol#L6)
3070 | 
3071 | 	```solidity
3072 | 	    function f(uint x) public view returns (uint r) {
3073 | 	```
3074 | 
3075 | - Found in src/AssertStateChange.sol [Line: 8](../tests/contract-playground/src/AssertStateChange.sol#L8)
3076 | 
3077 | 	```solidity
3078 | 	    function bad() public {
3079 | 	```
3080 | 
3081 | - Found in src/AssertStateChange.sol [Line: 12](../tests/contract-playground/src/AssertStateChange.sol#L12)
3082 | 
3083 | 	```solidity
3084 | 	    function good() public {
3085 | 	```
3086 | 
3087 | - Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)
3088 | 
3089 | 	```solidity
3090 | 	    function assert(bool condition) public {}
3091 | 	```
3092 | 
3093 | - Found in src/ConstFuncChangeState.sol [Line: 8](../tests/contract-playground/src/ConstFuncChangeState.sol#L8)
3094 | 
3095 | 	```solidity
3096 | 	    function changeState() public view returns (uint) {
3097 | 	```
3098 | 
3099 | - Found in src/ConstFuncChangeState.sol [Line: 14](../tests/contract-playground/src/ConstFuncChangeState.sol#L14)
3100 | 
3101 | 	```solidity
3102 | 	    function changeState2() public returns (uint) {
3103 | 	```
3104 | 
3105 | - Found in src/ConstFuncChangeState.sol [Line: 20](../tests/contract-playground/src/ConstFuncChangeState.sol#L20)
3106 | 
3107 | 	```solidity
3108 | 	    function dontChangeState() public view returns (uint) {
3109 | 	```
3110 | 
3111 | - Found in src/ContractLocksEther.sol [Line: 20](../tests/contract-playground/src/ContractLocksEther.sol#L20)
3112 | 
3113 | 	```solidity
3114 | 	    function getBalance() public view returns (uint256) {
3115 | 	```
3116 | 
3117 | - Found in src/ContractLocksEther.sol [Line: 49](../tests/contract-playground/src/ContractLocksEther.sol#L49)
3118 | 
3119 | 	```solidity
3120 | 	    function getBalance() public view returns (uint256) {
3121 | 	```
3122 | 
3123 | - Found in src/ContractLocksEther.sol [Line: 81](../tests/contract-playground/src/ContractLocksEther.sol#L81)
3124 | 
3125 | 	```solidity
3126 | 	    function getBalance() public view returns (uint256) {
3127 | 	```
3128 | 
3129 | - Found in src/ContractLocksEther.sol [Line: 118](../tests/contract-playground/src/ContractLocksEther.sol#L118)
3130 | 
3131 | 	```solidity
3132 | 	    function getBalance() public view returns (uint256) {
3133 | 	```
3134 | 
3135 | - Found in src/ContractLocksEther.sol [Line: 155](../tests/contract-playground/src/ContractLocksEther.sol#L155)
3136 | 
3137 | 	```solidity
3138 | 	    function getBalance() public view returns (uint256) {
3139 | 	```
3140 | 
3141 | - Found in src/ContractLocksEther.sol [Line: 181](../tests/contract-playground/src/ContractLocksEther.sol#L181)
3142 | 
3143 | 	```solidity
3144 | 	    function getBalance() public view returns (uint256) {
3145 | 	```
3146 | 
3147 | - Found in src/ContractWithTodo.sol [Line: 13](../tests/contract-playground/src/ContractWithTodo.sol#L13)
3148 | 
3149 | 	```solidity
3150 | 	    function toggleCompleted(uint _taskId) public {
3151 | 	```
3152 | 
3153 | - Found in src/Counter.sol [Line: 7](../tests/contract-playground/src/Counter.sol#L7)
3154 | 
3155 | 	```solidity
3156 | 	    function setNumber(uint256 newNumber) public {
3157 | 	```
3158 | 
3159 | - Found in src/ExternalCalls.sol [Line: 11](../tests/contract-playground/src/ExternalCalls.sol#L11)
3160 | 
3161 | 	```solidity
3162 | 	    function extCall(uint256 m_a) public payable {
3163 | 	```
3164 | 
3165 | - Found in src/ExternalCalls.sol [Line: 19](../tests/contract-playground/src/ExternalCalls.sol#L19)
3166 | 
3167 | 	```solidity
3168 | 	    function baseThing(address x) public {
3169 | 	```
3170 | 
3171 | - Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)
3172 | 
3173 | 	```solidity
3174 | 	    function transfer(address to, uint256 value) public {
3175 | 	```
3176 | 
3177 | - Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)
3178 | 
3179 | 	```solidity
3180 | 	    function approve(address spender, uint256 value) public {
3181 | 	```
3182 | 
3183 | - Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)
3184 | 
3185 | 	```solidity
3186 | 	    function transferFrom(address from, address to, uint256 value) public {
3187 | 	```
3188 | 
3189 | - Found in src/IncorrectERC20.sol [Line: 35](../tests/contract-playground/src/IncorrectERC20.sol#L35)
3190 | 
3191 | 	```solidity
3192 | 	    function balanceOf(address account) public pure returns (address) {
3193 | 	```
3194 | 
3195 | - Found in src/IncorrectERC20.sol [Line: 39](../tests/contract-playground/src/IncorrectERC20.sol#L39)
3196 | 
3197 | 	```solidity
3198 | 	    function allowance(
3199 | 	```
3200 | 
3201 | - Found in src/LocalVariableShadow.sol [Line: 10](../tests/contract-playground/src/LocalVariableShadow.sol#L10)
3202 | 
3203 | 	```solidity
3204 | 	    function sensitiveFunction(address owner) public view {
3205 | 	```
3206 | 
3207 | - Found in src/LocalVariableShadow.sol [Line: 16](../tests/contract-playground/src/LocalVariableShadow.sol#L16)
3208 | 
3209 | 	```solidity
3210 | 	    function alternateSensitiveFunction() public view {
3211 | 	```
3212 | 
3213 | - Found in src/LocalVariableShadow.sol [Line: 31](../tests/contract-playground/src/LocalVariableShadow.sol#L31)
3214 | 
3215 | 	```solidity
3216 | 	    function sensitiveFfunction(address roll) public view {
3217 | 	```
3218 | 
3219 | - Found in src/OutOfOrderRetryable.sol [Line: 167](../tests/contract-playground/src/OutOfOrderRetryable.sol#L167)
3220 | 
3221 | 	```solidity
3222 | 	    function claim_rewards() public {
3223 | 	```
3224 | 
3225 | - Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)
3226 | 
3227 | 	```solidity
3228 | 	    function unstake() public {
3229 | 	```
3230 | 
3231 | - Found in src/ReturnBomb.sol [Line: 16](../tests/contract-playground/src/ReturnBomb.sol#L16)
3232 | 
3233 | 	```solidity
3234 | 	    function oops(address badGuy) public {
3235 | 	```
3236 | 
3237 | - Found in src/ReturnBomb.sol [Line: 32](../tests/contract-playground/src/ReturnBomb.sol#L32)
3238 | 
3239 | 	```solidity
3240 | 	    function oops(address badGuy) public {
3241 | 	```
3242 | 
3243 | - Found in src/ReturnBomb.sol [Line: 47](../tests/contract-playground/src/ReturnBomb.sol#L47)
3244 | 
3245 | 	```solidity
3246 | 	    function oops(address badGuy) public {
3247 | 	```
3248 | 
3249 | - Found in src/ReturnBomb.sol [Line: 63](../tests/contract-playground/src/ReturnBomb.sol#L63)
3250 | 
3251 | 	```solidity
3252 | 	    function oops() public {
3253 | 	```
3254 | 
3255 | - Found in src/StateVariables.sol [Line: 47](../tests/contract-playground/src/StateVariables.sol#L47)
3256 | 
3257 | 	```solidity
3258 | 	    function setAddrNoZeroError(address newAddr) public {
3259 | 	```
3260 | 
3261 | - Found in src/StateVariables.sol [Line: 52](../tests/contract-playground/src/StateVariables.sol#L52)
3262 | 
3263 | 	```solidity
3264 | 	    function setAddrNoZeroRequire(address newAddr) public {
3265 | 	```
3266 | 
3267 | - Found in src/StateVariables.sol [Line: 57](../tests/contract-playground/src/StateVariables.sol#L57)
3268 | 
3269 | 	```solidity
3270 | 	    function setAddrNoCheck(address newAddr) public {
3271 | 	```
3272 | 
3273 | - Found in src/StateVariables.sol [Line: 61](../tests/contract-playground/src/StateVariables.sol#L61)
3274 | 
3275 | 	```solidity
3276 | 	    function setEmptyAlteredNumbers(
3277 | 	```
3278 | 
3279 | - Found in src/StateVariables.sol [Line: 71](../tests/contract-playground/src/StateVariables.sol#L71)
3280 | 
3281 | 	```solidity
3282 | 	    function setNonEmptyAlteredNumbers(
3283 | 	```
3284 | 
3285 | - Found in src/Trump.sol [Line: 180](../tests/contract-playground/src/Trump.sol#L180)
3286 | 
3287 | 	```solidity
3288 | 	    function name() public pure returns (string memory) {
3289 | 	```
3290 | 
3291 | - Found in src/Trump.sol [Line: 184](../tests/contract-playground/src/Trump.sol#L184)
3292 | 
3293 | 	```solidity
3294 | 	    function symbol() public pure returns (string memory) {
3295 | 	```
3296 | 
3297 | - Found in src/Trump.sol [Line: 188](../tests/contract-playground/src/Trump.sol#L188)
3298 | 
3299 | 	```solidity
3300 | 	    function decimals() public pure returns (uint8) {
3301 | 	```
3302 | 
3303 | - Found in src/UninitializedLocalVariables.sol [Line: 7](../tests/contract-playground/src/UninitializedLocalVariables.sol#L7)
3304 | 
3305 | 	```solidity
3306 | 	    function testAllDataTypesBAD() public pure {
3307 | 	```
3308 | 
3309 | - Found in src/UninitializedLocalVariables.sol [Line: 23](../tests/contract-playground/src/UninitializedLocalVariables.sol#L23)
3310 | 
3311 | 	```solidity
3312 | 	    function testAllDataTypesGOOD() public pure {
3313 | 	```
3314 | 
3315 | - Found in src/UninitializedLocalVariables.sol [Line: 41](../tests/contract-playground/src/UninitializedLocalVariables.sol#L41)
3316 | 
3317 | 	```solidity
3318 | 	    function testAllDataTypes2() public pure {
3319 | 	```
3320 | 
3321 | - Found in src/UninitializedStateVariable.sol [Line: 17](../tests/contract-playground/src/UninitializedStateVariable.sol#L17)
3322 | 
3323 | 	```solidity
3324 | 	    function transfer() payable public {
3325 | 	```
3326 | 
3327 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 16](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L16)
3328 | 
3329 | 	```solidity
3330 | 	    function onlyOwnerManualRequireCheck() public view {
3331 | 	```
3332 | 
3333 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 22](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L22)
3334 | 
3335 | 	```solidity
3336 | 	    function onlyOwnerManualIfRevertCheck() public view {
3337 | 	```
3338 | 
3339 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 45](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L45)
3340 | 
3341 | 	```solidity
3342 | 	    function onlyRoleManualRequireCheck() public view {
3343 | 	```
3344 | 
3345 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 53](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L53)
3346 | 
3347 | 	```solidity
3348 | 	    function onlyRoleManualIfRevertCheck() public view {
3349 | 	```
3350 | 
3351 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 71](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L71)
3352 | 
3353 | 	```solidity
3354 | 	    function onlyOwnerManualCheck() public view {
3355 | 	```
3356 | 
3357 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 77](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L77)
3358 | 
3359 | 	```solidity
3360 | 	    function onlyOwnerManualIfRevertCheck() public view {
3361 | 	```
3362 | 
3363 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 31](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L31)
3364 | 
3365 | 	```solidity
3366 | 	    function foo(address bar) public pure {
3367 | 	```
3368 | 
3369 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 38](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L38)
3370 | 
3371 | 	```solidity
3372 | 	    function emoji() public pure {
3373 | 	```
3374 | 
3375 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 42](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L42)
3376 | 
3377 | 	```solidity
3378 | 	    function foo2(address bar) public pure {
3379 | 	```
3380 | 
3381 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 31](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L31)
3382 | 
3383 | 	```solidity
3384 | 	    function foo(address bar) public pure {
3385 | 	```
3386 | 
3387 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 38](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L38)
3388 | 
3389 | 	```solidity
3390 | 	    function foo2(address bar) public pure {
3391 | 	```
3392 | 
3393 | - Found in src/parent_chain/ParentChainContract.sol [Line: 11](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L11)
3394 | 
3395 | 	```solidity
3396 | 	    function setNumber(uint256 newNumber) public {
3397 | 	```
3398 | 
3399 | - Found in src/parent_chain/ParentChainContract.sol [Line: 15](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L15)
3400 | 
3401 | 	```solidity
3402 | 	    function increment(uint256 newNumber) public {
3403 | 	```
3404 | 
3405 | - Found in src/router/ExternalCalls.sol [Line: 23](../tests/contract-playground/src/router/ExternalCalls.sol#L23)
3406 | 
3407 | 	```solidity
3408 | 	    function test(A a) public {
3409 | 	```
3410 | 
3411 | - Found in src/router/ExternalCalls.sol [Line: 40](../tests/contract-playground/src/router/ExternalCalls.sol#L40)
3412 | 
3413 | 	```solidity
3414 | 	    function test(D d) public view {
3415 | 	```
3416 | 
3417 | - Found in src/router/FallbackAndReceiveOverrides.sol [Line: 22](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L22)
3418 | 
3419 | 	```solidity
3420 | 	    function test(FakeIt f) public {
3421 | 	```
3422 | 
3423 | - Found in src/router/InternalCalls.sol [Line: 31](../tests/contract-playground/src/router/InternalCalls.sol#L31)
3424 | 
3425 | 	```solidity
3426 | 	    function main() public {
3427 | 	```
3428 | 
3429 | - Found in src/router/InternalCalls.sol [Line: 46](../tests/contract-playground/src/router/InternalCalls.sol#L46)
3430 | 
3431 | 	```solidity
3432 | 	    function gcall() public {
3433 | 	```
3434 | 
3435 | - Found in src/router/InternalCalls.sol [Line: 96](../tests/contract-playground/src/router/InternalCalls.sol#L96)
3436 | 
3437 | 	```solidity
3438 | 	    function aux1(uint256 a) public {}
3439 | 	```
3440 | 
3441 | - Found in src/router/InternalCalls.sol [Line: 120](../tests/contract-playground/src/router/InternalCalls.sol#L120)
3442 | 
3443 | 	```solidity
3444 | 	    function main() public {
3445 | 	```
3446 | 
3447 | - Found in src/router/InternalCalls.sol [Line: 161](../tests/contract-playground/src/router/InternalCalls.sol#L161)
3448 | 
3449 | 	```solidity
3450 | 	    function main() public {
3451 | 	```
3452 | 
3453 | - Found in src/router/InternalCalls.sol [Line: 169](../tests/contract-playground/src/router/InternalCalls.sol#L169)
3454 | 
3455 | 	```solidity
3456 | 	    function main() public {
3457 | 	```
3458 | 
3459 | - Found in src/router/InternalCalls.sol [Line: 177](../tests/contract-playground/src/router/InternalCalls.sol#L177)
3460 | 
3461 | 	```solidity
3462 | 	    function main() public {
3463 | 	```
3464 | 
3465 | - Found in src/router/InternalCalls.sol [Line: 183](../tests/contract-playground/src/router/InternalCalls.sol#L183)
3466 | 
3467 | 	```solidity
3468 | 	    function help() public {
3469 | 	```
3470 | 
3471 | - Found in src/router/ModifierCalls.sol [Line: 22](../tests/contract-playground/src/router/ModifierCalls.sol#L22)
3472 | 
3473 | 	```solidity
3474 | 	    function tree() public modify {
3475 | 	```
3476 | 
3477 | - Found in src/router/ModifierCalls.sol [Line: 35](../tests/contract-playground/src/router/ModifierCalls.sol#L35)
3478 | 
3479 | 	```solidity
3480 | 	    function main() public B.modify modify {
3481 | 	```
3482 | 
3483 | </details>
3484 | 
3485 | 
3486 | 
3487 | ## L-10: Literal Instead of Constant
3488 | 
3489 | Define and use `constant` variables instead of using literals. If the same constant literal value is used multiple times, create a constant state variable and reference it throughout the contract.
3490 | 
3491 | <details><summary>81 Found Instances</summary>
3492 | 
3493 | 
3494 | - Found in src/AssertStateChange.sol [Line: 9](../tests/contract-playground/src/AssertStateChange.sol#L9)
3495 | 
3496 | 	```solidity
3497 | 	        assert((s_a += 1) > 10);
3498 | 	```
3499 | 
3500 | - Found in src/AssertStateChange.sol [Line: 14](../tests/contract-playground/src/AssertStateChange.sol#L14)
3501 | 
3502 | 	```solidity
3503 | 	        assert(s_a > 10);
3504 | 	```
3505 | 
3506 | - Found in src/BooleanEquality.sol [Line: 6](../tests/contract-playground/src/BooleanEquality.sol#L6)
3507 | 
3508 | 	```solidity
3509 | 	            return 100;
3510 | 	```
3511 | 
3512 | - Found in src/BooleanEquality.sol [Line: 13](../tests/contract-playground/src/BooleanEquality.sol#L13)
3513 | 
3514 | 	```solidity
3515 | 	            return 200;
3516 | 	```
3517 | 
3518 | - Found in src/BooleanEquality.sol [Line: 15](../tests/contract-playground/src/BooleanEquality.sol#L15)
3519 | 
3520 | 	```solidity
3521 | 	        return 130;
3522 | 	```
3523 | 
3524 | - Found in src/BooleanEquality.sol [Line: 20](../tests/contract-playground/src/BooleanEquality.sol#L20)
3525 | 
3526 | 	```solidity
3527 | 	            return 100;
3528 | 	```
3529 | 
3530 | - Found in src/BooleanEquality.sol [Line: 27](../tests/contract-playground/src/BooleanEquality.sol#L27)
3531 | 
3532 | 	```solidity
3533 | 	            return 200;
3534 | 	```
3535 | 
3536 | - Found in src/BooleanEquality.sol [Line: 29](../tests/contract-playground/src/BooleanEquality.sol#L29)
3537 | 
3538 | 	```solidity
3539 | 	        return 130;
3540 | 	```
3541 | 
3542 | - Found in src/CacheArrayLength.sol [Line: 26](../tests/contract-playground/src/CacheArrayLength.sol#L26)
3543 | 
3544 | 	```solidity
3545 | 	            array[i] = 100;
3546 | 	```
3547 | 
3548 | - Found in src/CacheArrayLength.sol [Line: 27](../tests/contract-playground/src/CacheArrayLength.sol#L27)
3549 | 
3550 | 	```solidity
3551 | 	            array.push(100);
3552 | 	```
3553 | 
3554 | - Found in src/CacheArrayLength.sol [Line: 36](../tests/contract-playground/src/CacheArrayLength.sol#L36)
3555 | 
3556 | 	```solidity
3557 | 	            array[i] = 100;
3558 | 	```
3559 | 
3560 | - Found in src/CacheArrayLength.sol [Line: 37](../tests/contract-playground/src/CacheArrayLength.sol#L37)
3561 | 
3562 | 	```solidity
3563 | 	            array.push(100);
3564 | 	```
3565 | 
3566 | - Found in src/Casting.sol [Line: 20](../tests/contract-playground/src/Casting.sol#L20)
3567 | 
3568 | 	```solidity
3569 | 	        uint256 a = 0x1234567890abcdef;
3570 | 	```
3571 | 
3572 | - Found in src/Casting.sol [Line: 26](../tests/contract-playground/src/Casting.sol#L26)
3573 | 
3574 | 	```solidity
3575 | 	        int256 c = -0x1234567890abcdef;
3576 | 	```
3577 | 
3578 | - Found in src/Casting.sol [Line: 38](../tests/contract-playground/src/Casting.sol#L38)
3579 | 
3580 | 	```solidity
3581 | 	        uint unspecificUint = 0x1234567890abcdef;
3582 | 	```
3583 | 
3584 | - Found in src/Casting.sol [Line: 76](../tests/contract-playground/src/Casting.sol#L76)
3585 | 
3586 | 	```solidity
3587 | 	        int unspecificInt = -0x1234567890abcdef;
3588 | 	```
3589 | 
3590 | - Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 9](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L9)
3591 | 
3592 | 	```solidity
3593 | 	        affectedArray = [-1, 5, 2];
3594 | 	```
3595 | 
3596 | - Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 14](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L14)
3597 | 
3598 | 	```solidity
3599 | 	        unaffectedArray[1] = 5;
3600 | 	```
3601 | 
3602 | - Found in src/ConstantsLiterals.sol [Line: 25](../tests/contract-playground/src/ConstantsLiterals.sol#L25)
3603 | 
3604 | 	```solidity
3605 | 	        uint multipleUseOfValue = 987;
3606 | 	```
3607 | 
3608 | - Found in src/ConstantsLiterals.sol [Line: 26](../tests/contract-playground/src/ConstantsLiterals.sol#L26)
3609 | 
3610 | 	```solidity
3611 | 	        multipleUseOfValue = 987;
3612 | 	```
3613 | 
3614 | - Found in src/ConstantsLiterals.sol [Line: 27](../tests/contract-playground/src/ConstantsLiterals.sol#L27)
3615 | 
3616 | 	```solidity
3617 | 	        uint multipleUseOfValue2 = 9876;
3618 | 	```
3619 | 
3620 | - Found in src/ConstantsLiterals.sol [Line: 28](../tests/contract-playground/src/ConstantsLiterals.sol#L28)
3621 | 
3622 | 	```solidity
3623 | 	        multipleUseOfValue2 = 9876 + 1;
3624 | 	```
3625 | 
3626 | - Found in src/ConstantsLiterals.sol [Line: 29](../tests/contract-playground/src/ConstantsLiterals.sol#L29)
3627 | 
3628 | 	```solidity
3629 | 	        address multipleUseOfAddress = 0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5;
3630 | 	```
3631 | 
3632 | - Found in src/ConstantsLiterals.sol [Line: 30](../tests/contract-playground/src/ConstantsLiterals.sol#L30)
3633 | 
3634 | 	```solidity
3635 | 	        multipleUseOfAddress = 0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5;
3636 | 	```
3637 | 
3638 | - Found in src/ConstantsLiterals.sol [Line: 31](../tests/contract-playground/src/ConstantsLiterals.sol#L31)
3639 | 
3640 | 	```solidity
3641 | 	        bytes32 multipleUseOfBytes32 = 0x8a1b3dbe6301650442bfa765d4de23775fc9a4ec4329ebb5995ec7f1e3777dc4;
3642 | 	```
3643 | 
3644 | - Found in src/DangerousStrictEquality2.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality2.sol#L6)
3645 | 
3646 | 	```solidity
3647 | 	        return address(this).balance == 100 ether;
3648 | 	```
3649 | 
3650 | - Found in src/DangerousStrictEquality2.sol [Line: 10](../tests/contract-playground/src/DangerousStrictEquality2.sol#L10)
3651 | 
3652 | 	```solidity
3653 | 	        return payable(address(this)).balance == 100 ether;
3654 | 	```
3655 | 
3656 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 24](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L24)
3657 | 
3658 | 	```solidity
3659 | 	        address[3] memory allowed = [address(1), address(2), address(3)];
3660 | 	```
3661 | 
3662 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 26](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L26)
3663 | 
3664 | 	```solidity
3665 | 	        for (uint256 i = 0; i < 3; i++) {
3666 | 	```
3667 | 
3668 | - Found in src/DynamicArrayLengthAssignment.sol [Line: 13](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L13)
3669 | 
3670 | 	```solidity
3671 | 			myArray.length = 200;
3672 | 	```
3673 | 
3674 | - Found in src/DynamicArrayLengthAssignment.sol [Line: 14](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L14)
3675 | 
3676 | 	```solidity
3677 | 	        myArray2[7].length = 200;
3678 | 	```
3679 | 
3680 | - Found in src/DynamicArrayLengthAssignment.sol [Line: 17](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L17)
3681 | 
3682 | 	```solidity
3683 | 	        myArray.length += 200;
3684 | 	```
3685 | 
3686 | - Found in src/FunctionInitializingState.sol [Line: 23](../tests/contract-playground/src/FunctionInitializingState.sol#L23)
3687 | 
3688 | 	```solidity
3689 | 	            return 77;
3690 | 	```
3691 | 
3692 | - Found in src/FunctionInitializingState.sol [Line: 26](../tests/contract-playground/src/FunctionInitializingState.sol#L26)
3693 | 
3694 | 	```solidity
3695 | 	        return 88;
3696 | 	```
3697 | 
3698 | - Found in src/FunctionInitializingState.sol [Line: 34](../tests/contract-playground/src/FunctionInitializingState.sol#L34)
3699 | 
3700 | 	```solidity
3701 | 	            return 77;
3702 | 	```
3703 | 
3704 | - Found in src/FunctionInitializingState.sol [Line: 37](../tests/contract-playground/src/FunctionInitializingState.sol#L37)
3705 | 
3706 | 	```solidity
3707 | 	        return 88;
3708 | 	```
3709 | 
3710 | - Found in src/FunctionInitializingState.sol [Line: 42](../tests/contract-playground/src/FunctionInitializingState.sol#L42)
3711 | 
3712 | 	```solidity
3713 | 	        f = 1e10 * 1e12;
3714 | 	```
3715 | 
3716 | - Found in src/FunctionInitializingState.sol [Line: 48](../tests/contract-playground/src/FunctionInitializingState.sol#L48)
3717 | 
3718 | 	```solidity
3719 | 	            f = 1e10 * 1e12;
3720 | 	```
3721 | 
3722 | - Found in src/IncorrectCaretOperator.sol [Line: 17](../tests/contract-playground/src/IncorrectCaretOperator.sol#L17)
3723 | 
3724 | 	```solidity
3725 | 	        uint256 z = s_second^89 + 13;
3726 | 	```
3727 | 
3728 | - Found in src/IncorrectCaretOperator.sol [Line: 18](../tests/contract-playground/src/IncorrectCaretOperator.sol#L18)
3729 | 
3730 | 	```solidity
3731 | 	        uint256 w = s_second^s_first + 13; 
3732 | 	```
3733 | 
3734 | - Found in src/MultiplePlaceholders.sol [Line: 22](../tests/contract-playground/src/MultiplePlaceholders.sol#L22)
3735 | 
3736 | 	```solidity
3737 | 	        } else if (a + b < 100) {
3738 | 	```
3739 | 
3740 | - Found in src/MultiplePlaceholders.sol [Line: 33](../tests/contract-playground/src/MultiplePlaceholders.sol#L33)
3741 | 
3742 | 	```solidity
3743 | 	        } else if (a + b < 100) {
3744 | 	```
3745 | 
3746 | - Found in src/MultiplePlaceholders.sol [Line: 45](../tests/contract-playground/src/MultiplePlaceholders.sol#L45)
3747 | 
3748 | 	```solidity
3749 | 	        } else if (a + b < 100) {
3750 | 	```
3751 | 
3752 | - Found in src/PreDeclaredVarUsage.sol [Line: 8](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L8)
3753 | 
3754 | 	```solidity
3755 | 	        a = 100;
3756 | 	```
3757 | 
3758 | - Found in src/PreDeclaredVarUsage.sol [Line: 9](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L9)
3759 | 
3760 | 	```solidity
3761 | 	        uint b = 100; 
3762 | 	```
3763 | 
3764 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)
3765 | 
3766 | 	```solidity
3767 | 	        for (uint256 id = 0; id < 10; ++id) {
3768 | 	```
3769 | 
3770 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)
3771 | 
3772 | 	```solidity
3773 | 	        for (uint256 id = 0; id < 10; ++id) {
3774 | 	```
3775 | 
3776 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 26](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L26)
3777 | 
3778 | 	```solidity
3779 | 	        uint256[] memory failedIds = new uint256[](10);
3780 | 	```
3781 | 
3782 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 27](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L27)
3783 | 
3784 | 	```solidity
3785 | 	        for (uint256 id = 0; id < 10; ++id) {
3786 | 	```
3787 | 
3788 | - Found in src/StateVariablesManipulation.sol [Line: 121](../tests/contract-playground/src/StateVariablesManipulation.sol#L121)
3789 | 
3790 | 	```solidity
3791 | 	        person = Person("Spiderman", 21);
3792 | 	```
3793 | 
3794 | - Found in src/StateVariablesManipulation.sol [Line: 123](../tests/contract-playground/src/StateVariablesManipulation.sol#L123)
3795 | 
3796 | 	```solidity
3797 | 	        person2.age = 21;
3798 | 	```
3799 | 
3800 | - Found in src/StateVariablesManipulation.sol [Line: 192](../tests/contract-playground/src/StateVariablesManipulation.sol#L192)
3801 | 
3802 | 	```solidity
3803 | 	        p.age = 200;
3804 | 	```
3805 | 
3806 | - Found in src/StateVariablesManipulation.sol [Line: 202](../tests/contract-playground/src/StateVariablesManipulation.sol#L202)
3807 | 
3808 | 	```solidity
3809 | 	        p2.age = 200;
3810 | 	```
3811 | 
3812 | - Found in src/StateVariablesManipulation.sol [Line: 233](../tests/contract-playground/src/StateVariablesManipulation.sol#L233)
3813 | 
3814 | 	```solidity
3815 | 	        uint256[5][1] memory m_allAges;
3816 | 	```
3817 | 
3818 | - Found in src/StateVariablesManipulation.sol [Line: 237](../tests/contract-playground/src/StateVariablesManipulation.sol#L237)
3819 | 
3820 | 	```solidity
3821 | 	        m_person = Person("Spiderman", 21);
3822 | 	```
3823 | 
3824 | - Found in src/StateVariablesManipulation.sol [Line: 239](../tests/contract-playground/src/StateVariablesManipulation.sol#L239)
3825 | 
3826 | 	```solidity
3827 | 	        m_person2.age = 21;
3828 | 	```
3829 | 
3830 | - Found in src/StateVariablesManipulation.sol [Line: 244](../tests/contract-playground/src/StateVariablesManipulation.sol#L244)
3831 | 
3832 | 	```solidity
3833 | 	        Person memory m_dummy = Person("Spiderman", 21);
3834 | 	```
3835 | 
3836 | - Found in src/StateVariablesManipulation.sol [Line: 258](../tests/contract-playground/src/StateVariablesManipulation.sol#L258)
3837 | 
3838 | 	```solidity
3839 | 	        uint256[5] storage ageRef1 = allAges[0];
3840 | 	```
3841 | 
3842 | - Found in src/StateVariablesManipulation.sol [Line: 264](../tests/contract-playground/src/StateVariablesManipulation.sol#L264)
3843 | 
3844 | 	```solidity
3845 | 	        uint256[5] storage ageRef2 = allAges[0];
3846 | 	```
3847 | 
3848 | - Found in src/StateVariablesManipulation.sol [Line: 333](../tests/contract-playground/src/StateVariablesManipulation.sol#L333)
3849 | 
3850 | 	```solidity
3851 | 	        p.some.push(102);
3852 | 	```
3853 | 
3854 | - Found in src/StateVariablesManipulation.sol [Line: 339](../tests/contract-playground/src/StateVariablesManipulation.sol#L339)
3855 | 
3856 | 	```solidity
3857 | 	        that.push(102);
3858 | 	```
3859 | 
3860 | - Found in src/Trump.sol [Line: 233](../tests/contract-playground/src/Trump.sol#L233)
3861 | 
3862 | 	```solidity
3863 | 	            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
3864 | 	```
3865 | 
3866 | - Found in src/Trump.sol [Line: 250](../tests/contract-playground/src/Trump.sol#L250)
3867 | 
3868 | 	```solidity
3869 | 	                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
3870 | 	```
3871 | 
3872 | - Found in src/Trump.sol [Line: 306](../tests/contract-playground/src/Trump.sol#L306)
3873 | 
3874 | 	```solidity
3875 | 	        uint256 taxWalletShare = amount * _taxWalletPercentage / 100;
3876 | 	```
3877 | 
3878 | - Found in src/Trump.sol [Line: 307](../tests/contract-playground/src/Trump.sol#L307)
3879 | 
3880 | 	```solidity
3881 | 	        uint256 teamWalletShare = amount * _teamWalletPercentage / 100;
3882 | 	```
3883 | 
3884 | - Found in src/UncheckedReturn.sol [Line: 27](../tests/contract-playground/src/UncheckedReturn.sol#L27)
3885 | 
3886 | 	```solidity
3887 | 	        UncheckedHelperExternal(address(0x12345)).two();
3888 | 	```
3889 | 
3890 | - Found in src/UncheckedReturn.sol [Line: 32](../tests/contract-playground/src/UncheckedReturn.sol#L32)
3891 | 
3892 | 	```solidity
3893 | 	        uint256 _answer = UncheckedHelperExternal(address(0x12345)).two();
3894 | 	```
3895 | 
3896 | - Found in src/UncheckedReturn.sol [Line: 37](../tests/contract-playground/src/UncheckedReturn.sol#L37)
3897 | 
3898 | 	```solidity
3899 | 	        require(UncheckedHelperExternal(address(0x12345)).two() == 2, "Not two");
3900 | 	```
3901 | 
3902 | - Found in src/UncheckedReturn.sol [Line: 42](../tests/contract-playground/src/UncheckedReturn.sol#L42)
3903 | 
3904 | 	```solidity
3905 | 	        if (UncheckedHelperExternal(address(0x12345)).two() != 2) {
3906 | 	```
3907 | 
3908 | - Found in src/UninitializedLocalVariables.sol [Line: 34](../tests/contract-playground/src/UninitializedLocalVariables.sol#L34)
3909 | 
3910 | 	```solidity
3911 | 	            0x0000000000000000000000000000000000000001
3912 | 	```
3913 | 
3914 | - Found in src/UninitializedLocalVariables.sol [Line: 63](../tests/contract-playground/src/UninitializedLocalVariables.sol#L63)
3915 | 
3916 | 	```solidity
3917 | 	        delayedAddress = 0x0000000000000000000000000000000000000001;
3918 | 	```
3919 | 
3920 | - Found in src/UninitializedLocalVariables.sol [Line: 67](../tests/contract-playground/src/UninitializedLocalVariables.sol#L67)
3921 | 
3922 | 	```solidity
3923 | 	        delayedUintArray[0] = 21;
3924 | 	```
3925 | 
3926 | - Found in src/UninitializedLocalVariables.sol [Line: 70](../tests/contract-playground/src/UninitializedLocalVariables.sol#L70)
3927 | 
3928 | 	```solidity
3929 | 	        delayedIntArray[0] = -21;
3930 | 	```
3931 | 
3932 | - Found in src/WeakRandomness.sol [Line: 25](../tests/contract-playground/src/WeakRandomness.sol#L25)
3933 | 
3934 | 	```solidity
3935 | 	        return block.timestamp % 10;
3936 | 	```
3937 | 
3938 | - Found in src/WeakRandomness.sol [Line: 35](../tests/contract-playground/src/WeakRandomness.sol#L35)
3939 | 
3940 | 	```solidity
3941 | 	        uint256 randomNumber = uint256(blockhash(block.number)) % 10;
3942 | 	```
3943 | 
3944 | - Found in src/WeakRandomness.sol [Line: 41](../tests/contract-playground/src/WeakRandomness.sol#L41)
3945 | 
3946 | 	```solidity
3947 | 	        return hash % 10;
3948 | 	```
3949 | 
3950 | - Found in src/eth2/DepositContract.sol [Line: 113](../tests/contract-playground/src/eth2/DepositContract.sol#L113)
3951 | 
3952 | 	```solidity
3953 | 	            abi.encodePacked(sha256(abi.encodePacked(signature[:64])), sha256(abi.encodePacked(signature[64:], bytes32(0))))
3954 | 	```
3955 | 
3956 | </details>
3957 | 
3958 | 
3959 | 
3960 | ## L-11: Empty `require()` / `revert()` Statement
3961 | 
3962 | Use descriptive reason strings or custom errors for revert paths.
3963 | 
3964 | <details><summary>31 Found Instances</summary>
3965 | 
3966 | 
3967 | - Found in src/CallGraphTests.sol [Line: 7](../tests/contract-playground/src/CallGraphTests.sol#L7)
3968 | 
3969 | 	```solidity
3970 | 	        require(msg.sender == address(0x11));
3971 | 	```
3972 | 
3973 | - Found in src/CallGraphTests.sol [Line: 28](../tests/contract-playground/src/CallGraphTests.sol#L28)
3974 | 
3975 | 	```solidity
3976 | 	            revert();
3977 | 	```
3978 | 
3979 | - Found in src/CallGraphTests.sol [Line: 50](../tests/contract-playground/src/CallGraphTests.sol#L50)
3980 | 
3981 | 	```solidity
3982 | 	            revert();
3983 | 	```
3984 | 
3985 | - Found in src/CallGraphTests.sol [Line: 65](../tests/contract-playground/src/CallGraphTests.sol#L65)
3986 | 
3987 | 	```solidity
3988 | 	        require(msg.sender == address(0x11));
3989 | 	```
3990 | 
3991 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 31](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L31)
3992 | 
3993 | 	```solidity
3994 | 	        require(isLegit);
3995 | 	```
3996 | 
3997 | - Found in src/DeprecatedOZFunctions.sol [Line: 37](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L37)
3998 | 
3999 | 	```solidity
4000 | 	        require(token.approve(spender, value));
4001 | 	```
4002 | 
4003 | - Found in src/DeprecatedOZFunctions.sol [Line: 40](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L40)
4004 | 
4005 | 	```solidity
4006 | 	            revert();
4007 | 	```
4008 | 
4009 | - Found in src/EmitAfterExternalCall.sol [Line: 18](../tests/contract-playground/src/EmitAfterExternalCall.sol#L18)
4010 | 
4011 | 	```solidity
4012 | 	        require(actor != address(0));
4013 | 	```
4014 | 
4015 | - Found in src/ExternalCalls.sol [Line: 72](../tests/contract-playground/src/ExternalCalls.sol#L72)
4016 | 
4017 | 	```solidity
4018 | 	            revert();
4019 | 	```
4020 | 
4021 | - Found in src/IncorrectModifier.sol [Line: 49](../tests/contract-playground/src/IncorrectModifier.sol#L49)
4022 | 
4023 | 	```solidity
4024 | 	            revert();
4025 | 	```
4026 | 
4027 | - Found in src/LocalVariableShadow.sol [Line: 12](../tests/contract-playground/src/LocalVariableShadow.sol#L12)
4028 | 
4029 | 	```solidity
4030 | 	        require(owner == msg.sender);
4031 | 	```
4032 | 
4033 | - Found in src/LocalVariableShadow.sol [Line: 19](../tests/contract-playground/src/LocalVariableShadow.sol#L19)
4034 | 
4035 | 	```solidity
4036 | 	        require(owner == msg.sender);
4037 | 	```
4038 | 
4039 | - Found in src/LocalVariableShadow.sol [Line: 33](../tests/contract-playground/src/LocalVariableShadow.sol#L33)
4040 | 
4041 | 	```solidity
4042 | 	        require(roll == msg.sender);
4043 | 	```
4044 | 
4045 | - Found in src/MultiplePlaceholders.sol [Line: 23](../tests/contract-playground/src/MultiplePlaceholders.sol#L23)
4046 | 
4047 | 	```solidity
4048 | 	            revert();
4049 | 	```
4050 | 
4051 | - Found in src/MultiplePlaceholders.sol [Line: 34](../tests/contract-playground/src/MultiplePlaceholders.sol#L34)
4052 | 
4053 | 	```solidity
4054 | 	            revert();
4055 | 	```
4056 | 
4057 | - Found in src/MultiplePlaceholders.sol [Line: 46](../tests/contract-playground/src/MultiplePlaceholders.sol#L46)
4058 | 
4059 | 	```solidity
4060 | 	            revert();
4061 | 	```
4062 | 
4063 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 19](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L19)
4064 | 
4065 | 	```solidity
4066 | 	                revert();
4067 | 	```
4068 | 
4069 | - Found in src/SendEtherNoChecks.sol [Line: 12](../tests/contract-playground/src/SendEtherNoChecks.sol#L12)
4070 | 
4071 | 	```solidity
4072 | 	            revert();
4073 | 	```
4074 | 
4075 | - Found in src/SendEtherNoChecks.sol [Line: 27](../tests/contract-playground/src/SendEtherNoChecks.sol#L27)
4076 | 
4077 | 	```solidity
4078 | 	        require(msg.sender == address(0x11));
4079 | 	```
4080 | 
4081 | - Found in src/SendEtherNoChecks.sol [Line: 43](../tests/contract-playground/src/SendEtherNoChecks.sol#L43)
4082 | 
4083 | 	```solidity
4084 | 	            revert();
4085 | 	```
4086 | 
4087 | - Found in src/SendEtherNoChecksLibImport.sol [Line: 12](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L12)
4088 | 
4089 | 	```solidity
4090 | 	            revert();
4091 | 	```
4092 | 
4093 | - Found in src/StateChangeAfterExternalCall.sol [Line: 17](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L17)
4094 | 
4095 | 	```solidity
4096 | 	        require(actor != address(0));
4097 | 	```
4098 | 
4099 | - Found in src/StateShadowing.sol [Line: 8](../tests/contract-playground/src/StateShadowing.sol#L8)
4100 | 
4101 | 	```solidity
4102 | 	        require(owner == msg.sender);
4103 | 	```
4104 | 
4105 | - Found in src/Trump.sol [Line: 240](../tests/contract-playground/src/Trump.sol#L240)
4106 | 
4107 | 	```solidity
4108 | 	                    require(!isContract(to));
4109 | 	```
4110 | 
4111 | - Found in src/ZeroAddressCheck.sol [Line: 13](../tests/contract-playground/src/ZeroAddressCheck.sol#L13)
4112 | 
4113 | 	```solidity
4114 | 	        if (newAddr == address(0)) revert();
4115 | 	```
4116 | 
4117 | - Found in src/ZeroAddressCheck.sol [Line: 23](../tests/contract-playground/src/ZeroAddressCheck.sol#L23)
4118 | 
4119 | 	```solidity
4120 | 	        if (newAddr == address(0)) revert();
4121 | 	```
4122 | 
4123 | - Found in src/ZeroAddressCheck.sol [Line: 38](../tests/contract-playground/src/ZeroAddressCheck.sol#L38)
4124 | 
4125 | 	```solidity
4126 | 	        if (address(newToken) == address(0)) revert();
4127 | 	```
4128 | 
4129 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 35](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L35)
4130 | 
4131 | 	```solidity
4132 | 	        require(bar != address(0));
4133 | 	```
4134 | 
4135 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 56](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L56)
4136 | 
4137 | 	```solidity
4138 | 	        require(bar != address(0));
4139 | 	```
4140 | 
4141 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 35](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L35)
4142 | 
4143 | 	```solidity
4144 | 	        require(bar != address(0));
4145 | 	```
4146 | 
4147 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 53](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L53)
4148 | 
4149 | 	```solidity
4150 | 	        require(bar != address(0));
4151 | 	```
4152 | 
4153 | </details>
4154 | 
4155 | 
4156 | 
4157 | ## L-12: `nonReentrant` is Not the First Modifier
4158 | 
4159 | To protect against reentrancy in other modifiers, the `nonReentrant` modifier should be the first modifier in the list of modifiers.
4160 | 
4161 | <details><summary>2 Found Instances</summary>
4162 | 
4163 | 
4164 | - Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)
4165 | 
4166 | 	```solidity
4167 | 	    function setOwner(address _owner) external onlyOwner nonReentrant {
4168 | 	```
4169 | 
4170 | - Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)
4171 | 
4172 | 	```solidity
4173 | 	    function setOwner(address _owner) external onlyOwner nonReentrant {
4174 | 	```
4175 | 
4176 | </details>
4177 | 
4178 | 
4179 | 
4180 | ## L-13: Using `block.timestamp` for swap deadline offers no protection
4181 | 
4182 | In the PoS model, proposers know well in advance if they will propose one or consecutive blocks ahead of time. In such a scenario, a malicious validator can hold back the transaction and execute it at a more favourable block number.Consider allowing function caller to specify swap deadline input parameter.
4183 | 
4184 | <details><summary>17 Found Instances</summary>
4185 | 
4186 | 
4187 | - Found in src/Trump.sol [Line: 290](../tests/contract-playground/src/Trump.sol#L290)
4188 | 
4189 | 	```solidity
4190 | 	        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
4191 | 	```
4192 | 
4193 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 23](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L23)
4194 | 
4195 | 	```solidity
4196 | 	        router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, block.timestamp);
4197 | 	```
4198 | 
4199 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 24](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L24)
4200 | 
4201 | 	```solidity
4202 | 	        router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, block.timestamp);
4203 | 	```
4204 | 
4205 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 25](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L25)
4206 | 
4207 | 	```solidity
4208 | 	        router1.swapExactETHForTokens(amountOutMin, path, to, block.timestamp);
4209 | 	```
4210 | 
4211 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 26](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L26)
4212 | 
4213 | 	```solidity
4214 | 	        router1.swapTokensForExactETH(amountOut, amountInMax, path, to, block.timestamp);
4215 | 	```
4216 | 
4217 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 27](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L27)
4218 | 
4219 | 	```solidity
4220 | 	        router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, block.timestamp);
4221 | 	```
4222 | 
4223 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 31](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L31)
4224 | 
4225 | 	```solidity
4226 | 	        router2.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, block.timestamp);
4227 | 	```
4228 | 
4229 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 32](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L32)
4230 | 
4231 | 	```solidity
4232 | 	        router2.swapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin, path, to, block.timestamp);
4233 | 	```
4234 | 
4235 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 33](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L33)
4236 | 
4237 | 	```solidity
4238 | 	        router2.swapExactTokensForETHSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, block.timestamp);
4239 | 	```
4240 | 
4241 | - Found in src/uniswap/UniswapV3Swapper.sol [Line: 52](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L52)
4242 | 
4243 | 	```solidity
4244 | 	        ExactInputSingleParams memory exactInputSingleParams = ExactInputSingleParams(
4245 | 	```
4246 | 
4247 | - Found in src/uniswap/UniswapV3Swapper.sol [Line: 55](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L55)
4248 | 
4249 | 	```solidity
4250 | 	        exactInputSingleParams = ExactInputSingleParams({
4251 | 	```
4252 | 
4253 | - Found in src/uniswap/UniswapV3Swapper.sol [Line: 66](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L66)
4254 | 
4255 | 	```solidity
4256 | 	        ExactInputParams memory exactInputParams = ExactInputParams(
4257 | 	```
4258 | 
4259 | - Found in src/uniswap/UniswapV3Swapper.sol [Line: 69](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L69)
4260 | 
4261 | 	```solidity
4262 | 	        exactInputParams = ExactInputParams({
4263 | 	```
4264 | 
4265 | - Found in src/uniswap/UniswapV3Swapper.sol [Line: 77](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L77)
4266 | 
4267 | 	```solidity
4268 | 	        ExactOutputSingleParams memory exactOutputSingleParams = ExactOutputSingleParams(
4269 | 	```
4270 | 
4271 | - Found in src/uniswap/UniswapV3Swapper.sol [Line: 80](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L80)
4272 | 
4273 | 	```solidity
4274 | 	        exactOutputSingleParams = ExactOutputSingleParams({
4275 | 	```
4276 | 
4277 | - Found in src/uniswap/UniswapV3Swapper.sol [Line: 91](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L91)
4278 | 
4279 | 	```solidity
4280 | 	        ExactOutputParams memory exactOutputParams = ExactOutputParams(
4281 | 	```
4282 | 
4283 | - Found in src/uniswap/UniswapV3Swapper.sol [Line: 94](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L94)
4284 | 
4285 | 	```solidity
4286 | 	        exactOutputParams = ExactOutputParams({
4287 | 	```
4288 | 
4289 | </details>
4290 | 
4291 | 
4292 | 
4293 | ## L-14: Unsafe `ERC721::_mint()`
4294 | 
4295 | Using `ERC721::_mint()` can mint ERC721 tokens to addresses which don't support ERC721 tokens. Use `_safeMint()` instead of `_mint()` for ERC721 tokens.
4296 | 
4297 | <details><summary>1 Found Instances</summary>
4298 | 
4299 | 
4300 | - Found in src/UnsafeERC721Mint.sol [Line: 12](../tests/contract-playground/src/UnsafeERC721Mint.sol#L12)
4301 | 
4302 | 	```solidity
4303 | 	        _mint(to, tokenId);
4304 | 	```
4305 | 
4306 | </details>
4307 | 
4308 | 
4309 | 
4310 | ## L-15: PUSH0 Opcode
4311 | 
4312 | Solc compiler version 0.8.20 switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes. Be sure to select the appropriate EVM version in case you intend to deploy on a chain other than mainnet like L2 chains that may not support PUSH0, otherwise deployment of your contracts will fail.
4313 | 
4314 | <details><summary>45 Found Instances</summary>
4315 | 
4316 | 
4317 | - Found in src/AdminContract.sol [Line: 2](../tests/contract-playground/src/AdminContract.sol#L2)
4318 | 
4319 | 	```solidity
4320 | 	pragma solidity 0.8.20;
4321 | 	```
4322 | 
4323 | - Found in src/AssertStateChange.sol [Line: 2](../tests/contract-playground/src/AssertStateChange.sol#L2)
4324 | 
4325 | 	```solidity
4326 | 	pragma solidity 0.8.20;
4327 | 	```
4328 | 
4329 | - Found in src/CacheArrayLength.sol [Line: 2](../tests/contract-playground/src/CacheArrayLength.sol#L2)
4330 | 
4331 | 	```solidity
4332 | 	pragma solidity 0.8.20;
4333 | 	```
4334 | 
4335 | - Found in src/ContractLocksEther.sol [Line: 2](../tests/contract-playground/src/ContractLocksEther.sol#L2)
4336 | 
4337 | 	```solidity
4338 | 	pragma solidity ^0.8.0;
4339 | 	```
4340 | 
4341 | - Found in src/ContractWithTodo.sol [Line: 2](../tests/contract-playground/src/ContractWithTodo.sol#L2)
4342 | 
4343 | 	```solidity
4344 | 	pragma solidity ^0.8.0;
4345 | 	```
4346 | 
4347 | - Found in src/CostlyOperationsInsideLoops.sol [Line: 2](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L2)
4348 | 
4349 | 	```solidity
4350 | 	pragma solidity ^0.8.0;
4351 | 	```
4352 | 
4353 | - Found in src/Counter.sol [Line: 2](../tests/contract-playground/src/Counter.sol#L2)
4354 | 
4355 | 	```solidity
4356 | 	pragma solidity ^0.8.13;
4357 | 	```
4358 | 
4359 | - Found in src/CrazyPragma.sol [Line: 2](../tests/contract-playground/src/CrazyPragma.sol#L2)
4360 | 
4361 | 	```solidity
4362 | 	pragma solidity >=0.8.19 <0.9.1;
4363 | 	```
4364 | 
4365 | - Found in src/DangerousStrictEquality2.sol [Line: 2](../tests/contract-playground/src/DangerousStrictEquality2.sol#L2)
4366 | 
4367 | 	```solidity
4368 | 	pragma solidity 0.8.20;
4369 | 	```
4370 | 
4371 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 2](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L2)
4372 | 
4373 | 	```solidity
4374 | 	pragma solidity ^0.8;
4375 | 	```
4376 | 
4377 | - Found in src/DeletionNestedMappingStructureContract.sol [Line: 2](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L2)
4378 | 
4379 | 	```solidity
4380 | 	pragma solidity ^0.8.0;
4381 | 	```
4382 | 
4383 | - Found in src/DeprecatedOZFunctions.sol [Line: 2](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L2)
4384 | 
4385 | 	```solidity
4386 | 	pragma solidity 0.8.20;
4387 | 	```
4388 | 
4389 | - Found in src/FunctionInitializingState.sol [Line: 2](../tests/contract-playground/src/FunctionInitializingState.sol#L2)
4390 | 
4391 | 	```solidity
4392 | 	pragma solidity ^0.8.0;
4393 | 	```
4394 | 
4395 | - Found in src/FunctionSignatureCollision.sol [Line: 2](../tests/contract-playground/src/FunctionSignatureCollision.sol#L2)
4396 | 
4397 | 	```solidity
4398 | 	pragma solidity ^0.8.0;
4399 | 	```
4400 | 
4401 | - Found in src/InconsistentUints.sol [Line: 1](../tests/contract-playground/src/InconsistentUints.sol#L1)
4402 | 
4403 | 	```solidity
4404 | 	pragma solidity ^0.8.24;
4405 | 	```
4406 | 
4407 | - Found in src/IncorrectERC20.sol [Line: 2](../tests/contract-playground/src/IncorrectERC20.sol#L2)
4408 | 
4409 | 	```solidity
4410 | 	pragma solidity ^0.8.0;
4411 | 	```
4412 | 
4413 | - Found in src/IncorrectERC721.sol [Line: 2](../tests/contract-playground/src/IncorrectERC721.sol#L2)
4414 | 
4415 | 	```solidity
4416 | 	pragma solidity ^0.8.0;
4417 | 	```
4418 | 
4419 | - Found in src/KeccakContract.sol [Line: 2](../tests/contract-playground/src/KeccakContract.sol#L2)
4420 | 
4421 | 	```solidity
4422 | 	pragma solidity 0.8.20;
4423 | 	```
4424 | 
4425 | - Found in src/MsgValueInLoop.sol [Line: 2](../tests/contract-playground/src/MsgValueInLoop.sol#L2)
4426 | 
4427 | 	```solidity
4428 | 	pragma solidity ^0.8.0;
4429 | 	```
4430 | 
4431 | - Found in src/OnlyLibrary.sol [Line: 2](../tests/contract-playground/src/OnlyLibrary.sol#L2)
4432 | 
4433 | 	```solidity
4434 | 	pragma solidity ^0.8.0;
4435 | 	```
4436 | 
4437 | - Found in src/OutOfOrderRetryable.sol [Line: 2](../tests/contract-playground/src/OutOfOrderRetryable.sol#L2)
4438 | 
4439 | 	```solidity
4440 | 	pragma solidity ^0.8.0;
4441 | 	```
4442 | 
4443 | - Found in src/ReturnBomb.sol [Line: 2](../tests/contract-playground/src/ReturnBomb.sol#L2)
4444 | 
4445 | 	```solidity
4446 | 	pragma solidity 0.8.20;
4447 | 	```
4448 | 
4449 | - Found in src/StateVariables.sol [Line: 2](../tests/contract-playground/src/StateVariables.sol#L2)
4450 | 
4451 | 	```solidity
4452 | 	pragma solidity 0.8.20;
4453 | 	```
4454 | 
4455 | - Found in src/StateVariablesManipulation.sol [Line: 2](../tests/contract-playground/src/StateVariablesManipulation.sol#L2)
4456 | 
4457 | 	```solidity
4458 | 	pragma solidity ^0.8.0;
4459 | 	```
4460 | 
4461 | - Found in src/StorageConditionals.sol [Line: 2](../tests/contract-playground/src/StorageConditionals.sol#L2)
4462 | 
4463 | 	```solidity
4464 | 	pragma solidity 0.8.20;
4465 | 	```
4466 | 
4467 | - Found in src/T11sTranferer.sol [Line: 2](../tests/contract-playground/src/T11sTranferer.sol#L2)
4468 | 
4469 | 	```solidity
4470 | 	pragma solidity 0.8.20;
4471 | 	```
4472 | 
4473 | - Found in src/TautologicalCompare.sol [Line: 2](../tests/contract-playground/src/TautologicalCompare.sol#L2)
4474 | 
4475 | 	```solidity
4476 | 	pragma solidity 0.8.20;
4477 | 	```
4478 | 
4479 | - Found in src/Trump.sol [Line: 16](../tests/contract-playground/src/Trump.sol#L16)
4480 | 
4481 | 	```solidity
4482 | 	pragma solidity 0.8.20;
4483 | 	```
4484 | 
4485 | - Found in src/TxOriginUsedForAuth.sol [Line: 2](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L2)
4486 | 
4487 | 	```solidity
4488 | 	pragma solidity ^0.8.20;
4489 | 	```
4490 | 
4491 | - Found in src/UnsafeERC721Mint.sol [Line: 2](../tests/contract-playground/src/UnsafeERC721Mint.sol#L2)
4492 | 
4493 | 	```solidity
4494 | 	pragma solidity 0.8.20;
4495 | 	```
4496 | 
4497 | - Found in src/UnusedStateVariables.sol [Line: 2](../tests/contract-playground/src/UnusedStateVariables.sol#L2)
4498 | 
4499 | 	```solidity
4500 | 	pragma solidity ^0.8.20;
4501 | 	```
4502 | 
4503 | - Found in src/VoidConstructor.sol [Line: 2](../tests/contract-playground/src/VoidConstructor.sol#L2)
4504 | 
4505 | 	```solidity
4506 | 	pragma solidity ^0.8.0;
4507 | 	```
4508 | 
4509 | - Found in src/WeakRandomness.sol [Line: 2](../tests/contract-playground/src/WeakRandomness.sol#L2)
4510 | 
4511 | 	```solidity
4512 | 	pragma solidity 0.8.20;
4513 | 	```
4514 | 
4515 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L6)
4516 | 
4517 | 	```solidity
4518 | 	pragma solidity ^0.8.18;
4519 | 	```
4520 | 
4521 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L6)
4522 | 
4523 | 	```solidity
4524 | 	pragma solidity >=0.8.0 <0.8.25; 
4525 | 	```
4526 | 
4527 | - Found in src/eth2/DepositContract.sol [Line: 12](../tests/contract-playground/src/eth2/DepositContract.sol#L12)
4528 | 
4529 | 	```solidity
4530 | 	pragma solidity 0.8.20;
4531 | 	```
4532 | 
4533 | - Found in src/inheritance/ExtendedInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L2)
4534 | 
4535 | 	```solidity
4536 | 	pragma solidity 0.8.20;
4537 | 	```
4538 | 
4539 | - Found in src/inheritance/IContractInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/IContractInheritance.sol#L2)
4540 | 
4541 | 	```solidity
4542 | 	pragma solidity >=0.8.0;
4543 | 	```
4544 | 
4545 | - Found in src/inheritance/InheritanceBase.sol [Line: 2](../tests/contract-playground/src/inheritance/InheritanceBase.sol#L2)
4546 | 
4547 | 	```solidity
4548 | 	pragma solidity ^0.8.0;
4549 | 	```
4550 | 
4551 | - Found in src/nested/1/Nested.sol [Line: 5](../tests/contract-playground/src/nested/1/Nested.sol#L5)
4552 | 
4553 | 	```solidity
4554 | 	pragma solidity 0.8.20;
4555 | 	```
4556 | 
4557 | - Found in src/nested/2/Nested.sol [Line: 5](../tests/contract-playground/src/nested/2/Nested.sol#L5)
4558 | 
4559 | 	```solidity
4560 | 	pragma solidity 0.8.20;
4561 | 	```
4562 | 
4563 | - Found in src/nested_mappings/LaterVersion.sol [Line: 2](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L2)
4564 | 
4565 | 	```solidity
4566 | 	pragma solidity ^0.8.0;
4567 | 	```
4568 | 
4569 | - Found in src/parent_chain/ParentChainContract.sol [Line: 2](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L2)
4570 | 
4571 | 	```solidity
4572 | 	pragma solidity 0.8.20;
4573 | 	```
4574 | 
4575 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 2](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L2)
4576 | 
4577 | 	```solidity
4578 | 	pragma solidity 0.8.20;
4579 | 	```
4580 | 
4581 | - Found in src/uniswap/UniswapV3Swapper.sol [Line: 2](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L2)
4582 | 
4583 | 	```solidity
4584 | 	pragma solidity 0.8.20;
4585 | 	```
4586 | 
4587 | </details>
4588 | 
4589 | 
4590 | 
4591 | ## L-16: Modifier Invoked Only Once
4592 | 
4593 | Consider removing the modifier or inlining the logic into the calling function.
4594 | 
4595 | <details><summary>17 Found Instances</summary>
4596 | 
4597 | 
4598 | - Found in src/BuiltinSymbolShadow.sol [Line: 17](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L17)
4599 | 
4600 | 	```solidity
4601 | 	    modifier blockhash() {
4602 | 	```
4603 | 
4604 | - Found in src/CallGraphTests.sol [Line: 10](../tests/contract-playground/src/CallGraphTests.sol#L10)
4605 | 
4606 | 	```solidity
4607 | 	    modifier passThroughNinthFloor1() {
4608 | 	```
4609 | 
4610 | - Found in src/CallGraphTests.sol [Line: 32](../tests/contract-playground/src/CallGraphTests.sol#L32)
4611 | 
4612 | 	```solidity
4613 | 	    modifier passThroughNinthFloor2(address x) {
4614 | 	```
4615 | 
4616 | - Found in src/CallGraphTests.sol [Line: 54](../tests/contract-playground/src/CallGraphTests.sol#L54)
4617 | 
4618 | 	```solidity
4619 | 	    modifier passThroughNinthFloor3(address x) {
4620 | 	```
4621 | 
4622 | - Found in src/DelegateCallWithoutAddressCheck.sol [Line: 23](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L23)
4623 | 
4624 | 	```solidity
4625 | 	    modifier isAllowed(address to) {
4626 | 	```
4627 | 
4628 | - Found in src/InternalFunctions.sol [Line: 18](../tests/contract-playground/src/InternalFunctions.sol#L18)
4629 | 
4630 | 	```solidity
4631 | 	    modifier onlyOwner() {
4632 | 	```
4633 | 
4634 | - Found in src/OnceModifierExample.sol [Line: 6](../tests/contract-playground/src/OnceModifierExample.sol#L6)
4635 | 
4636 | 	```solidity
4637 | 	    modifier onlyOnce() {
4638 | 	```
4639 | 
4640 | - Found in src/SendEtherNoChecks.sol [Line: 16](../tests/contract-playground/src/SendEtherNoChecks.sol#L16)
4641 | 
4642 | 	```solidity
4643 | 	    modifier mod1(address x) {
4644 | 	```
4645 | 
4646 | - Found in src/SendEtherNoChecks.sol [Line: 47](../tests/contract-playground/src/SendEtherNoChecks.sol#L47)
4647 | 
4648 | 	```solidity
4649 | 	    modifier mod1(address x) {
4650 | 	```
4651 | 
4652 | - Found in src/SendEtherNoChecks.sol [Line: 70](../tests/contract-playground/src/SendEtherNoChecks.sol#L70)
4653 | 
4654 | 	```solidity
4655 | 	    modifier mod1(address x) {
4656 | 	```
4657 | 
4658 | - Found in src/SendEtherNoChecks.sol [Line: 93](../tests/contract-playground/src/SendEtherNoChecks.sol#L93)
4659 | 
4660 | 	```solidity
4661 | 	    modifier mod1(address x) {
4662 | 	```
4663 | 
4664 | - Found in src/StateShadowing.sol [Line: 7](../tests/contract-playground/src/StateShadowing.sol#L7)
4665 | 
4666 | 	```solidity
4667 | 	    modifier isOwner(){
4668 | 	```
4669 | 
4670 | - Found in src/Trump.sol [Line: 162](../tests/contract-playground/src/Trump.sol#L162)
4671 | 
4672 | 	```solidity
4673 | 	    modifier lockTheSwap {
4674 | 	```
4675 | 
4676 | - Found in src/UnprotectedInitialize.sol [Line: 15](../tests/contract-playground/src/UnprotectedInitialize.sol#L15)
4677 | 
4678 | 	```solidity
4679 | 	    modifier firstTimeInitializing() {
4680 | 	```
4681 | 
4682 | - Found in src/router/ModifierCalls.sol [Line: 5](../tests/contract-playground/src/router/ModifierCalls.sol#L5)
4683 | 
4684 | 	```solidity
4685 | 	    modifier modify() virtual;
4686 | 	```
4687 | 
4688 | - Found in src/router/ModifierCalls.sol [Line: 31](../tests/contract-playground/src/router/ModifierCalls.sol#L31)
4689 | 
4690 | 	```solidity
4691 | 	    modifier modify() override  {
4692 | 	```
4693 | 
4694 | - Found in src/router/ModifierCalls.sol [Line: 42](../tests/contract-playground/src/router/ModifierCalls.sol#L42)
4695 | 
4696 | 	```solidity
4697 | 	    modifier modify() {
4698 | 	```
4699 | 
4700 | </details>
4701 | 
4702 | 
4703 | 
4704 | ## L-17: Empty Block
4705 | 
4706 | Consider removing empty blocks.
4707 | 
4708 | <details><summary>56 Found Instances</summary>
4709 | 
4710 | 
4711 | - Found in src/AderynIgnoreCustomDetectors.sol [Line: 7](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L7)
4712 | 
4713 | 	```solidity
4714 | 	    function f1() public {
4715 | 	```
4716 | 
4717 | - Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)
4718 | 
4719 | 	```solidity
4720 | 	    function someOtherImportantThing() external nonReentrant onlyOwner {
4721 | 	```
4722 | 
4723 | - Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)
4724 | 
4725 | 	```solidity
4726 | 	    function assert(bool condition) public {}
4727 | 	```
4728 | 
4729 | - Found in src/CacheArrayLength.sol [Line: 17](../tests/contract-playground/src/CacheArrayLength.sol#L17)
4730 | 
4731 | 	```solidity
4732 | 	    function c2() external view {
4733 | 	```
4734 | 
4735 | - Found in src/CacheArrayLength.sol [Line: 42](../tests/contract-playground/src/CacheArrayLength.sol#L42)
4736 | 
4737 | 	```solidity
4738 | 	    function c5() external view {
4739 | 	```
4740 | 
4741 | - Found in src/CallGraphTests.sol [Line: 16](../tests/contract-playground/src/CallGraphTests.sol#L16)
4742 | 
4743 | 	```solidity
4744 | 	    function enterTenthFloor1() external passThroughNinthFloor1() {
4745 | 	```
4746 | 
4747 | - Found in src/CallGraphTests.sol [Line: 38](../tests/contract-playground/src/CallGraphTests.sol#L38)
4748 | 
4749 | 	```solidity
4750 | 	    function enterTenthFloor2(address x) external passThroughNinthFloor2(x) {
4751 | 	```
4752 | 
4753 | - Found in src/ContractWithTodo.sol [Line: 7](../tests/contract-playground/src/ContractWithTodo.sol#L7)
4754 | 
4755 | 	```solidity
4756 | 	    function createTask(string memory _content) private {
4757 | 	```
4758 | 
4759 | - Found in src/ContractWithTodo.sol [Line: 13](../tests/contract-playground/src/ContractWithTodo.sol#L13)
4760 | 
4761 | 	```solidity
4762 | 	    function toggleCompleted(uint _taskId) public {
4763 | 	```
4764 | 
4765 | - Found in src/EmptyBlocks.sol [Line: 30](../tests/contract-playground/src/EmptyBlocks.sol#L30)
4766 | 
4767 | 	```solidity
4768 | 	        {
4769 | 	```
4770 | 
4771 | - Found in src/EmptyBlocks.sol [Line: 38](../tests/contract-playground/src/EmptyBlocks.sol#L38)
4772 | 
4773 | 	```solidity
4774 | 	        {
4775 | 	```
4776 | 
4777 | - Found in src/EmptyBlocks.sol [Line: 49](../tests/contract-playground/src/EmptyBlocks.sol#L49)
4778 | 
4779 | 	```solidity
4780 | 	        {
4781 | 	```
4782 | 
4783 | - Found in src/EmptyBlocks.sol [Line: 63](../tests/contract-playground/src/EmptyBlocks.sol#L63)
4784 | 
4785 | 	```solidity
4786 | 	    function emptyFunction() external {
4787 | 	```
4788 | 
4789 | - Found in src/EmptyBlocks.sol [Line: 67](../tests/contract-playground/src/EmptyBlocks.sol#L67)
4790 | 
4791 | 	```solidity
4792 | 	    function emptyFunctionWithComment() external {
4793 | 	```
4794 | 
4795 | - Found in src/EmptyBlocks.sol [Line: 73](../tests/contract-playground/src/EmptyBlocks.sol#L73)
4796 | 
4797 | 	```solidity
4798 | 	    function emptyBlockInsideNormalFunction() external {
4799 | 	```
4800 | 
4801 | - Found in src/EmptyBlocks.sol [Line: 81](../tests/contract-playground/src/EmptyBlocks.sol#L81)
4802 | 
4803 | 	```solidity
4804 | 	    function emptyBlockWithCommentInsideNormalFunction() external {
4805 | 	```
4806 | 
4807 | - Found in src/FunctionSignatureCollision.sol [Line: 7](../tests/contract-playground/src/FunctionSignatureCollision.sol#L7)
4808 | 
4809 | 	```solidity
4810 | 	    function withdraw(uint256) external {
4811 | 	```
4812 | 
4813 | - Found in src/FunctionSignatureCollision.sol [Line: 13](../tests/contract-playground/src/FunctionSignatureCollision.sol#L13)
4814 | 
4815 | 	```solidity
4816 | 	    function OwnerTransferV7b711143(uint256) external {
4817 | 	```
4818 | 
4819 | - Found in src/OnceModifierExample.sol [Line: 10](../tests/contract-playground/src/OnceModifierExample.sol#L10)
4820 | 
4821 | 	```solidity
4822 | 	    function perform() external onlyOnce {
4823 | 	```
4824 | 
4825 | - Found in src/OutOfOrderRetryable.sol [Line: 193](../tests/contract-playground/src/OutOfOrderRetryable.sol#L193)
4826 | 
4827 | 	```solidity
4828 | 	    function _free_rewards(address user) internal {
4829 | 	```
4830 | 
4831 | - Found in src/SendEtherNoChecks.sol [Line: 53](../tests/contract-playground/src/SendEtherNoChecks.sol#L53)
4832 | 
4833 | 	```solidity
4834 | 	    function func1(address x) external mod1(x) {
4835 | 	```
4836 | 
4837 | - Found in src/SendEtherNoChecks.sol [Line: 77](../tests/contract-playground/src/SendEtherNoChecks.sol#L77)
4838 | 
4839 | 	```solidity
4840 | 	    function func1(address x) external mod1(x) {
4841 | 	```
4842 | 
4843 | - Found in src/SendEtherNoChecks.sol [Line: 99](../tests/contract-playground/src/SendEtherNoChecks.sol#L99)
4844 | 
4845 | 	```solidity
4846 | 	    function func1(address x) external mod1(x) {
4847 | 	```
4848 | 
4849 | - Found in src/TautologyOrContradiction.sol [Line: 9](../tests/contract-playground/src/TautologyOrContradiction.sol#L9)
4850 | 
4851 | 	```solidity
4852 | 	    function makeUselessComparisons() external view {
4853 | 	```
4854 | 
4855 | - Found in src/UncheckedSend.sol [Line: 27](../tests/contract-playground/src/UncheckedSend.sol#L27)
4856 | 
4857 | 	```solidity
4858 | 	    function doSomething(bool success) internal pure {
4859 | 	```
4860 | 
4861 | - Found in src/UnprotectedInitialize.sol [Line: 43](../tests/contract-playground/src/UnprotectedInitialize.sol#L43)
4862 | 
4863 | 	```solidity
4864 | 	    function initializeWithModifierNamedInitiliazer() external initializer {
4865 | 	```
4866 | 
4867 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 11](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L11)
4868 | 
4869 | 	```solidity
4870 | 	    function onlyOwnerFunction() external onlyOwner {
4871 | 	```
4872 | 
4873 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 30](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L30)
4874 | 
4875 | 	```solidity
4876 | 	    function transferOwnershipFunction(address newOwner) external {
4877 | 	```
4878 | 
4879 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 38](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L38)
4880 | 
4881 | 	```solidity
4882 | 	    function onlyRoleFunction() external onlyRole(ROLE) {
4883 | 	```
4884 | 
4885 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 61](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L61)
4886 | 
4887 | 	```solidity
4888 | 	    function grantRoleFunction(address account) external {
4889 | 	```
4890 | 
4891 | - Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 85](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L85)
4892 | 
4893 | 	```solidity
4894 | 	    function transferOwnershipFunction(address newOwner) external {
4895 | 	```
4896 | 
4897 | - Found in src/parent_chain/ParentChainContract.sol [Line: 11](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L11)
4898 | 
4899 | 	```solidity
4900 | 	    function setNumber(uint256 newNumber) public {
4901 | 	```
4902 | 
4903 | - Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)
4904 | 
4905 | 	```solidity
4906 | 	    function someOtherImportantThing() external nonReentrant onlyOwner {
4907 | 	```
4908 | 
4909 | - Found in src/parent_chain/ParentChainContract.sol [Line: 40](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L40)
4910 | 
4911 | 	```solidity
4912 | 	    function setOwner(address _owner) external {
4913 | 	```
4914 | 
4915 | - Found in src/parent_chain/ParentChainContract.sol [Line: 44](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L44)
4916 | 
4917 | 	```solidity
4918 | 	    function someOtherImportantThing() external {
4919 | 	```
4920 | 
4921 | - Found in src/router/ExternalCalls.sol [Line: 13](../tests/contract-playground/src/router/ExternalCalls.sol#L13)
4922 | 
4923 | 	```solidity
4924 | 	    function abc() external virtual returns (uint256) {}
4925 | 	```
4926 | 
4927 | - Found in src/router/ExternalCalls.sol [Line: 17](../tests/contract-playground/src/router/ExternalCalls.sol#L17)
4928 | 
4929 | 	```solidity
4930 | 	    function abc() public override returns (uint256) {}
4931 | 	```
4932 | 
4933 | - Found in src/router/InternalCalls.sol [Line: 8](../tests/contract-playground/src/router/InternalCalls.sol#L8)
4934 | 
4935 | 	```solidity
4936 | 	    function help1() private {}
4937 | 	```
4938 | 
4939 | - Found in src/router/InternalCalls.sol [Line: 23](../tests/contract-playground/src/router/InternalCalls.sol#L23)
4940 | 
4941 | 	```solidity
4942 | 	    function help2() internal virtual {}
4943 | 	```
4944 | 
4945 | - Found in src/router/InternalCalls.sol [Line: 38](../tests/contract-playground/src/router/InternalCalls.sol#L38)
4946 | 
4947 | 	```solidity
4948 | 	    function help2() internal override {}
4949 | 	```
4950 | 
4951 | - Found in src/router/InternalCalls.sol [Line: 40](../tests/contract-playground/src/router/InternalCalls.sol#L40)
4952 | 
4953 | 	```solidity
4954 | 	    function g(Orange memory f) public virtual {}
4955 | 	```
4956 | 
4957 | - Found in src/router/InternalCalls.sol [Line: 44](../tests/contract-playground/src/router/InternalCalls.sol#L44)
4958 | 
4959 | 	```solidity
4960 | 	    function g(Basic2.Orange memory f) public override {}
4961 | 	```
4962 | 
4963 | - Found in src/router/InternalCalls.sol [Line: 54](../tests/contract-playground/src/router/InternalCalls.sol#L54)
4964 | 
4965 | 	```solidity
4966 | 	    function live() public virtual {}
4967 | 	```
4968 | 
4969 | - Found in src/router/InternalCalls.sol [Line: 84](../tests/contract-playground/src/router/InternalCalls.sol#L84)
4970 | 
4971 | 	```solidity
4972 | 	    function live() public virtual override {}
4973 | 	```
4974 | 
4975 | - Found in src/router/InternalCalls.sol [Line: 96](../tests/contract-playground/src/router/InternalCalls.sol#L96)
4976 | 
4977 | 	```solidity
4978 | 	    function aux1(uint256 a) public {}
4979 | 	```
4980 | 
4981 | - Found in src/router/InternalCalls.sol [Line: 98](../tests/contract-playground/src/router/InternalCalls.sol#L98)
4982 | 
4983 | 	```solidity
4984 | 	    function aux2(uint256 a) internal {}
4985 | 	```
4986 | 
4987 | - Found in src/router/InternalCalls.sol [Line: 111](../tests/contract-playground/src/router/InternalCalls.sol#L111)
4988 | 
4989 | 	```solidity
4990 | 	    function ext1(uint256 a) external {}
4991 | 	```
4992 | 
4993 | - Found in src/router/InternalCalls.sol [Line: 113](../tests/contract-playground/src/router/InternalCalls.sol#L113)
4994 | 
4995 | 	```solidity
4996 | 	    function ext2(uint256 a) public {}
4997 | 	```
4998 | 
4999 | - Found in src/router/InternalCalls.sol [Line: 136](../tests/contract-playground/src/router/InternalCalls.sol#L136)
5000 | 
5001 | 	```solidity
5002 | 	    function priv() private {}
5003 | 	```
5004 | 
5005 | - Found in src/router/InternalCalls.sol [Line: 142](../tests/contract-playground/src/router/InternalCalls.sol#L142)
5006 | 
5007 | 	```solidity
5008 | 	    function d() external virtual returns (uint256, bool, uint256) {}
5009 | 	```
5010 | 
5011 | - Found in src/router/InternalCalls.sol [Line: 167](../tests/contract-playground/src/router/InternalCalls.sol#L167)
5012 | 
5013 | 	```solidity
5014 | 	    function free(uint256 x) external {}
5015 | 	```
5016 | 
5017 | - Found in src/router/InternalCalls.sol [Line: 175](../tests/contract-playground/src/router/InternalCalls.sol#L175)
5018 | 
5019 | 	```solidity
5020 | 	    function free(string memory x) public {}
5021 | 	```
5022 | 
5023 | - Found in src/router/ModifierCalls.sol [Line: 7](../tests/contract-playground/src/router/ModifierCalls.sol#L7)
5024 | 
5025 | 	```solidity
5026 | 	    function geez() public modify {
5027 | 	```
5028 | 
5029 | - Found in src/router/ModifierCalls.sol [Line: 22](../tests/contract-playground/src/router/ModifierCalls.sol#L22)
5030 | 
5031 | 	```solidity
5032 | 	    function tree() public modify {
5033 | 	```
5034 | 
5035 | - Found in src/router/ModifierCalls.sol [Line: 46](../tests/contract-playground/src/router/ModifierCalls.sol#L46)
5036 | 
5037 | 	```solidity
5038 | 	    function show(uint256 a) internal modify {
5039 | 	```
5040 | 
5041 | - Found in src/router/VarOverridesFunction.sol [Line: 5](../tests/contract-playground/src/router/VarOverridesFunction.sol#L5)
5042 | 
5043 | 	```solidity
5044 | 	    function mercy() external virtual returns (uint256) {
5045 | 	```
5046 | 
5047 | </details>
5048 | 
5049 | 
5050 | 
5051 | ## L-18: Large Numeric Literal
5052 | 
5053 | Large literal values multiples of 10000 can be replaced with scientific notation.Use `e` notation, for example: `1e18`, instead of its full numeric value.
5054 | 
5055 | <details><summary>27 Found Instances</summary>
5056 | 
5057 | 
5058 | - Found in src/HugeConstants.sol [Line: 6](../tests/contract-playground/src/HugeConstants.sol#L6)
5059 | 
5060 | 	```solidity
5061 | 	    uint256 constant public HUGE_NUMBER_1 = 100000000000000000000000;
5062 | 	```
5063 | 
5064 | - Found in src/HugeConstants.sol [Line: 7](../tests/contract-playground/src/HugeConstants.sol#L7)
5065 | 
5066 | 	```solidity
5067 | 	    uint256 constant public HUGE_NUMBER_2 = 10000000000000000000000;
5068 | 	```
5069 | 
5070 | - Found in src/HugeConstants.sol [Line: 8](../tests/contract-playground/src/HugeConstants.sol#L8)
5071 | 
5072 | 	```solidity
5073 | 	    uint256 constant public HUGE_NUMBER_3 = 1000000000000000000000;
5074 | 	```
5075 | 
5076 | - Found in src/HugeConstants.sol [Line: 9](../tests/contract-playground/src/HugeConstants.sol#L9)
5077 | 
5078 | 	```solidity
5079 | 	    uint256 constant public HUGE_NUMBER_4 = 100000000000000000000;
5080 | 	```
5081 | 
5082 | - Found in src/HugeConstants.sol [Line: 10](../tests/contract-playground/src/HugeConstants.sol#L10)
5083 | 
5084 | 	```solidity
5085 | 	    uint256 constant public HUGE_NUMBER_5 = 10000000000000000000;
5086 | 	```
5087 | 
5088 | - Found in src/HugeConstants.sol [Line: 11](../tests/contract-playground/src/HugeConstants.sol#L11)
5089 | 
5090 | 	```solidity
5091 | 	    uint256 constant public HUGE_NUMBER_6 = 1000000000000000000;
5092 | 	```
5093 | 
5094 | - Found in src/HugeConstants.sol [Line: 12](../tests/contract-playground/src/HugeConstants.sol#L12)
5095 | 
5096 | 	```solidity
5097 | 	    uint256 constant public HUGE_NUMBER_7 = 100000000000000000;
5098 | 	```
5099 | 
5100 | - Found in src/HugeConstants.sol [Line: 13](../tests/contract-playground/src/HugeConstants.sol#L13)
5101 | 
5102 | 	```solidity
5103 | 	    uint256 constant public HUGE_NUMBER_8 = 10000000000000000;
5104 | 	```
5105 | 
5106 | - Found in src/HugeConstants.sol [Line: 14](../tests/contract-playground/src/HugeConstants.sol#L14)
5107 | 
5108 | 	```solidity
5109 | 	    uint256 constant public HUGE_NUMBER_9 = 1000000000000000;
5110 | 	```
5111 | 
5112 | - Found in src/HugeConstants.sol [Line: 15](../tests/contract-playground/src/HugeConstants.sol#L15)
5113 | 
5114 | 	```solidity
5115 | 	    uint256 constant public HUGE_NUMBER_10 = 100000000000000;
5116 | 	```
5117 | 
5118 | - Found in src/HugeConstants.sol [Line: 16](../tests/contract-playground/src/HugeConstants.sol#L16)
5119 | 
5120 | 	```solidity
5121 | 	    uint256 constant public HUGE_NUMBER_11 = 10000000000000;
5122 | 	```
5123 | 
5124 | - Found in src/HugeConstants.sol [Line: 17](../tests/contract-playground/src/HugeConstants.sol#L17)
5125 | 
5126 | 	```solidity
5127 | 	    uint256 constant public HUGE_NUMBER_12 = 1000000000000;
5128 | 	```
5129 | 
5130 | - Found in src/HugeConstants.sol [Line: 18](../tests/contract-playground/src/HugeConstants.sol#L18)
5131 | 
5132 | 	```solidity
5133 | 	    uint256 constant public HUGE_NUMBER_13 = 100000000000;
5134 | 	```
5135 | 
5136 | - Found in src/HugeConstants.sol [Line: 19](../tests/contract-playground/src/HugeConstants.sol#L19)
5137 | 
5138 | 	```solidity
5139 | 	    uint256 constant public HUGE_NUMBER_14 = 10000000000;
5140 | 	```
5141 | 
5142 | - Found in src/HugeConstants.sol [Line: 20](../tests/contract-playground/src/HugeConstants.sol#L20)
5143 | 
5144 | 	```solidity
5145 | 	    uint256 constant public HUGE_NUMBER_15 = 1000000000;
5146 | 	```
5147 | 
5148 | - Found in src/HugeConstants.sol [Line: 21](../tests/contract-playground/src/HugeConstants.sol#L21)
5149 | 
5150 | 	```solidity
5151 | 	    uint256 constant public HUGE_NUMBER_16 = 100000000;
5152 | 	```
5153 | 
5154 | - Found in src/HugeConstants.sol [Line: 22](../tests/contract-playground/src/HugeConstants.sol#L22)
5155 | 
5156 | 	```solidity
5157 | 	    uint256 constant public HUGE_NUMBER_17 = 10000000;
5158 | 	```
5159 | 
5160 | - Found in src/HugeConstants.sol [Line: 23](../tests/contract-playground/src/HugeConstants.sol#L23)
5161 | 
5162 | 	```solidity
5163 | 	    uint256 constant public HUGE_NUMBER_18 = 1000000;
5164 | 	```
5165 | 
5166 | - Found in src/HugeConstants.sol [Line: 24](../tests/contract-playground/src/HugeConstants.sol#L24)
5167 | 
5168 | 	```solidity
5169 | 	    uint256 constant public HUGE_NUMBER_19 = 100000;
5170 | 	```
5171 | 
5172 | - Found in src/HugeConstants.sol [Line: 25](../tests/contract-playground/src/HugeConstants.sol#L25)
5173 | 
5174 | 	```solidity
5175 | 	    uint256 constant public HUGE_NUMBER_20 = 10000;
5176 | 	```
5177 | 
5178 | - Found in src/HugeConstants.sol [Line: 31](../tests/contract-playground/src/HugeConstants.sol#L31)
5179 | 
5180 | 	```solidity
5181 | 	    uint256 constant public HUGE_NUMBER_24_UNDERSCORES = 1_000_000_000_000_000_000_000;
5182 | 	```
5183 | 
5184 | - Found in src/HugeConstants.sol [Line: 32](../tests/contract-playground/src/HugeConstants.sol#L32)
5185 | 
5186 | 	```solidity
5187 | 	    uint256 constant public HUGE_NUMBER_25_UNDERSCORES = 10_000;
5188 | 	```
5189 | 
5190 | - Found in src/IncorrectERC20.sol [Line: 8](../tests/contract-playground/src/IncorrectERC20.sol#L8)
5191 | 
5192 | 	```solidity
5193 | 	    uint256 public totalSupply = 1000000;
5194 | 	```
5195 | 
5196 | - Found in src/IncorrectERC20.sol [Line: 51](../tests/contract-playground/src/IncorrectERC20.sol#L51)
5197 | 
5198 | 	```solidity
5199 | 	    uint256 private _totalSupply = 1000000 * 10 ** uint(decimals);
5200 | 	```
5201 | 
5202 | - Found in src/Trump.sol [Line: 145](../tests/contract-playground/src/Trump.sol#L145)
5203 | 
5204 | 	```solidity
5205 | 	    uint256 private constant _tTotal = 47000000 * 10**_decimals;
5206 | 	```
5207 | 
5208 | - Found in src/Trump.sol [Line: 148](../tests/contract-playground/src/Trump.sol#L148)
5209 | 
5210 | 	```solidity
5211 | 	    uint256 public _maxTxAmount =   470000 * 10**_decimals;
5212 | 	```
5213 | 
5214 | - Found in src/Trump.sol [Line: 151](../tests/contract-playground/src/Trump.sol#L151)
5215 | 
5216 | 	```solidity
5217 | 	    uint256 public _maxTaxSwap= 470000 * 10**_decimals;
5218 | 	```
5219 | 
5220 | </details>
5221 | 
5222 | 
5223 | 
5224 | ## L-19: Internal Function Used Only Once
5225 | 
5226 | Instead of separating the logic into a separate function, consider inlining the logic into the calling function. This can reduce the number of function calls and improve readability.
5227 | 
5228 | <details><summary>22 Found Instances</summary>
5229 | 
5230 | 
5231 | - Found in src/CallGraphTests.sol [Line: 6](../tests/contract-playground/src/CallGraphTests.sol#L6)
5232 | 
5233 | 	```solidity
5234 | 	    function visitEighthFloor1() internal {
5235 | 	```
5236 | 
5237 | - Found in src/CallGraphTests.sol [Line: 25](../tests/contract-playground/src/CallGraphTests.sol#L25)
5238 | 
5239 | 	```solidity
5240 | 	    function visitEighthFloor2(address x) internal {
5241 | 	```
5242 | 
5243 | - Found in src/CallGraphTests.sol [Line: 47](../tests/contract-playground/src/CallGraphTests.sol#L47)
5244 | 
5245 | 	```solidity
5246 | 	    function visitEighthFloor3(address x) internal {
5247 | 	```
5248 | 
5249 | - Found in src/CallGraphTests.sol [Line: 64](../tests/contract-playground/src/CallGraphTests.sol#L64)
5250 | 
5251 | 	```solidity
5252 | 	    function visitSeventhFloor3() internal {
5253 | 	```
5254 | 
5255 | - Found in src/ConstantFuncsAssembly.sol [Line: 26](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L26)
5256 | 
5257 | 	```solidity
5258 | 	    function useAssembly() internal pure returns (uint256) {
5259 | 	```
5260 | 
5261 | - Found in src/InternalFunctions.sol [Line: 28](../tests/contract-playground/src/InternalFunctions.sol#L28)
5262 | 
5263 | 	```solidity
5264 | 	    function internalSet2(uint256 _newValue) internal {
5265 | 	```
5266 | 
5267 | - Found in src/MsgValueInLoop.sol [Line: 43](../tests/contract-playground/src/MsgValueInLoop.sol#L43)
5268 | 
5269 | 	```solidity
5270 | 	    function addToBal(address[] memory receivers, uint256 index) internal {
5271 | 	```
5272 | 
5273 | - Found in src/MsgValueInLoop.sol [Line: 60](../tests/contract-playground/src/MsgValueInLoop.sol#L60)
5274 | 
5275 | 	```solidity
5276 | 	    function addToBal(address[] memory receivers, uint256 index) internal {
5277 | 	```
5278 | 
5279 | - Found in src/MsgValueInLoop.sol [Line: 77](../tests/contract-playground/src/MsgValueInLoop.sol#L77)
5280 | 
5281 | 	```solidity
5282 | 	    function addToBal(address[] memory receivers, uint256 index) internal {
5283 | 	```
5284 | 
5285 | - Found in src/SendEtherNoChecks.sol [Line: 9](../tests/contract-playground/src/SendEtherNoChecks.sol#L9)
5286 | 
5287 | 	```solidity
5288 | 	    function callAndSendNativeEth(address x) internal {
5289 | 	```
5290 | 
5291 | - Found in src/SendEtherNoChecks.sol [Line: 26](../tests/contract-playground/src/SendEtherNoChecks.sol#L26)
5292 | 
5293 | 	```solidity
5294 | 	    function func2() internal view {
5295 | 	```
5296 | 
5297 | - Found in src/SendEtherNoChecks.sol [Line: 40](../tests/contract-playground/src/SendEtherNoChecks.sol#L40)
5298 | 
5299 | 	```solidity
5300 | 	    function callAndSendNativeEth(address x) internal {
5301 | 	```
5302 | 
5303 | - Found in src/SendEtherNoChecks.sol [Line: 66](../tests/contract-playground/src/SendEtherNoChecks.sol#L66)
5304 | 
5305 | 	```solidity
5306 | 	    function transferBalance(address x) internal {
5307 | 	```
5308 | 
5309 | - Found in src/SendEtherNoChecks.sol [Line: 88](../tests/contract-playground/src/SendEtherNoChecks.sol#L88)
5310 | 
5311 | 	```solidity
5312 | 	    function sendBalance(address x) internal {
5313 | 	```
5314 | 
5315 | - Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 26](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L26)
5316 | 
5317 | 	```solidity
5318 | 	    function callSecretFunc() internal {
5319 | 	```
5320 | 
5321 | - Found in src/StorageParameters.sol [Line: 17](../tests/contract-playground/src/StorageParameters.sol#L17)
5322 | 
5323 | 	```solidity
5324 | 	    function editStorage(uint[1] storage arr) internal {
5325 | 	```
5326 | 
5327 | - Found in src/Trump.sol [Line: 46](../tests/contract-playground/src/Trump.sol#L46)
5328 | 
5329 | 	```solidity
5330 | 	    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
5331 | 	```
5332 | 
5333 | - Found in src/Trump.sol [Line: 65](../tests/contract-playground/src/Trump.sol#L65)
5334 | 
5335 | 	```solidity
5336 | 	    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
5337 | 	```
5338 | 
5339 | - Found in src/UncheckedSend.sol [Line: 27](../tests/contract-playground/src/UncheckedSend.sol#L27)
5340 | 
5341 | 	```solidity
5342 | 	    function doSomething(bool success) internal pure {
5343 | 	```
5344 | 
5345 | - Found in src/router/InternalCalls.sol [Line: 18](../tests/contract-playground/src/router/InternalCalls.sol#L18)
5346 | 
5347 | 	```solidity
5348 | 	    function help1() internal virtual {
5349 | 	```
5350 | 
5351 | - Found in src/router/InternalCalls.sol [Line: 23](../tests/contract-playground/src/router/InternalCalls.sol#L23)
5352 | 
5353 | 	```solidity
5354 | 	    function help2() internal virtual {}
5355 | 	```
5356 | 
5357 | - Found in src/router/InternalCalls.sol [Line: 38](../tests/contract-playground/src/router/InternalCalls.sol#L38)
5358 | 
5359 | 	```solidity
5360 | 	    function help2() internal override {}
5361 | 	```
5362 | 
5363 | </details>
5364 | 
5365 | 
5366 | 
5367 | ## L-20: Contract has TODO Comments
5368 | 
5369 | Contract contains comments with TODOS. Consider implementing or removing them.
5370 | 
5371 | <details><summary>3 Found Instances</summary>
5372 | 
5373 | 
5374 | - Found in src/ContractWithTodo.sol [Line: 4](../tests/contract-playground/src/ContractWithTodo.sol#L4)
5375 | 
5376 | 	```solidity
5377 | 	contract TodoList {
5378 | 	```
5379 | 
5380 | - Found in src/Counter.sol [Line: 4](../tests/contract-playground/src/Counter.sol#L4)
5381 | 
5382 | 	```solidity
5383 | 	contract Counter {
5384 | 	```
5385 | 
5386 | - Found in src/TautologicalCompare.sol [Line: 4](../tests/contract-playground/src/TautologicalCompare.sol#L4)
5387 | 
5388 | 	```solidity
5389 | 	contract TautologicalCompare {
5390 | 	```
5391 | 
5392 | </details>
5393 | 
5394 | 
5395 | 
5396 | ## L-21: Inconsistent uint256/uint (or) int256/int types
5397 | 
5398 | Inconsistency in declaring uint256/uint (or) int256/int variables within a contract. Use explicit size declarations (uint256 or int256). Consider keeping the naming convention consistent in a given contract. Explicit size declarations are preferred (uint256, int256) over implicit ones (uint, int) to avoid confusion.
5399 | 
5400 | <details><summary>29 Found Instances</summary>
5401 | 
5402 | 
5403 | - Found in src/Casting.sol [Line: 38](../tests/contract-playground/src/Casting.sol#L38)
5404 | 
5405 | 	```solidity
5406 | 	        uint unspecificUint = 0x1234567890abcdef;
5407 | 	```
5408 | 
5409 | - Found in src/Casting.sol [Line: 76](../tests/contract-playground/src/Casting.sol#L76)
5410 | 
5411 | 	```solidity
5412 | 	        int unspecificInt = -0x1234567890abcdef;
5413 | 	```
5414 | 
5415 | - Found in src/InconsistentUints.sol [Line: 5](../tests/contract-playground/src/InconsistentUints.sol#L5)
5416 | 
5417 | 	```solidity
5418 | 	    uint public uintVariable; // 1
5419 | 	```
5420 | 
5421 | - Found in src/InconsistentUints.sol [Line: 7](../tests/contract-playground/src/InconsistentUints.sol#L7)
5422 | 
5423 | 	```solidity
5424 | 	    int public intVariable; // 1
5425 | 	```
5426 | 
5427 | - Found in src/InconsistentUints.sol [Line: 11](../tests/contract-playground/src/InconsistentUints.sol#L11)
5428 | 
5429 | 	```solidity
5430 | 	        uint personUint; // 2
5431 | 	```
5432 | 
5433 | - Found in src/InconsistentUints.sol [Line: 12](../tests/contract-playground/src/InconsistentUints.sol#L12)
5434 | 
5435 | 	```solidity
5436 | 	        mapping (uint => uint256) personMap; // 3 2
5437 | 	```
5438 | 
5439 | - Found in src/InconsistentUints.sol [Line: 15](../tests/contract-playground/src/InconsistentUints.sol#L15)
5440 | 
5441 | 	```solidity
5442 | 	    uint[] public uintArray; // 4
5443 | 	```
5444 | 
5445 | - Found in src/InconsistentUints.sol [Line: 16](../tests/contract-playground/src/InconsistentUints.sol#L16)
5446 | 
5447 | 	```solidity
5448 | 	    mapping(uint256 => uint other) u2uMapping; // 5 3
5449 | 	```
5450 | 
5451 | - Found in src/InconsistentUints.sol [Line: 19](../tests/contract-playground/src/InconsistentUints.sol#L19)
5452 | 
5453 | 	```solidity
5454 | 	    constructor(uint _uintInitial, uint256 _uint256Initial) { // 6 4
5455 | 	```
5456 | 
5457 | - Found in src/StateVariablesChangesWithoutEvents.sol [Line: 115](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L115)
5458 | 
5459 | 	```solidity
5460 | 	    ) external pure returns (uint) {
5461 | 	```
5462 | 
5463 | - Found in src/TautologicalCompare.sol [Line: 11](../tests/contract-playground/src/TautologicalCompare.sol#L11)
5464 | 
5465 | 	```solidity
5466 | 	    function check(uint a) external pure returns (bool) {
5467 | 	```
5468 | 
5469 | - Found in src/TautologyOrContradiction.sol [Line: 6](../tests/contract-playground/src/TautologyOrContradiction.sol#L6)
5470 | 
5471 | 	```solidity
5472 | 	    uint x;
5473 | 	```
5474 | 
5475 | - Found in src/Trump.sol [Line: 159](../tests/contract-playground/src/Trump.sol#L159)
5476 | 
5477 | 	```solidity
5478 | 	    event MaxTxAmountUpdated(uint _maxTxAmount);
5479 | 	```
5480 | 
5481 | - Found in src/UninitializedLocalVariables.sol [Line: 9](../tests/contract-playground/src/UninitializedLocalVariables.sol#L9)
5482 | 
5483 | 	```solidity
5484 | 	        uint uninitializedUint;
5485 | 	```
5486 | 
5487 | - Found in src/UninitializedLocalVariables.sol [Line: 15](../tests/contract-playground/src/UninitializedLocalVariables.sol#L15)
5488 | 
5489 | 	```solidity
5490 | 	        uint[1] memory uninitializedUintArray;
5491 | 	```
5492 | 
5493 | - Found in src/UninitializedLocalVariables.sol [Line: 25](../tests/contract-playground/src/UninitializedLocalVariables.sol#L25)
5494 | 
5495 | 	```solidity
5496 | 	        uint initializedUint = 1;
5497 | 	```
5498 | 
5499 | - Found in src/UninitializedLocalVariables.sol [Line: 31](../tests/contract-playground/src/UninitializedLocalVariables.sol#L31)
5500 | 
5501 | 	```solidity
5502 | 	        uint[1] memory initializedUintArray = [uint(2)];
5503 | 	```
5504 | 
5505 | - Found in src/UninitializedLocalVariables.sol [Line: 43](../tests/contract-playground/src/UninitializedLocalVariables.sol#L43)
5506 | 
5507 | 	```solidity
5508 | 	        uint delayedUint;
5509 | 	```
5510 | 
5511 | - Found in src/UninitializedLocalVariables.sol [Line: 49](../tests/contract-playground/src/UninitializedLocalVariables.sol#L49)
5512 | 
5513 | 	```solidity
5514 | 	        uint[1] memory delayedUintArray;
5515 | 	```
5516 | 
5517 | - Found in src/eth2/DepositContract.sol [Line: 59](../tests/contract-playground/src/eth2/DepositContract.sol#L59)
5518 | 
5519 | 	```solidity
5520 | 	    uint constant DEPOSIT_CONTRACT_TREE_DEPTH = 32;
5521 | 	```
5522 | 
5523 | - Found in src/eth2/DepositContract.sol [Line: 61](../tests/contract-playground/src/eth2/DepositContract.sol#L61)
5524 | 
5525 | 	```solidity
5526 | 	    uint constant MAX_DEPOSIT_COUNT = 2**DEPOSIT_CONTRACT_TREE_DEPTH - 1;
5527 | 	```
5528 | 
5529 | - Found in src/eth2/DepositContract.sol [Line: 70](../tests/contract-playground/src/eth2/DepositContract.sol#L70)
5530 | 
5531 | 	```solidity
5532 | 	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH - 1; height++)
5533 | 	```
5534 | 
5535 | - Found in src/eth2/DepositContract.sol [Line: 76](../tests/contract-playground/src/eth2/DepositContract.sol#L76)
5536 | 
5537 | 	```solidity
5538 | 	        uint size = deposit_count;
5539 | 	```
5540 | 
5541 | - Found in src/eth2/DepositContract.sol [Line: 77](../tests/contract-playground/src/eth2/DepositContract.sol#L77)
5542 | 
5543 | 	```solidity
5544 | 	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
5545 | 	```
5546 | 
5547 | - Found in src/eth2/DepositContract.sol [Line: 103](../tests/contract-playground/src/eth2/DepositContract.sol#L103)
5548 | 
5549 | 	```solidity
5550 | 	        uint deposit_amount = msg.value / 1 gwei;
5551 | 	```
5552 | 
5553 | - Found in src/eth2/DepositContract.sol [Line: 133](../tests/contract-playground/src/eth2/DepositContract.sol#L133)
5554 | 
5555 | 	```solidity
5556 | 	        uint size = deposit_count;
5557 | 	```
5558 | 
5559 | - Found in src/eth2/DepositContract.sol [Line: 134](../tests/contract-playground/src/eth2/DepositContract.sol#L134)
5560 | 
5561 | 	```solidity
5562 | 	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
5563 | 	```
5564 | 
5565 | - Found in src/nested_mappings/LaterVersion.sol [Line: 8](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L8)
5566 | 
5567 | 	```solidity
5568 | 	        uint dummy;
5569 | 	```
5570 | 
5571 | - Found in src/nested_mappings/NestedMappings.sol [Line: 8](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L8)
5572 | 
5573 | 	```solidity
5574 | 	        uint dummy;
5575 | 	```
5576 | 
5577 | </details>
5578 | 
5579 | 
5580 | 
5581 | ## L-22: Unused Error
5582 | 
5583 | Consider using or removing the unused error.
5584 | 
5585 | <details><summary>3 Found Instances</summary>
5586 | 
5587 | 
5588 | - Found in src/UnusedError.sol [Line: 5](../tests/contract-playground/src/UnusedError.sol#L5)
5589 | 
5590 | 	```solidity
5591 | 	    error UnusedLibraryError();
5592 | 	```
5593 | 
5594 | - Found in src/UnusedError.sol [Line: 14](../tests/contract-playground/src/UnusedError.sol#L14)
5595 | 
5596 | 	```solidity
5597 | 	    error UnusedError1(address account);
5598 | 	```
5599 | 
5600 | - Found in src/WrongOrderOfLayout.sol [Line: 13](../tests/contract-playground/src/WrongOrderOfLayout.sol#L13)
5601 | 
5602 | 	```solidity
5603 | 	    error DivideByZero();
5604 | 	```
5605 | 
5606 | </details>
5607 | 
5608 | 
5609 | 
5610 | ## L-23: Loop Contains `require`/`revert`
5611 | 
5612 | Avoid `require` / `revert` statements in a loop because a single bad item can cause the whole transaction to fail. It's better to forgive on fail and return failed elements post processing of the loop
5613 | 
5614 | <details><summary>2 Found Instances</summary>
5615 | 
5616 | 
5617 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)
5618 | 
5619 | 	```solidity
5620 | 	        for (uint256 id = 0; id < 10; ++id) {
5621 | 	```
5622 | 
5623 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)
5624 | 
5625 | 	```solidity
5626 | 	        for (uint256 id = 0; id < 10; ++id) {
5627 | 	```
5628 | 
5629 | </details>
5630 | 
5631 | 
5632 | 
5633 | ## L-24: Incorrect Order of Division and Multiplication
5634 | 
5635 | Division operations followed directly by multiplication operations can lead to precision loss due to the way integer arithmetic is handled in Solidity./
5636 |         Consider Multiplication before Division.
5637 | 
5638 | <details><summary>4 Found Instances</summary>
5639 | 
5640 | 
5641 | - Found in src/DivisionBeforeMultiplication.sol [Line: 8](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L8)
5642 | 
5643 | 	```solidity
5644 | 	        result = a * d + b / c * b / d; 
5645 | 	```
5646 | 
5647 | - Found in src/DivisionBeforeMultiplication.sol [Line: 12](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L12)
5648 | 
5649 | 	```solidity
5650 | 	        result = (a + b / c * b) * c; 
5651 | 	```
5652 | 
5653 | - Found in src/DivisionBeforeMultiplication.sol [Line: 16](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L16)
5654 | 
5655 | 	```solidity
5656 | 	        result = (a / b * c); 
5657 | 	```
5658 | 
5659 | - Found in src/DivisionBeforeMultiplication.sol [Line: 20](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L20)
5660 | 
5661 | 	```solidity
5662 | 	        result = a + b / c * b * c; 
5663 | 	```
5664 | 
5665 | </details>
5666 | 
5667 | 
5668 | 
5669 | ## L-25: Redundant Statement
5670 | 
5671 | Remove the redundant statement.
5672 | 
5673 | <details><summary>6 Found Instances</summary>
5674 | 
5675 | 
5676 | - Found in src/RedundantStatements.sol [Line: 6](../tests/contract-playground/src/RedundantStatements.sol#L6)
5677 | 
5678 | 	```solidity
5679 | 	        uint; // Elementary Type Name
5680 | 	```
5681 | 
5682 | - Found in src/RedundantStatements.sol [Line: 7](../tests/contract-playground/src/RedundantStatements.sol#L7)
5683 | 
5684 | 	```solidity
5685 | 	        bool; // Elementary Type Name
5686 | 	```
5687 | 
5688 | - Found in src/RedundantStatements.sol [Line: 8](../tests/contract-playground/src/RedundantStatements.sol#L8)
5689 | 
5690 | 	```solidity
5691 | 	        RedundantStatementsContract; // Identifier
5692 | 	```
5693 | 
5694 | - Found in src/RedundantStatements.sol [Line: 12](../tests/contract-playground/src/RedundantStatements.sol#L12)
5695 | 
5696 | 	```solidity
5697 | 	        uint; // Elementary Type Name
5698 | 	```
5699 | 
5700 | - Found in src/RedundantStatements.sol [Line: 13](../tests/contract-playground/src/RedundantStatements.sol#L13)
5701 | 
5702 | 	```solidity
5703 | 	        assert; // Identifier
5704 | 	```
5705 | 
5706 | - Found in src/RedundantStatements.sol [Line: 14](../tests/contract-playground/src/RedundantStatements.sol#L14)
5707 | 
5708 | 	```solidity
5709 | 	        test; // Identifier
5710 | 	```
5711 | 
5712 | </details>
5713 | 
5714 | 
5715 | 
5716 | ## L-26: State Variable is Read as External
5717 | 
5718 | The contract reads it's own state variable using `this` which adds an unnecessary STATICCALL. Consider removing `this` to access the variable from storage.
5719 | 
5720 | <details><summary>4 Found Instances</summary>
5721 | 
5722 | 
5723 | - Found in src/PublicVariableReadInExternalContext.sol [Line: 12](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L12)
5724 | 
5725 | 	```solidity
5726 | 	        return this.testArray(0);
5727 | 	```
5728 | 
5729 | - Found in src/PublicVariableReadInExternalContext.sol [Line: 16](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L16)
5730 | 
5731 | 	```solidity
5732 | 	        return this.testUint256();
5733 | 	```
5734 | 
5735 | - Found in src/PublicVariableReadInExternalContext.sol [Line: 20](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L20)
5736 | 
5737 | 	```solidity
5738 | 	        return this.testMap(0);
5739 | 	```
5740 | 
5741 | - Found in src/PublicVariableReadInExternalContext.sol [Line: 42](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L42)
5742 | 
5743 | 	```solidity
5744 | 	        return this.testArray(0);
5745 | 	```
5746 | 
5747 | </details>
5748 | 
5749 | 
5750 | 
5751 | ## L-27: Unused State Variable
5752 | 
5753 | State variable appears to be unused. No analysis has been performed to see if any inline assembly references it. Consider removing this unused variable.
5754 | 
5755 | <details><summary>27 Found Instances</summary>
5756 | 
5757 | 
5758 | - Found in src/AssemblyExample.sol [Line: 5](../tests/contract-playground/src/AssemblyExample.sol#L5)
5759 | 
5760 | 	```solidity
5761 | 	    uint b;
5762 | 	```
5763 | 
5764 | - Found in src/InconsistentUints.sol [Line: 16](../tests/contract-playground/src/InconsistentUints.sol#L16)
5765 | 
5766 | 	```solidity
5767 | 	    mapping(uint256 => uint other) u2uMapping; // 5 3
5768 | 	```
5769 | 
5770 | - Found in src/LocalVariableShadow.sol [Line: 7](../tests/contract-playground/src/LocalVariableShadow.sol#L7)
5771 | 
5772 | 	```solidity
5773 | 	    uint owner;
5774 | 	```
5775 | 
5776 | - Found in src/StateVariables.sol [Line: 8](../tests/contract-playground/src/StateVariables.sol#L8)
5777 | 
5778 | 	```solidity
5779 | 	    uint256 private staticPrivateNumber;
5780 | 	```
5781 | 
5782 | - Found in src/StateVariables.sol [Line: 9](../tests/contract-playground/src/StateVariables.sol#L9)
5783 | 
5784 | 	```solidity
5785 | 	    uint256 internal staticInternalNumber;
5786 | 	```
5787 | 
5788 | - Found in src/StateVariables.sol [Line: 13](../tests/contract-playground/src/StateVariables.sol#L13)
5789 | 
5790 | 	```solidity
5791 | 	    uint256 private staticNonEmptyPrivateNumber = 1;
5792 | 	```
5793 | 
5794 | - Found in src/StateVariables.sol [Line: 14](../tests/contract-playground/src/StateVariables.sol#L14)
5795 | 
5796 | 	```solidity
5797 | 	    uint256 internal staticNonEmptyInternalNumber = 2;
5798 | 	```
5799 | 
5800 | - Found in src/StateVariables.sol [Line: 28](../tests/contract-playground/src/StateVariables.sol#L28)
5801 | 
5802 | 	```solidity
5803 | 	    uint256 private constant PRIVATE_CONSTANT = 1;
5804 | 	```
5805 | 
5806 | - Found in src/StateVariables.sol [Line: 29](../tests/contract-playground/src/StateVariables.sol#L29)
5807 | 
5808 | 	```solidity
5809 | 	    uint256 internal constant INTERNAL_CONSTANT = 2;
5810 | 	```
5811 | 
5812 | - Found in src/TautologyOrContradiction.sol [Line: 6](../tests/contract-playground/src/TautologyOrContradiction.sol#L6)
5813 | 
5814 | 	```solidity
5815 | 	    uint x;
5816 | 	```
5817 | 
5818 | - Found in src/TautologyOrContradiction.sol [Line: 7](../tests/contract-playground/src/TautologyOrContradiction.sol#L7)
5819 | 
5820 | 	```solidity
5821 | 	    uint256 y;
5822 | 	```
5823 | 
5824 | - Found in src/UninitializedLocalVariables.sol [Line: 5](../tests/contract-playground/src/UninitializedLocalVariables.sol#L5)
5825 | 
5826 | 	```solidity
5827 | 	    uint256 stateVarUint;
5828 | 	```
5829 | 
5830 | - Found in src/UninitializedStateVariable.sol [Line: 13](../tests/contract-playground/src/UninitializedStateVariable.sol#L13)
5831 | 
5832 | 	```solidity
5833 | 	    mapping(uint256 => uint256[]) private map; // GOOD
5834 | 	```
5835 | 
5836 | - Found in src/UnusedStateVariables.sol [Line: 6](../tests/contract-playground/src/UnusedStateVariables.sol#L6)
5837 | 
5838 | 	```solidity
5839 | 	    uint256 internal unusedUint256;
5840 | 	```
5841 | 
5842 | - Found in src/UnusedStateVariables.sol [Line: 7](../tests/contract-playground/src/UnusedStateVariables.sol#L7)
5843 | 
5844 | 	```solidity
5845 | 	    address internal unusedAddress;
5846 | 	```
5847 | 
5848 | - Found in src/UnusedStateVariables.sol [Line: 8](../tests/contract-playground/src/UnusedStateVariables.sol#L8)
5849 | 
5850 | 	```solidity
5851 | 	    bool private unusedBool;
5852 | 	```
5853 | 
5854 | - Found in src/UnusedStateVariables.sol [Line: 9](../tests/contract-playground/src/UnusedStateVariables.sol#L9)
5855 | 
5856 | 	```solidity
5857 | 	    string private unusedString;
5858 | 	```
5859 | 
5860 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L14)
5861 | 
5862 | 	```solidity
5863 | 	    uint256 s_1 = 0;
5864 | 	```
5865 | 
5866 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L16)
5867 | 
5868 | 	```solidity
5869 | 	    uint256 s_2 = 0;
5870 | 	```
5871 | 
5872 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L19)
5873 | 
5874 | 	```solidity
5875 | 	    uint256 s_3 = 0; // this is a side comment
5876 | 	```
5877 | 
5878 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L22)
5879 | 
5880 | 	```solidity
5881 | 	    uint256 s_4 = 0; // scc-dblah
5882 | 	```
5883 | 
5884 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L29)
5885 | 
5886 | 	```solidity
5887 | 	     this is longer comment */ uint256 s_5 = 0;
5888 | 	```
5889 | 
5890 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L14)
5891 | 
5892 | 	```solidity
5893 | 	    uint256 s_1 = 0;
5894 | 	```
5895 | 
5896 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L16)
5897 | 
5898 | 	```solidity
5899 | 	    uint256 s_2 = 0;
5900 | 	```
5901 | 
5902 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L19)
5903 | 
5904 | 	```solidity
5905 | 	    uint256 s_3 = 0; // this is a side comment
5906 | 	```
5907 | 
5908 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L22)
5909 | 
5910 | 	```solidity
5911 | 	    uint256 s_4 = 0; // scc-dblah
5912 | 	```
5913 | 
5914 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L29)
5915 | 
5916 | 	```solidity
5917 | 	     this is longer comment */ uint256 s_5 = 0;
5918 | 	```
5919 | 
5920 | </details>
5921 | 
5922 | 
5923 | 
5924 | ## L-28: Constant Function Contains Assembly
5925 | 
5926 | constant/pure/view was not enforced prior to Solidity 0.5. Starting from Solidity 0.5, a call to a constant/pure/view function uses the STATICCALL opcode, which reverts in case of state modification. As a result, a call to an incorrectly labeled function may trap a contract compiled with Solidity 0.5. https://docs.soliditylang.org/en/develop/050-breaking-changes.html#interoperability-with-older-contracts
5927 | 
5928 | <details><summary>3 Found Instances</summary>
5929 | 
5930 | 
5931 | - Found in src/ConstantFuncsAssembly.sol [Line: 9](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L9)
5932 | 
5933 | 	```solidity
5934 | 	    function setValue(uint256 _value) external view {
5935 | 	```
5936 | 
5937 | - Found in src/ConstantFuncsAssembly.sol [Line: 17](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L17)
5938 | 
5939 | 	```solidity
5940 | 	    function getConstantValue() external pure returns (uint256) {
5941 | 	```
5942 | 
5943 | - Found in src/ConstantFuncsAssembly.sol [Line: 36](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L36)
5944 | 
5945 | 	```solidity
5946 | 	    function getConstantValue2() external pure returns (uint256) {
5947 | 	```
5948 | 
5949 | </details>
5950 | 
5951 | 
5952 | 
5953 | ## L-29: Boolean equality is not required
5954 | 
5955 | If `x` is a boolean, use `if(x)` and `if(!x)` instead of `if(x == true)` or `if(x == false)`.
5956 | 
5957 | <details><summary>4 Found Instances</summary>
5958 | 
5959 | 
5960 | - Found in src/BooleanEquality.sol [Line: 5](../tests/contract-playground/src/BooleanEquality.sol#L5)
5961 | 
5962 | 	```solidity
5963 | 	        if (isEven == true) {
5964 | 	```
5965 | 
5966 | - Found in src/BooleanEquality.sol [Line: 12](../tests/contract-playground/src/BooleanEquality.sol#L12)
5967 | 
5968 | 	```solidity
5969 | 	        if (isEven == !true) {
5970 | 	```
5971 | 
5972 | - Found in src/BooleanEquality.sol [Line: 19](../tests/contract-playground/src/BooleanEquality.sol#L19)
5973 | 
5974 | 	```solidity
5975 | 	        if (isEven == false) {
5976 | 	```
5977 | 
5978 | - Found in src/BooleanEquality.sol [Line: 26](../tests/contract-playground/src/BooleanEquality.sol#L26)
5979 | 
5980 | 	```solidity
5981 | 	        if (isEven == !false) {
5982 | 	```
5983 | 
5984 | </details>
5985 | 
5986 | 
5987 | 
5988 | ## L-30: Local Variable Shadows State Variable
5989 | 
5990 | Rename the local variable that shadows another state variable.
5991 | 
5992 | <details><summary>10 Found Instances</summary>
5993 | 
5994 | 
5995 | - Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)
5996 | 
5997 | 	```solidity
5998 | 	    function setOwner(address _owner) external onlyOwner nonReentrant {
5999 | 	```
6000 | 
6001 | - Found in src/FunctionInitializingState.sol [Line: 41](../tests/contract-playground/src/FunctionInitializingState.sol#L41)
6002 | 
6003 | 	```solidity
6004 | 	    function okay() public returns (uint f) {
6005 | 	```
6006 | 
6007 | - Found in src/FunctionInitializingState.sol [Line: 46](../tests/contract-playground/src/FunctionInitializingState.sol#L46)
6008 | 
6009 | 	```solidity
6010 | 	    function okay2() public returns (uint f) {
6011 | 	```
6012 | 
6013 | - Found in src/LocalVariableShadow.sol [Line: 10](../tests/contract-playground/src/LocalVariableShadow.sol#L10)
6014 | 
6015 | 	```solidity
6016 | 	    function sensitiveFunction(address owner) public view {
6017 | 	```
6018 | 
6019 | - Found in src/LocalVariableShadow.sol [Line: 17](../tests/contract-playground/src/LocalVariableShadow.sol#L17)
6020 | 
6021 | 	```solidity
6022 | 	        address owner = msg.sender;
6023 | 	```
6024 | 
6025 | - Found in src/LocalVariableShadow.sol [Line: 31](../tests/contract-playground/src/LocalVariableShadow.sol#L31)
6026 | 
6027 | 	```solidity
6028 | 	    function sensitiveFfunction(address roll) public view {
6029 | 	```
6030 | 
6031 | - Found in src/OutOfOrderRetryable.sol [Line: 144](../tests/contract-playground/src/OutOfOrderRetryable.sol#L144)
6032 | 
6033 | 	```solidity
6034 | 	        uint256 maxSubmissionCost,
6035 | 	```
6036 | 
6037 | - Found in src/OutOfOrderRetryable.sol [Line: 147](../tests/contract-playground/src/OutOfOrderRetryable.sol#L147)
6038 | 
6039 | 	```solidity
6040 | 	        uint256 gasLimit,
6041 | 	```
6042 | 
6043 | - Found in src/OutOfOrderRetryable.sol [Line: 148](../tests/contract-playground/src/OutOfOrderRetryable.sol#L148)
6044 | 
6045 | 	```solidity
6046 | 	        uint256 maxFeePerGas,
6047 | 	```
6048 | 
6049 | - Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)
6050 | 
6051 | 	```solidity
6052 | 	    function setOwner(address _owner) external onlyOwner nonReentrant {
6053 | 	```
6054 | 
6055 | </details>
6056 | 
6057 | 
6058 | 
6059 | ## L-31: Uninitialized Local Variable
6060 | 
6061 | Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
6062 | 
6063 | <details><summary>15 Found Instances</summary>
6064 | 
6065 | 
6066 | - Found in src/ConstantFuncsAssembly.sol [Line: 18](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L18)
6067 | 
6068 | 	```solidity
6069 | 	        uint256 result;
6070 | 	```
6071 | 
6072 | - Found in src/ConstantFuncsAssembly.sol [Line: 27](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L27)
6073 | 
6074 | 	```solidity
6075 | 	        uint256 result;
6076 | 	```
6077 | 
6078 | - Found in src/StorageParameters.sol [Line: 8](../tests/contract-playground/src/StorageParameters.sol#L8)
6079 | 
6080 | 	```solidity
6081 | 	        uint[1] memory memoryArray;
6082 | 	```
6083 | 
6084 | - Found in src/UninitializedLocalVariables.sol [Line: 9](../tests/contract-playground/src/UninitializedLocalVariables.sol#L9)
6085 | 
6086 | 	```solidity
6087 | 	        uint uninitializedUint;
6088 | 	```
6089 | 
6090 | - Found in src/UninitializedLocalVariables.sol [Line: 10](../tests/contract-playground/src/UninitializedLocalVariables.sol#L10)
6091 | 
6092 | 	```solidity
6093 | 	        bool uninitializedBool;
6094 | 	```
6095 | 
6096 | - Found in src/UninitializedLocalVariables.sol [Line: 11](../tests/contract-playground/src/UninitializedLocalVariables.sol#L11)
6097 | 
6098 | 	```solidity
6099 | 	        address uninitializedAddress;
6100 | 	```
6101 | 
6102 | - Found in src/UninitializedLocalVariables.sol [Line: 12](../tests/contract-playground/src/UninitializedLocalVariables.sol#L12)
6103 | 
6104 | 	```solidity
6105 | 	        int uninitializedInt;
6106 | 	```
6107 | 
6108 | - Found in src/UninitializedLocalVariables.sol [Line: 13](../tests/contract-playground/src/UninitializedLocalVariables.sol#L13)
6109 | 
6110 | 	```solidity
6111 | 	        bytes32 uninitializedBytes32;
6112 | 	```
6113 | 
6114 | - Found in src/UninitializedLocalVariables.sol [Line: 14](../tests/contract-playground/src/UninitializedLocalVariables.sol#L14)
6115 | 
6116 | 	```solidity
6117 | 	        string memory uninitializedString;
6118 | 	```
6119 | 
6120 | - Found in src/UninitializedLocalVariables.sol [Line: 15](../tests/contract-playground/src/UninitializedLocalVariables.sol#L15)
6121 | 
6122 | 	```solidity
6123 | 	        uint[1] memory uninitializedUintArray;
6124 | 	```
6125 | 
6126 | - Found in src/UninitializedLocalVariables.sol [Line: 16](../tests/contract-playground/src/UninitializedLocalVariables.sol#L16)
6127 | 
6128 | 	```solidity
6129 | 	        bool[1] memory uninitializedBoolArray;
6130 | 	```
6131 | 
6132 | - Found in src/UninitializedLocalVariables.sol [Line: 17](../tests/contract-playground/src/UninitializedLocalVariables.sol#L17)
6133 | 
6134 | 	```solidity
6135 | 	        address[1] memory uninitializedAddressArray;
6136 | 	```
6137 | 
6138 | - Found in src/UninitializedLocalVariables.sol [Line: 18](../tests/contract-playground/src/UninitializedLocalVariables.sol#L18)
6139 | 
6140 | 	```solidity
6141 | 	        int[1] memory uninitializedIntArray;
6142 | 	```
6143 | 
6144 | - Found in src/UninitializedLocalVariables.sol [Line: 19](../tests/contract-playground/src/UninitializedLocalVariables.sol#L19)
6145 | 
6146 | 	```solidity
6147 | 	        bytes32[1] memory uninitializedBytes32Array;
6148 | 	```
6149 | 
6150 | - Found in src/UninitializedLocalVariables.sol [Line: 20](../tests/contract-playground/src/UninitializedLocalVariables.sol#L20)
6151 | 
6152 | 	```solidity
6153 | 	        string[1] memory uninitializedStringArray;
6154 | 	```
6155 | 
6156 | </details>
6157 | 
6158 | 
6159 | 
6160 | ## L-32: Return Bomb
6161 | 
6162 | A low level callee may consume all callers gas unexpectedly. Avoid unlimited implicit decoding of returndata on calls to unchecked addresses. You can limit the gas by passing a gas limit as an option to the call. For example, `unknownAddress.call{gas: gasLimitHere}("calldata")` That would act as a safety net from OOG errors.
6163 |         
6164 | 
6165 | <details><summary>1 Found Instances</summary>
6166 | 
6167 | 
6168 | - Found in src/ReturnBomb.sol [Line: 22](../tests/contract-playground/src/ReturnBomb.sol#L22)
6169 | 
6170 | 	```solidity
6171 | 	        (success, ret) = badGuy.call(
6172 | 	```
6173 | 
6174 | </details>
6175 | 
6176 | 
6177 | 
6178 | ## L-33: Function Used to Initialize State Variable
6179 | 
6180 | Instead of using a function to initialize a state variable in its declaration; declare the state variable and initialize it in the constructor.
6181 | 
6182 | <details><summary>3 Found Instances</summary>
6183 | 
6184 | 
6185 | - Found in src/FunctionInitializingState.sol [Line: 6](../tests/contract-playground/src/FunctionInitializingState.sol#L6)
6186 | 
6187 | 	```solidity
6188 | 	    uint public v = set(); // Initialize from function (sets to 77)
6189 | 	```
6190 | 
6191 | - Found in src/FunctionInitializingState.sol [Line: 8](../tests/contract-playground/src/FunctionInitializingState.sol#L8)
6192 | 
6193 | 	```solidity
6194 | 	    uint public x = set(); // Initialize from function (sets to 88)
6195 | 	```
6196 | 
6197 | - Found in src/FunctionInitializingState.sol [Line: 9](../tests/contract-playground/src/FunctionInitializingState.sol#L9)
6198 | 
6199 | 	```solidity
6200 | 	    uint public f = tes();
6201 | 	```
6202 | 
6203 | </details>
6204 | 
6205 | 
6206 | 
6207 | ## L-34: Dead Code
6208 | 
6209 | Functions that are not used. Consider removing them.
6210 | 
6211 | <details><summary>12 Found Instances</summary>
6212 | 
6213 | 
6214 | - Found in src/ArbitraryTransferFrom.sol [Line: 18](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L18)
6215 | 
6216 | 	```solidity
6217 | 	    function bad1(address from, address to, uint256 amount) internal {
6218 | 	```
6219 | 
6220 | - Found in src/ContractLocksEther.sol [Line: 54](../tests/contract-playground/src/ContractLocksEther.sol#L54)
6221 | 
6222 | 	```solidity
6223 | 	    function _sendEther(address payable recipient, uint256 amount) internal {
6224 | 	```
6225 | 
6226 | - Found in src/DeadCode.sol [Line: 16](../tests/contract-playground/src/DeadCode.sol#L16)
6227 | 
6228 | 	```solidity
6229 | 	    function unusedInternalFunction() internal pure returns (string memory) {
6230 | 	```
6231 | 
6232 | - Found in src/DeletionNestedMappingStructureContract.sol [Line: 14](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L14)
6233 | 
6234 | 	```solidity
6235 | 	    function remove() internal{
6236 | 	```
6237 | 
6238 | - Found in src/IncorrectShift.sol [Line: 5](../tests/contract-playground/src/IncorrectShift.sol#L5)
6239 | 
6240 | 	```solidity
6241 | 	    function shiftBad() internal pure returns (uint shifted) {
6242 | 	```
6243 | 
6244 | - Found in src/IncorrectShift.sol [Line: 13](../tests/contract-playground/src/IncorrectShift.sol#L13)
6245 | 
6246 | 	```solidity
6247 | 	    function shiftGood() internal pure returns (uint shifted) {
6248 | 	```
6249 | 
6250 | - Found in src/UncheckedReturn.sol [Line: 12](../tests/contract-playground/src/UncheckedReturn.sol#L12)
6251 | 
6252 | 	```solidity
6253 | 	    function callOneAndDoNothing() internal pure {
6254 | 	```
6255 | 
6256 | - Found in src/UncheckedReturn.sol [Line: 20](../tests/contract-playground/src/UncheckedReturn.sol#L20)
6257 | 
6258 | 	```solidity
6259 | 	    function callOneAndDoSomething() internal {
6260 | 	```
6261 | 
6262 | - Found in src/UncheckedReturn.sol [Line: 25](../tests/contract-playground/src/UncheckedReturn.sol#L25)
6263 | 
6264 | 	```solidity
6265 | 	    function callTwoAndDoNothing() internal pure {
6266 | 	```
6267 | 
6268 | - Found in src/UncheckedReturn.sol [Line: 30](../tests/contract-playground/src/UncheckedReturn.sol#L30)
6269 | 
6270 | 	```solidity
6271 | 	    function callTwoAndDoSomething() internal pure {
6272 | 	```
6273 | 
6274 | - Found in src/UncheckedReturn.sol [Line: 35](../tests/contract-playground/src/UncheckedReturn.sol#L35)
6275 | 
6276 | 	```solidity
6277 | 	    function callTwoAndRequireSomething() internal pure {
6278 | 	```
6279 | 
6280 | - Found in src/UncheckedReturn.sol [Line: 40](../tests/contract-playground/src/UncheckedReturn.sol#L40)
6281 | 
6282 | 	```solidity
6283 | 	    function callTwoAndEmitError() internal pure {
6284 | 	```
6285 | 
6286 | </details>
6287 | 
6288 | 
6289 | 
6290 | ## L-35: Storage Array Length not Cached
6291 | 
6292 | Calling `.length` on a storage array in a loop condition is expensive. Consider caching the length in a local variable in memory before the loop and reusing it.
6293 | 
6294 | <details><summary>3 Found Instances</summary>
6295 | 
6296 | 
6297 | - Found in src/CacheArrayLength.sol [Line: 12](../tests/contract-playground/src/CacheArrayLength.sol#L12)
6298 | 
6299 | 	```solidity
6300 | 	        for (uint i = 0; i < array.length; i++) {
6301 | 	```
6302 | 
6303 | - Found in src/CacheArrayLength.sol [Line: 44](../tests/contract-playground/src/CacheArrayLength.sol#L44)
6304 | 
6305 | 	```solidity
6306 | 	        for (uint i = 0; i < array.length + anotherArray.length; i++) {}
6307 | 	```
6308 | 
6309 | - Found in src/CacheArrayLength.sol [Line: 50](../tests/contract-playground/src/CacheArrayLength.sol#L50)
6310 | 
6311 | 	```solidity
6312 | 	        for (uint i = 0; i < array.length + anotherArray.length; i++) {
6313 | 	```
6314 | 
6315 | </details>
6316 | 
6317 | 
6318 | 
6319 | ## L-36: State change in `assert()` statement
6320 | 
6321 | An argument to `assert()` modifies the state. Use `require` for invariants modifying state.
6322 | 
6323 | <details><summary>1 Found Instances</summary>
6324 | 
6325 | 
6326 | - Found in src/AssertStateChange.sol [Line: 9](../tests/contract-playground/src/AssertStateChange.sol#L9)
6327 | 
6328 | 	```solidity
6329 | 	        assert((s_a += 1) > 10);
6330 | 	```
6331 | 
6332 | </details>
6333 | 
6334 | 
6335 | 
6336 | ## L-37: Costly operations inside loop
6337 | 
6338 | Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.
6339 | 
6340 | <details><summary>19 Found Instances</summary>
6341 | 
6342 | 
6343 | - Found in src/CacheArrayLength.sol [Line: 25](../tests/contract-playground/src/CacheArrayLength.sol#L25)
6344 | 
6345 | 	```solidity
6346 | 	        for (uint i = 0; i < array.length; i++) {
6347 | 	```
6348 | 
6349 | - Found in src/CacheArrayLength.sol [Line: 35](../tests/contract-playground/src/CacheArrayLength.sol#L35)
6350 | 
6351 | 	```solidity
6352 | 	        for (uint i = 0; i < array.length + anotherArray.length; i++) {
6353 | 	```
6354 | 
6355 | - Found in src/CostlyOperationsInsideLoops.sol [Line: 10](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L10)
6356 | 
6357 | 	```solidity
6358 | 	        for (uint i = 0; i < loop_count; i++) {
6359 | 	```
6360 | 
6361 | - Found in src/EnumerableSetIteration.sol [Line: 29](../tests/contract-playground/src/EnumerableSetIteration.sol#L29)
6362 | 
6363 | 	```solidity
6364 | 	        for (uint256 i = 0; i < bytes32Set.length(); i++) {
6365 | 	```
6366 | 
6367 | - Found in src/EnumerableSetIteration.sol [Line: 38](../tests/contract-playground/src/EnumerableSetIteration.sol#L38)
6368 | 
6369 | 	```solidity
6370 | 	        while(i < bytes32Set.length()) {
6371 | 	```
6372 | 
6373 | - Found in src/EnumerableSetIteration.sol [Line: 48](../tests/contract-playground/src/EnumerableSetIteration.sol#L48)
6374 | 
6375 | 	```solidity
6376 | 	        do {
6377 | 	```
6378 | 
6379 | - Found in src/EnumerableSetIteration.sol [Line: 57](../tests/contract-playground/src/EnumerableSetIteration.sol#L57)
6380 | 
6381 | 	```solidity
6382 | 	        for (uint256 i = 0; i < addressSet.length(); i++) {
6383 | 	```
6384 | 
6385 | - Found in src/EnumerableSetIteration.sol [Line: 65](../tests/contract-playground/src/EnumerableSetIteration.sol#L65)
6386 | 
6387 | 	```solidity
6388 | 	        for (uint256 i = 0; i < uintSet.length(); i++) {
6389 | 	```
6390 | 
6391 | - Found in src/MsgValueInLoop.sol [Line: 12](../tests/contract-playground/src/MsgValueInLoop.sol#L12)
6392 | 
6393 | 	```solidity
6394 | 	        for (uint256 i = 0; i < receivers.length; i++) {
6395 | 	```
6396 | 
6397 | - Found in src/MsgValueInLoop.sol [Line: 25](../tests/contract-playground/src/MsgValueInLoop.sol#L25)
6398 | 
6399 | 	```solidity
6400 | 	        for (uint256 i = 0; i < receivers.length; i++) {
6401 | 	```
6402 | 
6403 | - Found in src/MsgValueInLoop.sol [Line: 38](../tests/contract-playground/src/MsgValueInLoop.sol#L38)
6404 | 
6405 | 	```solidity
6406 | 	        for (uint256 i = 0; i < receivers.length; i++) {
6407 | 	```
6408 | 
6409 | - Found in src/MsgValueInLoop.sol [Line: 54](../tests/contract-playground/src/MsgValueInLoop.sol#L54)
6410 | 
6411 | 	```solidity
6412 | 	        while (i < receivers.length) {
6413 | 	```
6414 | 
6415 | - Found in src/MsgValueInLoop.sol [Line: 71](../tests/contract-playground/src/MsgValueInLoop.sol#L71)
6416 | 
6417 | 	```solidity
6418 | 	        do {
6419 | 	```
6420 | 
6421 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)
6422 | 
6423 | 	```solidity
6424 | 	        for (uint256 id = 0; id < 10; ++id) {
6425 | 	```
6426 | 
6427 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)
6428 | 
6429 | 	```solidity
6430 | 	        for (uint256 id = 0; id < 10; ++id) {
6431 | 	```
6432 | 
6433 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 27](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L27)
6434 | 
6435 | 	```solidity
6436 | 	        for (uint256 id = 0; id < 10; ++id) {
6437 | 	```
6438 | 
6439 | - Found in src/StateChangeAfterExternalCall.sol [Line: 47](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L47)
6440 | 
6441 | 	```solidity
6442 | 	        for (uint256 i = 0; i < s_useMe; ++i) {
6443 | 	```
6444 | 
6445 | - Found in src/eth2/DepositContract.sol [Line: 134](../tests/contract-playground/src/eth2/DepositContract.sol#L134)
6446 | 
6447 | 	```solidity
6448 | 	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
6449 | 	```
6450 | 
6451 | - Found in src/parent_chain/ParentChainContract.sol [Line: 17](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L17)
6452 | 
6453 | 	```solidity
6454 | 	            for (uint256 j = 9; j != 0; --j) {
6455 | 	```
6456 | 
6457 | </details>
6458 | 
6459 | 
6460 | 
6461 | ## L-38: Builtin Symbol Shadowing
6462 | 
6463 | Name clashes with a built-in-symbol. Consider renaming it.
6464 | 
6465 | <details><summary>4 Found Instances</summary>
6466 | 
6467 | 
6468 | - Found in src/BuiltinSymbolShadow.sol [Line: 5](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L5)
6469 | 
6470 | 	```solidity
6471 | 	    uint now; // BAD
6472 | 	```
6473 | 
6474 | - Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)
6475 | 
6476 | 	```solidity
6477 | 	    function assert(bool condition) public {}
6478 | 	```
6479 | 
6480 | - Found in src/BuiltinSymbolShadow.sol [Line: 17](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L17)
6481 | 
6482 | 	```solidity
6483 | 	    modifier blockhash() {
6484 | 	```
6485 | 
6486 | - Found in src/BuiltinSymbolShadow.sol [Line: 22](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L22)
6487 | 
6488 | 	```solidity
6489 | 	    event sha256();
6490 | 	```
6491 | 
6492 | </details>
6493 | 
6494 | 
6495 | 
6496 | ## L-39: Void constructor
6497 | 
6498 | Call to a constructor that is not implemented.
6499 | 
6500 | <details><summary>1 Found Instances</summary>
6501 | 
6502 | 
6503 | - Found in src/VoidConstructor.sol [Line: 16](../tests/contract-playground/src/VoidConstructor.sol#L16)
6504 | 
6505 | 	```solidity
6506 | 	    VoidConstructor() 
6507 | 	```
6508 | 
6509 | </details>
6510 | 
6511 | 
6512 | 
6513 | ## L-40: Missing Inheritance
6514 | 
6515 | There is an interface / abstract contract that is potentially missing (not included in) the inheritance of this contract.
6516 | 
6517 | <details><summary>3 Found Instances</summary>
6518 | 
6519 | 
6520 | - Found in src/MissingInheritance.sol [Line: 7](../tests/contract-playground/src/MissingInheritance.sol#L7)
6521 | 
6522 | 	Is this contract supposed to implement an interface? Consider extending one of the following: IMissingInheritanceCounter
6523 | 	```solidity
6524 | 	contract MissingInheritanceCounter {
6525 | 	```
6526 | 
6527 | - Found in src/MissingInheritance.sol [Line: 41](../tests/contract-playground/src/MissingInheritance.sol#L41)
6528 | 
6529 | 	Is this contract supposed to implement an interface? Consider extending one of the following: IMissingChild, IMissingParent
6530 | 	```solidity
6531 | 	contract MissingContract2 {
6532 | 	```
6533 | 
6534 | - Found in src/TestERC20.sol [Line: 4](../tests/contract-playground/src/TestERC20.sol#L4)
6535 | 
6536 | 	Is this contract supposed to implement an interface? Consider extending one of the following: IERC20
6537 | 	```solidity
6538 | 	contract TestERC20 {
6539 | 	```
6540 | 
6541 | </details>
6542 | 
6543 | 
6544 | 
6545 | ## L-41: Unused Import
6546 | 
6547 | Redundant import statement. Consider removing it.
6548 | 
6549 | <details><summary>3 Found Instances</summary>
6550 | 
6551 | 
6552 | - Found in src/StateVariables.sol [Line: 4](../tests/contract-playground/src/StateVariables.sol#L4)
6553 | 
6554 | 	```solidity
6555 | 	import {Counter} from "./Counter.sol";
6556 | 	```
6557 | 
6558 | - Found in src/UnusedImport.sol [Line: 6](../tests/contract-playground/src/UnusedImport.sol#L6)
6559 | 
6560 | 	```solidity
6561 | 	import "./U2.sol";
6562 | 	```
6563 | 
6564 | - Found in src/UnusedImport.sol [Line: 9](../tests/contract-playground/src/UnusedImport.sol#L9)
6565 | 
6566 | 	```solidity
6567 | 	import {U3} from "./U3.sol";
6568 | 	```
6569 | 
6570 | </details>
6571 | 
6572 | 
6573 | 
6574 | ## L-42: Function Pointer in Constructor
6575 | 
6576 | solc versions below 0.5.9 contain a compiler bug leading to unexpected behavior when calling uninitialized function pointers in constructors. It is recommended to not use function pointers in constructors.
6577 | 
6578 | <details><summary>1 Found Instances</summary>
6579 | 
6580 | 
6581 | - Found in src/FunctionPointers.sol [Line: 13](../tests/contract-playground/src/FunctionPointers.sol#L13)
6582 | 
6583 | 	```solidity
6584 | 	        function(uint, uint) pure returns (uint) operation;
6585 | 	```
6586 | 
6587 | </details>
6588 | 
6589 | 
6590 | 
6591 | ## L-43: State Variable Could Be Constant
6592 | 
6593 | State variables that are not updated following deployment should be declared constant to save gas. Add the `constant` attribute to state variables that never change.
6594 | 
6595 | <details><summary>45 Found Instances</summary>
6596 | 
6597 | 
6598 | - Found in src/CostlyOperationsInsideLoops.sol [Line: 6](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L6)
6599 | 
6600 | 	```solidity
6601 | 	    uint loop_count = 100;
6602 | 	```
6603 | 
6604 | - Found in src/FunctionInitializingState.sol [Line: 7](../tests/contract-playground/src/FunctionInitializingState.sol#L7)
6605 | 
6606 | 	```solidity
6607 | 	    uint public w = 5;
6608 | 	```
6609 | 
6610 | - Found in src/FunctionInitializingState.sol [Line: 58](../tests/contract-playground/src/FunctionInitializingState.sol#L58)
6611 | 
6612 | 	```solidity
6613 | 	    uint public w = 5;
6614 | 	```
6615 | 
6616 | - Found in src/IncorrectERC20.sol [Line: 5](../tests/contract-playground/src/IncorrectERC20.sol#L5)
6617 | 
6618 | 	```solidity
6619 | 	    string public name = "IncorrectToken";
6620 | 	```
6621 | 
6622 | - Found in src/IncorrectERC20.sol [Line: 6](../tests/contract-playground/src/IncorrectERC20.sol#L6)
6623 | 
6624 | 	```solidity
6625 | 	    string public symbol = "ICT";
6626 | 	```
6627 | 
6628 | - Found in src/IncorrectERC20.sol [Line: 7](../tests/contract-playground/src/IncorrectERC20.sol#L7)
6629 | 
6630 | 	```solidity
6631 | 	    uint8 public decimals = 18;
6632 | 	```
6633 | 
6634 | - Found in src/IncorrectERC20.sol [Line: 8](../tests/contract-playground/src/IncorrectERC20.sol#L8)
6635 | 
6636 | 	```solidity
6637 | 	    uint256 public totalSupply = 1000000;
6638 | 	```
6639 | 
6640 | - Found in src/IncorrectERC20.sol [Line: 48](../tests/contract-playground/src/IncorrectERC20.sol#L48)
6641 | 
6642 | 	```solidity
6643 | 	    string public name = "CorrectToken";
6644 | 	```
6645 | 
6646 | - Found in src/IncorrectERC20.sol [Line: 49](../tests/contract-playground/src/IncorrectERC20.sol#L49)
6647 | 
6648 | 	```solidity
6649 | 	    string public symbol = "CRT";
6650 | 	```
6651 | 
6652 | - Found in src/IncorrectERC20.sol [Line: 50](../tests/contract-playground/src/IncorrectERC20.sol#L50)
6653 | 
6654 | 	```solidity
6655 | 	    uint8 public decimals = 18;
6656 | 	```
6657 | 
6658 | - Found in src/IncorrectERC20.sol [Line: 51](../tests/contract-playground/src/IncorrectERC20.sol#L51)
6659 | 
6660 | 	```solidity
6661 | 	    uint256 private _totalSupply = 1000000 * 10 ** uint(decimals);
6662 | 	```
6663 | 
6664 | - Found in src/IncorrectERC721.sol [Line: 5](../tests/contract-playground/src/IncorrectERC721.sol#L5)
6665 | 
6666 | 	```solidity
6667 | 	    string public name = "IncorrectNFT";
6668 | 	```
6669 | 
6670 | - Found in src/IncorrectERC721.sol [Line: 6](../tests/contract-playground/src/IncorrectERC721.sol#L6)
6671 | 
6672 | 	```solidity
6673 | 	    string public symbol = "INFT";
6674 | 	```
6675 | 
6676 | - Found in src/IncorrectERC721.sol [Line: 145](../tests/contract-playground/src/IncorrectERC721.sol#L145)
6677 | 
6678 | 	```solidity
6679 | 	    string public name = "CorrectNFT";
6680 | 	```
6681 | 
6682 | - Found in src/IncorrectERC721.sol [Line: 146](../tests/contract-playground/src/IncorrectERC721.sol#L146)
6683 | 
6684 | 	```solidity
6685 | 	    string public symbol = "CNFT";
6686 | 	```
6687 | 
6688 | - Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 8](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L8)
6689 | 
6690 | 	```solidity
6691 | 	    uint256 public constantValue = 100;
6692 | 	```
6693 | 
6694 | - Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 13](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L13)
6695 | 
6696 | 	```solidity
6697 | 	    SVIERC20 public h = SVIERC20(address(3)); // This could be declared constant
6698 | 	```
6699 | 
6700 | - Found in src/StateVariables.sol [Line: 13](../tests/contract-playground/src/StateVariables.sol#L13)
6701 | 
6702 | 	```solidity
6703 | 	    uint256 private staticNonEmptyPrivateNumber = 1;
6704 | 	```
6705 | 
6706 | - Found in src/StateVariables.sol [Line: 14](../tests/contract-playground/src/StateVariables.sol#L14)
6707 | 
6708 | 	```solidity
6709 | 	    uint256 internal staticNonEmptyInternalNumber = 2;
6710 | 	```
6711 | 
6712 | - Found in src/StateVariables.sol [Line: 15](../tests/contract-playground/src/StateVariables.sol#L15)
6713 | 
6714 | 	```solidity
6715 | 	    uint256 public staticNonEmptyPublicNumber = 3;
6716 | 	```
6717 | 
6718 | - Found in src/StateVariablesManipulation.sol [Line: 40](../tests/contract-playground/src/StateVariablesManipulation.sol#L40)
6719 | 
6720 | 	```solidity
6721 | 	    int256 public simpleInt = 100;
6722 | 	```
6723 | 
6724 | - Found in src/StateVariablesManipulation.sol [Line: 41](../tests/contract-playground/src/StateVariablesManipulation.sol#L41)
6725 | 
6726 | 	```solidity
6727 | 	    bool public simpleBool = true;
6728 | 	```
6729 | 
6730 | - Found in src/StateVariablesManipulation.sol [Line: 72](../tests/contract-playground/src/StateVariablesManipulation.sol#L72)
6731 | 
6732 | 	```solidity
6733 | 	    uint256[5] public assignToMeNow = [1, 4, 5, 8, 9]; // 1 state var assigned here
6734 | 	```
6735 | 
6736 | - Found in src/Trump.sol [Line: 130](../tests/contract-playground/src/Trump.sol#L130)
6737 | 
6738 | 	```solidity
6739 | 	    uint256 private _taxWalletPercentage = 50;
6740 | 	```
6741 | 
6742 | - Found in src/Trump.sol [Line: 131](../tests/contract-playground/src/Trump.sol#L131)
6743 | 
6744 | 	```solidity
6745 | 	    uint256 private _teamWalletPercentage = 50;
6746 | 	```
6747 | 
6748 | - Found in src/Trump.sol [Line: 135](../tests/contract-playground/src/Trump.sol#L135)
6749 | 
6750 | 	```solidity
6751 | 	    uint256 private _initialBuyTax=20;
6752 | 	```
6753 | 
6754 | - Found in src/Trump.sol [Line: 136](../tests/contract-playground/src/Trump.sol#L136)
6755 | 
6756 | 	```solidity
6757 | 	    uint256 private _initialSellTax=20;
6758 | 	```
6759 | 
6760 | - Found in src/Trump.sol [Line: 137](../tests/contract-playground/src/Trump.sol#L137)
6761 | 
6762 | 	```solidity
6763 | 	    uint256 private _finalBuyTax=1;
6764 | 	```
6765 | 
6766 | - Found in src/Trump.sol [Line: 138](../tests/contract-playground/src/Trump.sol#L138)
6767 | 
6768 | 	```solidity
6769 | 	    uint256 private _finalSellTax=1;
6770 | 	```
6771 | 
6772 | - Found in src/Trump.sol [Line: 139](../tests/contract-playground/src/Trump.sol#L139)
6773 | 
6774 | 	```solidity
6775 | 	    uint256 private _reduceBuyTaxAt=20;
6776 | 	```
6777 | 
6778 | - Found in src/Trump.sol [Line: 140](../tests/contract-playground/src/Trump.sol#L140)
6779 | 
6780 | 	```solidity
6781 | 	    uint256 private _reduceSellTaxAt=20;
6782 | 	```
6783 | 
6784 | - Found in src/Trump.sol [Line: 141](../tests/contract-playground/src/Trump.sol#L141)
6785 | 
6786 | 	```solidity
6787 | 	    uint256 private _preventSwapBefore=20;
6788 | 	```
6789 | 
6790 | - Found in src/Trump.sol [Line: 150](../tests/contract-playground/src/Trump.sol#L150)
6791 | 
6792 | 	```solidity
6793 | 	    uint256 public _taxSwapThreshold= 47000 * 10**_decimals;
6794 | 	```
6795 | 
6796 | - Found in src/Trump.sol [Line: 151](../tests/contract-playground/src/Trump.sol#L151)
6797 | 
6798 | 	```solidity
6799 | 	    uint256 public _maxTaxSwap= 470000 * 10**_decimals;
6800 | 	```
6801 | 
6802 | - Found in src/UninitializedStateVariable.sol [Line: 8](../tests/contract-playground/src/UninitializedStateVariable.sol#L8)
6803 | 
6804 | 	```solidity
6805 | 	    string public s_publisher = "Blockchain Ltd."; // GOOD (because it's initialized here.)
6806 | 	```
6807 | 
6808 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L14)
6809 | 
6810 | 	```solidity
6811 | 	    uint256 s_1 = 0;
6812 | 	```
6813 | 
6814 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L16)
6815 | 
6816 | 	```solidity
6817 | 	    uint256 s_2 = 0;
6818 | 	```
6819 | 
6820 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L19)
6821 | 
6822 | 	```solidity
6823 | 	    uint256 s_3 = 0; // this is a side comment
6824 | 	```
6825 | 
6826 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L22)
6827 | 
6828 | 	```solidity
6829 | 	    uint256 s_4 = 0; // scc-dblah
6830 | 	```
6831 | 
6832 | - Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L29)
6833 | 
6834 | 	```solidity
6835 | 	     this is longer comment */ uint256 s_5 = 0;
6836 | 	```
6837 | 
6838 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L14)
6839 | 
6840 | 	```solidity
6841 | 	    uint256 s_1 = 0;
6842 | 	```
6843 | 
6844 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L16)
6845 | 
6846 | 	```solidity
6847 | 	    uint256 s_2 = 0;
6848 | 	```
6849 | 
6850 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L19)
6851 | 
6852 | 	```solidity
6853 | 	    uint256 s_3 = 0; // this is a side comment
6854 | 	```
6855 | 
6856 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L22)
6857 | 
6858 | 	```solidity
6859 | 	    uint256 s_4 = 0; // scc-dblah
6860 | 	```
6861 | 
6862 | - Found in src/cloc/HeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L29)
6863 | 
6864 | 	```solidity
6865 | 	     this is longer comment */ uint256 s_5 = 0;
6866 | 	```
6867 | 
6868 | </details>
6869 | 
6870 | 
6871 | 
6872 | ## L-44: State Change Without Event
6873 | 
6874 | There are state variable changes in this function but no event is emitted. Consider emitting an event to enable offchain indexers to track the changes.
6875 | 
6876 | <details><summary>115 Found Instances</summary>
6877 | 
6878 | 
6879 | - Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)
6880 | 
6881 | 	```solidity
6882 | 	    function someOtherImportantThing() external nonReentrant onlyOwner {
6883 | 	```
6884 | 
6885 | - Found in src/AssertStateChange.sol [Line: 8](../tests/contract-playground/src/AssertStateChange.sol#L8)
6886 | 
6887 | 	```solidity
6888 | 	    function bad() public {
6889 | 	```
6890 | 
6891 | - Found in src/AssertStateChange.sol [Line: 12](../tests/contract-playground/src/AssertStateChange.sol#L12)
6892 | 
6893 | 	```solidity
6894 | 	    function good() public {
6895 | 	```
6896 | 
6897 | - Found in src/CacheArrayLength.sol [Line: 23](../tests/contract-playground/src/CacheArrayLength.sol#L23)
6898 | 
6899 | 	```solidity
6900 | 	    function c3() external {
6901 | 	```
6902 | 
6903 | - Found in src/CacheArrayLength.sol [Line: 32](../tests/contract-playground/src/CacheArrayLength.sol#L32)
6904 | 
6905 | 	```solidity
6906 | 	    function c4() external {
6907 | 	```
6908 | 
6909 | - Found in src/Casting.sol [Line: 37](../tests/contract-playground/src/Casting.sol#L37)
6910 | 
6911 | 	```solidity
6912 | 	    function unsafeUintCasting() external {
6913 | 	```
6914 | 
6915 | - Found in src/Casting.sol [Line: 75](../tests/contract-playground/src/Casting.sol#L75)
6916 | 
6917 | 	```solidity
6918 | 	    function unsafeIntCasting() external {
6919 | 	```
6920 | 
6921 | - Found in src/Casting.sol [Line: 113](../tests/contract-playground/src/Casting.sol#L113)
6922 | 
6923 | 	```solidity
6924 | 	    function unsafeBytes32Casting() external {
6925 | 	```
6926 | 
6927 | - Found in src/CostlyOperationsInsideLoops.sol [Line: 9](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L9)
6928 | 
6929 | 	```solidity
6930 | 	    function bad() external {
6931 | 	```
6932 | 
6933 | - Found in src/CostlyOperationsInsideLoops.sol [Line: 15](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L15)
6934 | 
6935 | 	```solidity
6936 | 	    function good() external {
6937 | 	```
6938 | 
6939 | - Found in src/Counter.sol [Line: 7](../tests/contract-playground/src/Counter.sol#L7)
6940 | 
6941 | 	```solidity
6942 | 	    function setNumber(uint256 newNumber) public {
6943 | 	```
6944 | 
6945 | - Found in src/Counter.sol [Line: 11](../tests/contract-playground/src/Counter.sol#L11)
6946 | 
6947 | 	```solidity
6948 | 	    function increment() public {
6949 | 	```
6950 | 
6951 | - Found in src/Counter.sol [Line: 16](../tests/contract-playground/src/Counter.sol#L16)
6952 | 
6953 | 	```solidity
6954 | 	    function callIncrement() external {
6955 | 	```
6956 | 
6957 | - Found in src/Counter.sol [Line: 21](../tests/contract-playground/src/Counter.sol#L21)
6958 | 
6959 | 	```solidity
6960 | 	    function incrementByTwoMagic() external {
6961 | 	```
6962 | 
6963 | - Found in src/Counter.sol [Line: 28](../tests/contract-playground/src/Counter.sol#L28)
6964 | 
6965 | 	```solidity
6966 | 	    function incrementByTwoConstant() external {
6967 | 	```
6968 | 
6969 | - Found in src/DeadCode.sol [Line: 11](../tests/contract-playground/src/DeadCode.sol#L11)
6970 | 
6971 | 	```solidity
6972 | 	    function setValue(uint256 _value) external {
6973 | 	```
6974 | 
6975 | - Found in src/DivisionBeforeMultiplication.sol [Line: 7](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L7)
6976 | 
6977 | 	```solidity
6978 | 	    function calculateWrong(uint a, uint b, uint c, uint d) external {
6979 | 	```
6980 | 
6981 | - Found in src/DivisionBeforeMultiplication.sol [Line: 11](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L11)
6982 | 
6983 | 	```solidity
6984 | 	    function calculateAlsoWrong(uint a, uint b, uint c) external {
6985 | 	```
6986 | 
6987 | - Found in src/DivisionBeforeMultiplication.sol [Line: 15](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L15)
6988 | 
6989 | 	```solidity
6990 | 	    function calculateAl(uint a, uint b, uint c) external {
6991 | 	```
6992 | 
6993 | - Found in src/DivisionBeforeMultiplication.sol [Line: 19](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L19)
6994 | 
6995 | 	```solidity
6996 | 	    function calculateStillWrong(uint a, uint b, uint c) external {
6997 | 	```
6998 | 
6999 | - Found in src/DivisionBeforeMultiplication.sol [Line: 23](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L23)
7000 | 
7001 | 	```solidity
7002 | 	    function calculateCorrect(uint a, uint b, uint c) external {
7003 | 	```
7004 | 
7005 | - Found in src/DivisionBeforeMultiplication.sol [Line: 27](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L27)
7006 | 
7007 | 	```solidity
7008 | 	    function calculateAlsoCorrect(uint a, uint b, uint c, uint d) external {
7009 | 	```
7010 | 
7011 | - Found in src/EnumerableSetIteration.sol [Line: 28](../tests/contract-playground/src/EnumerableSetIteration.sol#L28)
7012 | 
7013 | 	```solidity
7014 | 	    function badBytes32IterationInForLoop() external {
7015 | 	```
7016 | 
7017 | - Found in src/EnumerableSetIteration.sol [Line: 36](../tests/contract-playground/src/EnumerableSetIteration.sol#L36)
7018 | 
7019 | 	```solidity
7020 | 	    function badBytes32IterationInWhileLoop() external {
7021 | 	```
7022 | 
7023 | - Found in src/EnumerableSetIteration.sol [Line: 46](../tests/contract-playground/src/EnumerableSetIteration.sol#L46)
7024 | 
7025 | 	```solidity
7026 | 	    function badBytes32IterationInDoWhileLoop() external {
7027 | 	```
7028 | 
7029 | - Found in src/EnumerableSetIteration.sol [Line: 56](../tests/contract-playground/src/EnumerableSetIteration.sol#L56)
7030 | 
7031 | 	```solidity
7032 | 	    function badAddressIteration() external {
7033 | 	```
7034 | 
7035 | - Found in src/EnumerableSetIteration.sol [Line: 64](../tests/contract-playground/src/EnumerableSetIteration.sol#L64)
7036 | 
7037 | 	```solidity
7038 | 	    function badUintIteration() external {
7039 | 	```
7040 | 
7041 | - Found in src/ExternalCalls.sol [Line: 11](../tests/contract-playground/src/ExternalCalls.sol#L11)
7042 | 
7043 | 	```solidity
7044 | 	    function extCall(uint256 m_a) public payable {
7045 | 	```
7046 | 
7047 | - Found in src/ExternalCalls.sol [Line: 19](../tests/contract-playground/src/ExternalCalls.sol#L19)
7048 | 
7049 | 	```solidity
7050 | 	    function baseThing(address x) public {
7051 | 	```
7052 | 
7053 | - Found in src/ExternalCalls.sol [Line: 78](../tests/contract-playground/src/ExternalCalls.sol#L78)
7054 | 
7055 | 	```solidity
7056 | 	    function notExt1() external {
7057 | 	```
7058 | 
7059 | - Found in src/ExternalCalls.sol [Line: 82](../tests/contract-playground/src/ExternalCalls.sol#L82)
7060 | 
7061 | 	```solidity
7062 | 	    function notExt2() external {
7063 | 	```
7064 | 
7065 | - Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)
7066 | 
7067 | 	```solidity
7068 | 	    function transfer(address to, uint256 value) public {
7069 | 	```
7070 | 
7071 | - Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)
7072 | 
7073 | 	```solidity
7074 | 	    function approve(address spender, uint256 value) public {
7075 | 	```
7076 | 
7077 | - Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)
7078 | 
7079 | 	```solidity
7080 | 	    function transferFrom(address from, address to, uint256 value) public {
7081 | 	```
7082 | 
7083 | - Found in src/IncorrectERC20.sol [Line: 68](../tests/contract-playground/src/IncorrectERC20.sol#L68)
7084 | 
7085 | 	```solidity
7086 | 	    function transfer(
7087 | 	```
7088 | 
7089 | - Found in src/IncorrectERC20.sol [Line: 83](../tests/contract-playground/src/IncorrectERC20.sol#L83)
7090 | 
7091 | 	```solidity
7092 | 	    function approve(address spender, uint256 amount) external returns (bool) {
7093 | 	```
7094 | 
7095 | - Found in src/IncorrectERC20.sol [Line: 88](../tests/contract-playground/src/IncorrectERC20.sol#L88)
7096 | 
7097 | 	```solidity
7098 | 	    function transferFrom(
7099 | 	```
7100 | 
7101 | - Found in src/IncorrectERC721.sol [Line: 22](../tests/contract-playground/src/IncorrectERC721.sol#L22)
7102 | 
7103 | 	```solidity
7104 | 	    function approve(
7105 | 	```
7106 | 
7107 | - Found in src/IncorrectERC721.sol [Line: 41](../tests/contract-playground/src/IncorrectERC721.sol#L41)
7108 | 
7109 | 	```solidity
7110 | 	    function setApprovalForAll(
7111 | 	```
7112 | 
7113 | - Found in src/IncorrectERC721.sol [Line: 56](../tests/contract-playground/src/IncorrectERC721.sol#L56)
7114 | 
7115 | 	```solidity
7116 | 	    function transferFrom(
7117 | 	```
7118 | 
7119 | - Found in src/IncorrectERC721.sol [Line: 86](../tests/contract-playground/src/IncorrectERC721.sol#L86)
7120 | 
7121 | 	```solidity
7122 | 	    function mint(address to, uint256 tokenId) external returns (uint72) {
7123 | 	```
7124 | 
7125 | - Found in src/InternalFunctions.sol [Line: 12](../tests/contract-playground/src/InternalFunctions.sol#L12)
7126 | 
7127 | 	```solidity
7128 | 	    function setValue(uint256 _newValue) external onlyOwner {
7129 | 	```
7130 | 
7131 | - Found in src/MissingInheritance.sol [Line: 10](../tests/contract-playground/src/MissingInheritance.sol#L10)
7132 | 
7133 | 	```solidity
7134 | 	    function increment() external {
7135 | 	```
7136 | 
7137 | - Found in src/MissingInheritance.sol [Line: 25](../tests/contract-playground/src/MissingInheritance.sol#L25)
7138 | 
7139 | 	```solidity
7140 | 	    function increment() external {
7141 | 	```
7142 | 
7143 | - Found in src/MsgValueInLoop.sol [Line: 10](../tests/contract-playground/src/MsgValueInLoop.sol#L10)
7144 | 
7145 | 	```solidity
7146 | 	    function bad(address[] memory receivers) external payable {
7147 | 	```
7148 | 
7149 | - Found in src/MsgValueInLoop.sol [Line: 22](../tests/contract-playground/src/MsgValueInLoop.sol#L22)
7150 | 
7151 | 	```solidity
7152 | 	    function good(address[] memory receivers) external payable {
7153 | 	```
7154 | 
7155 | - Found in src/MsgValueInLoop.sol [Line: 36](../tests/contract-playground/src/MsgValueInLoop.sol#L36)
7156 | 
7157 | 	```solidity
7158 | 	    function bad(address[] memory receivers) external payable {
7159 | 	```
7160 | 
7161 | - Found in src/MsgValueInLoop.sol [Line: 51](../tests/contract-playground/src/MsgValueInLoop.sol#L51)
7162 | 
7163 | 	```solidity
7164 | 	    function bad(address[] memory receivers) external payable {
7165 | 	```
7166 | 
7167 | - Found in src/MsgValueInLoop.sol [Line: 68](../tests/contract-playground/src/MsgValueInLoop.sol#L68)
7168 | 
7169 | 	```solidity
7170 | 	    function bad(address[] memory receivers) external payable {
7171 | 	```
7172 | 
7173 | - Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)
7174 | 
7175 | 	```solidity
7176 | 	    function unstake() public {
7177 | 	```
7178 | 
7179 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 9](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L9)
7180 | 
7181 | 	```solidity
7182 | 	    function deductMassFundsV1() external {
7183 | 	```
7184 | 
7185 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 16](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L16)
7186 | 
7187 | 	```solidity
7188 | 	    function deductMassFundsV2() external {
7189 | 	```
7190 | 
7191 | - Found in src/RevertsAndRequriesInLoops.sol [Line: 25](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L25)
7192 | 
7193 | 	```solidity
7194 | 	     function deductMassFundsV3() external returns(uint256[] memory failedIds) {
7195 | 	```
7196 | 
7197 | - Found in src/StateChangeAfterExternalCall.sol [Line: 22](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L22)
7198 | 
7199 | 	```solidity
7200 | 	    function badSituation1() external {
7201 | 	```
7202 | 
7203 | - Found in src/StateChangeAfterExternalCall.sol [Line: 31](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L31)
7204 | 
7205 | 	```solidity
7206 | 	    function badSituation2() external {
7207 | 	```
7208 | 
7209 | - Found in src/StateChangeAfterExternalCall.sol [Line: 42](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L42)
7210 | 
7211 | 	```solidity
7212 | 	    function badSituation3() external {
7213 | 	```
7214 | 
7215 | - Found in src/StateChangeAfterExternalCall.sol [Line: 57](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L57)
7216 | 
7217 | 	```solidity
7218 | 	    function goodSituation1() external {
7219 | 	```
7220 | 
7221 | - Found in src/StateChangeAfterExternalCall.sol [Line: 66](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L66)
7222 | 
7223 | 	```solidity
7224 | 	    function goodSituation2() external {
7225 | 	```
7226 | 
7227 | - Found in src/StateChangeAfterExternalCall.sol [Line: 81](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L81)
7228 | 
7229 | 	```solidity
7230 | 	    function badSituation4() external onlyOwner {
7231 | 	```
7232 | 
7233 | - Found in src/StateChangeAfterExternalCall.sol [Line: 87](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L87)
7234 | 
7235 | 	```solidity
7236 | 	    function goodSituation3() external onlyOwner {
7237 | 	```
7238 | 
7239 | - Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 39](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L39)
7240 | 
7241 | 	```solidity
7242 | 	    function changeIt() external {
7243 | 	```
7244 | 
7245 | - Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 37](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L37)
7246 | 
7247 | 	```solidity
7248 | 	    function changeNotImmutableVar() external {
7249 | 	```
7250 | 
7251 | - Found in src/StateVariables.sol [Line: 47](../tests/contract-playground/src/StateVariables.sol#L47)
7252 | 
7253 | 	```solidity
7254 | 	    function setAddrNoZeroError(address newAddr) public {
7255 | 	```
7256 | 
7257 | - Found in src/StateVariables.sol [Line: 52](../tests/contract-playground/src/StateVariables.sol#L52)
7258 | 
7259 | 	```solidity
7260 | 	    function setAddrNoZeroRequire(address newAddr) public {
7261 | 	```
7262 | 
7263 | - Found in src/StateVariables.sol [Line: 57](../tests/contract-playground/src/StateVariables.sol#L57)
7264 | 
7265 | 	```solidity
7266 | 	    function setAddrNoCheck(address newAddr) public {
7267 | 	```
7268 | 
7269 | - Found in src/StateVariables.sol [Line: 61](../tests/contract-playground/src/StateVariables.sol#L61)
7270 | 
7271 | 	```solidity
7272 | 	    function setEmptyAlteredNumbers(
7273 | 	```
7274 | 
7275 | - Found in src/StateVariables.sol [Line: 71](../tests/contract-playground/src/StateVariables.sol#L71)
7276 | 
7277 | 	```solidity
7278 | 	    function setNonEmptyAlteredNumbers(
7279 | 	```
7280 | 
7281 | - Found in src/StateVariablesChangesWithoutEvents.sol [Line: 23](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L23)
7282 | 
7283 | 	```solidity
7284 | 	    function stateChangedNoEventEmitted(uint256 a) external {
7285 | 	```
7286 | 
7287 | - Found in src/StateVariablesChangesWithoutEvents.sol [Line: 28](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L28)
7288 | 
7289 | 	```solidity
7290 | 	    function stateChangedNoEventEmittedPlusEquals(uint256 a) external {
7291 | 	```
7292 | 
7293 | - Found in src/StateVariablesChangesWithoutEvents.sol [Line: 33](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L33)
7294 | 
7295 | 	```solidity
7296 | 	    function stateChangedToBooleanNoEventEmitted() external {
7297 | 	```
7298 | 
7299 | - Found in src/StateVariablesChangesWithoutEvents.sol [Line: 45](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L45)
7300 | 
7301 | 	```solidity
7302 | 	    function stateChangedToConstantNoEventEmitted() external {
7303 | 	```
7304 | 
7305 | - Found in src/StateVariablesChangesWithoutEvents.sol [Line: 50](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L50)
7306 | 
7307 | 	```solidity
7308 | 	    function stateChangedNoEventEmitted() external {
7309 | 	```
7310 | 
7311 | - Found in src/StateVariablesChangesWithoutEvents.sol [Line: 55](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L55)
7312 | 
7313 | 	```solidity
7314 | 	    function addressChangedNotEmitted(address a) external {
7315 | 	```
7316 | 
7317 | - Found in src/StateVariablesChangesWithoutEvents.sol [Line: 68](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L68)
7318 | 
7319 | 	```solidity
7320 | 	    function wholeStructChangedEventNotEmitted(uint256 a, uint256 b) external {
7321 | 	```
7322 | 
7323 | - Found in src/StateVariablesChangesWithoutEvents.sol [Line: 81](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L81)
7324 | 
7325 | 	```solidity
7326 | 	    function structMemberChangedEventNotEmitted(uint256 a, uint256 b) external {
7327 | 	```
7328 | 
7329 | - Found in src/StateVariablesManipulation.sol [Line: 48](../tests/contract-playground/src/StateVariablesManipulation.sol#L48)
7330 | 
7331 | 	```solidity
7332 | 	    function manipulateStateVarDirectly(
7333 | 	```
7334 | 
7335 | - Found in src/StateVariablesManipulation.sol [Line: 80](../tests/contract-playground/src/StateVariablesManipulation.sol#L80)
7336 | 
7337 | 	```solidity
7338 | 	    function manipulateDirectly(uint256[5] calldata _values) external {
7339 | 	```
7340 | 
7341 | - Found in src/StateVariablesManipulation.sol [Line: 85](../tests/contract-playground/src/StateVariablesManipulation.sol#L85)
7342 | 
7343 | 	```solidity
7344 | 	    function manipulateViaIndexAccess() external {
7345 | 	```
7346 | 
7347 | - Found in src/StateVariablesManipulation.sol [Line: 120](../tests/contract-playground/src/StateVariablesManipulation.sol#L120)
7348 | 
7349 | 	```solidity
7350 | 	    function manipulateStateVariables() external {
7351 | 	```
7352 | 
7353 | - Found in src/StateVariablesManipulation.sol [Line: 126](../tests/contract-playground/src/StateVariablesManipulation.sol#L126)
7354 | 
7355 | 	```solidity
7356 | 	    function manipulateStateVariables2() external {
7357 | 	```
7358 | 
7359 | - Found in src/StateVariablesManipulation.sol [Line: 139](../tests/contract-playground/src/StateVariablesManipulation.sol#L139)
7360 | 
7361 | 	```solidity
7362 | 	    function manipulateStateVariables4() external {
7363 | 	```
7364 | 
7365 | - Found in src/StateVariablesManipulation.sol [Line: 160](../tests/contract-playground/src/StateVariablesManipulation.sol#L160)
7366 | 
7367 | 	```solidity
7368 | 	    function manipulateStateVariables6() external {
7369 | 	```
7370 | 
7371 | - Found in src/StateVariablesManipulation.sol [Line: 176](../tests/contract-playground/src/StateVariablesManipulation.sol#L176)
7372 | 
7373 | 	```solidity
7374 | 	    function manipulateStateVariables7() external {
7375 | 	```
7376 | 
7377 | - Found in src/StateVariablesManipulation.sol [Line: 182](../tests/contract-playground/src/StateVariablesManipulation.sol#L182)
7378 | 
7379 | 	```solidity
7380 | 	    function manipulateStateVariables8() external {
7381 | 	```
7382 | 
7383 | - Found in src/StateVariablesManipulation.sol [Line: 281](../tests/contract-playground/src/StateVariablesManipulation.sol#L281)
7384 | 
7385 | 	```solidity
7386 | 	    function manipulateDirectly() external {
7387 | 	```
7388 | 
7389 | - Found in src/StateVariablesManipulation.sol [Line: 286](../tests/contract-playground/src/StateVariablesManipulation.sol#L286)
7390 | 
7391 | 	```solidity
7392 | 	    function manipulateViaIndexAccess() external {
7393 | 	```
7394 | 
7395 | - Found in src/StateVariablesManipulation.sol [Line: 314](../tests/contract-playground/src/StateVariablesManipulation.sol#L314)
7396 | 
7397 | 	```solidity
7398 | 	    function manipulateDirectly() external {
7399 | 	```
7400 | 
7401 | - Found in src/StateVariablesManipulation.sol [Line: 321](../tests/contract-playground/src/StateVariablesManipulation.sol#L321)
7402 | 
7403 | 	```solidity
7404 | 	    function manipulateViaIndexAccess() external {
7405 | 	```
7406 | 
7407 | - Found in src/StateVariablesManipulation.sol [Line: 332](../tests/contract-playground/src/StateVariablesManipulation.sol#L332)
7408 | 
7409 | 	```solidity
7410 | 	    function manipulateViaMemberAccess() external {
7411 | 	```
7412 | 
7413 | - Found in src/StateVariablesManipulation.sol [Line: 337](../tests/contract-playground/src/StateVariablesManipulation.sol#L337)
7414 | 
7415 | 	```solidity
7416 | 	    function manipulateViaMemberAccess2() external {
7417 | 	```
7418 | 
7419 | - Found in src/StateVariablesManipulation.sol [Line: 353](../tests/contract-playground/src/StateVariablesManipulation.sol#L353)
7420 | 
7421 | 	```solidity
7422 | 	    function add(uint256 i) external {
7423 | 	```
7424 | 
7425 | - Found in src/StorageParameters.sol [Line: 7](../tests/contract-playground/src/StorageParameters.sol#L7)
7426 | 
7427 | 	```solidity
7428 | 	    function editArrays() external {
7429 | 	```
7430 | 
7431 | - Found in src/TxOriginUsedForAuth.sol [Line: 16](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L16)
7432 | 
7433 | 	```solidity
7434 | 	    function authorizeUser(address _user) external {
7435 | 	```
7436 | 
7437 | - Found in src/TxOriginUsedForAuth.sol [Line: 22](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L22)
7438 | 
7439 | 	```solidity
7440 | 	    function revokeUser(address _user) external {
7441 | 	```
7442 | 
7443 | - Found in src/UnprotectedInitialize.sol [Line: 21](../tests/contract-playground/src/UnprotectedInitialize.sol#L21)
7444 | 
7445 | 	```solidity
7446 | 	    function initializeWithModifier() external firstTimeInitializing {
7447 | 	```
7448 | 
7449 | - Found in src/UnprotectedInitialize.sol [Line: 27](../tests/contract-playground/src/UnprotectedInitialize.sol#L27)
7450 | 
7451 | 	```solidity
7452 | 	    function initializeWithRevert() external {
7453 | 	```
7454 | 
7455 | - Found in src/UnprotectedInitialize.sol [Line: 37](../tests/contract-playground/src/UnprotectedInitialize.sol#L37)
7456 | 
7457 | 	```solidity
7458 | 	    function initializeWithoutModifierOrRevert() external {
7459 | 	```
7460 | 
7461 | - Found in src/UnprotectedInitialize.sol [Line: 70](../tests/contract-playground/src/UnprotectedInitialize.sol#L70)
7462 | 
7463 | 	```solidity
7464 | 	    function initializeWithoutProtection() external {
7465 | 	```
7466 | 
7467 | - Found in src/UnusedError.sol [Line: 16](../tests/contract-playground/src/UnusedError.sol#L16)
7468 | 
7469 | 	```solidity
7470 | 	    function perform() external {
7471 | 	```
7472 | 
7473 | - Found in src/UnusedStateVariables.sol [Line: 15](../tests/contract-playground/src/UnusedStateVariables.sol#L15)
7474 | 
7475 | 	```solidity
7476 | 	    function setValue(uint256 v) external {
7477 | 	```
7478 | 
7479 | - Found in src/ZeroAddressCheck.sol [Line: 12](../tests/contract-playground/src/ZeroAddressCheck.sol#L12)
7480 | 
7481 | 	```solidity
7482 | 	    function goodAddress1(address newAddr) external {
7483 | 	```
7484 | 
7485 | - Found in src/ZeroAddressCheck.sol [Line: 17](../tests/contract-playground/src/ZeroAddressCheck.sol#L17)
7486 | 
7487 | 	```solidity
7488 | 	    function goodAddress2(address newAddr) external {
7489 | 	```
7490 | 
7491 | - Found in src/ZeroAddressCheck.sol [Line: 22](../tests/contract-playground/src/ZeroAddressCheck.sol#L22)
7492 | 
7493 | 	```solidity
7494 | 	    function goodToken1(address newAddr) external {
7495 | 	```
7496 | 
7497 | - Found in src/ZeroAddressCheck.sol [Line: 27](../tests/contract-playground/src/ZeroAddressCheck.sol#L27)
7498 | 
7499 | 	```solidity
7500 | 	    function goodToken2(address newAddr) external {
7501 | 	```
7502 | 
7503 | - Found in src/ZeroAddressCheck.sol [Line: 32](../tests/contract-playground/src/ZeroAddressCheck.sol#L32)
7504 | 
7505 | 	```solidity
7506 | 	    function goodToken3(IERC20 newToken) external {
7507 | 	```
7508 | 
7509 | - Found in src/ZeroAddressCheck.sol [Line: 37](../tests/contract-playground/src/ZeroAddressCheck.sol#L37)
7510 | 
7511 | 	```solidity
7512 | 	    function goodToken4(IERC20 newToken) external {
7513 | 	```
7514 | 
7515 | - Found in src/ZeroAddressCheck.sol [Line: 42](../tests/contract-playground/src/ZeroAddressCheck.sol#L42)
7516 | 
7517 | 	```solidity
7518 | 	    function bad1(address newAddr) external {
7519 | 	```
7520 | 
7521 | - Found in src/ZeroAddressCheck.sol [Line: 46](../tests/contract-playground/src/ZeroAddressCheck.sol#L46)
7522 | 
7523 | 	```solidity
7524 | 	    function bad2(IERC20 newToken) external {
7525 | 	```
7526 | 
7527 | - Found in src/ZeroAddressCheck.sol [Line: 50](../tests/contract-playground/src/ZeroAddressCheck.sol#L50)
7528 | 
7529 | 	```solidity
7530 | 	    function bad3(address newAddr) external {
7531 | 	```
7532 | 
7533 | - Found in src/inheritance/ExtendedInheritance.sol [Line: 14](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L14)
7534 | 
7535 | 	```solidity
7536 | 	    function doSomethingElse(address target) external {
7537 | 	```
7538 | 
7539 | - Found in src/nested/1/Nested.sol [Line: 10](../tests/contract-playground/src/nested/1/Nested.sol#L10)
7540 | 
7541 | 	```solidity
7542 | 	    function updateHorseNumber(uint256 newNumberOfHorses) external {
7543 | 	```
7544 | 
7545 | - Found in src/nested/2/Nested.sol [Line: 10](../tests/contract-playground/src/nested/2/Nested.sol#L10)
7546 | 
7547 | 	```solidity
7548 | 	    function updateHorseNumber(uint256 newNumberOfHorses) external {
7549 | 	```
7550 | 
7551 | - Found in src/parent_chain/ParentChainContract.sol [Line: 15](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L15)
7552 | 
7553 | 	```solidity
7554 | 	    function increment(uint256 newNumber) public {
7555 | 	```
7556 | 
7557 | - Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)
7558 | 
7559 | 	```solidity
7560 | 	    function someOtherImportantThing() external nonReentrant onlyOwner {
7561 | 	```
7562 | 
7563 | - Found in src/router/InternalCalls.sol [Line: 120](../tests/contract-playground/src/router/InternalCalls.sol#L120)
7564 | 
7565 | 	```solidity
7566 | 	    function main() public {
7567 | 	```
7568 | 
7569 | </details>
7570 | 
7571 | 
7572 | 
7573 | ## L-45: State Variable Could Be Immutable
7574 | 
7575 | State variables that are only changed in the constructor should be declared immutable to save gas. Add the `immutable` attribute to state variables that are only changed in the constructor
7576 | 
7577 | <details><summary>36 Found Instances</summary>
7578 | 
7579 | 
7580 | - Found in src/ArbitraryTransferFrom.sol [Line: 9](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L9)
7581 | 
7582 | 	```solidity
7583 | 	    IERC20 s_token;
7584 | 	```
7585 | 
7586 | - Found in src/EmitAfterExternalCall.sol [Line: 15](../tests/contract-playground/src/EmitAfterExternalCall.sol#L15)
7587 | 
7588 | 	```solidity
7589 | 	    MaliciousActor s_actor;
7590 | 	```
7591 | 
7592 | - Found in src/ExternalCalls.sol [Line: 25](../tests/contract-playground/src/ExternalCalls.sol#L25)
7593 | 
7594 | 	```solidity
7595 | 	    MyTarget t1;
7596 | 	```
7597 | 
7598 | - Found in src/FunctionInitializingState.sol [Line: 57](../tests/contract-playground/src/FunctionInitializingState.sol#L57)
7599 | 
7600 | 	```solidity
7601 | 	    uint public v;
7602 | 	```
7603 | 
7604 | - Found in src/FunctionInitializingState.sol [Line: 59](../tests/contract-playground/src/FunctionInitializingState.sol#L59)
7605 | 
7606 | 	```solidity
7607 | 	    uint public x;
7608 | 	```
7609 | 
7610 | - Found in src/InconsistentUints.sol [Line: 5](../tests/contract-playground/src/InconsistentUints.sol#L5)
7611 | 
7612 | 	```solidity
7613 | 	    uint public uintVariable; // 1
7614 | 	```
7615 | 
7616 | - Found in src/InconsistentUints.sol [Line: 6](../tests/contract-playground/src/InconsistentUints.sol#L6)
7617 | 
7618 | 	```solidity
7619 | 	    uint256 public uint256Variable; // 1
7620 | 	```
7621 | 
7622 | - Found in src/InternalFunctions.sol [Line: 5](../tests/contract-playground/src/InternalFunctions.sol#L5)
7623 | 
7624 | 	```solidity
7625 | 	    address public owner;
7626 | 	```
7627 | 
7628 | - Found in src/MultiplePlaceholders.sol [Line: 5](../tests/contract-playground/src/MultiplePlaceholders.sol#L5)
7629 | 
7630 | 	```solidity
7631 | 	    address internal owner;
7632 | 	```
7633 | 
7634 | - Found in src/OutOfOrderRetryable.sol [Line: 39](../tests/contract-playground/src/OutOfOrderRetryable.sol#L39)
7635 | 
7636 | 	```solidity
7637 | 	    address public inbox;
7638 | 	```
7639 | 
7640 | - Found in src/OutOfOrderRetryable.sol [Line: 40](../tests/contract-playground/src/OutOfOrderRetryable.sol#L40)
7641 | 
7642 | 	```solidity
7643 | 	    address public l2contract;
7644 | 	```
7645 | 
7646 | - Found in src/OutOfOrderRetryable.sol [Line: 41](../tests/contract-playground/src/OutOfOrderRetryable.sol#L41)
7647 | 
7648 | 	```solidity
7649 | 	    uint256 public maxSubmissionCost;
7650 | 	```
7651 | 
7652 | - Found in src/OutOfOrderRetryable.sol [Line: 42](../tests/contract-playground/src/OutOfOrderRetryable.sol#L42)
7653 | 
7654 | 	```solidity
7655 | 	    uint256 public gasLimit;
7656 | 	```
7657 | 
7658 | - Found in src/OutOfOrderRetryable.sol [Line: 43](../tests/contract-playground/src/OutOfOrderRetryable.sol#L43)
7659 | 
7660 | 	```solidity
7661 | 	    uint256 public maxFeePerGas;
7662 | 	```
7663 | 
7664 | - Found in src/OutOfOrderRetryable.sol [Line: 44](../tests/contract-playground/src/OutOfOrderRetryable.sol#L44)
7665 | 
7666 | 	```solidity
7667 | 	    uint256 public gas;
7668 | 	```
7669 | 
7670 | - Found in src/StateChangeAfterExternalCall.sol [Line: 14](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L14)
7671 | 
7672 | 	```solidity
7673 | 	    MaliciousActor s_actor;
7674 | 	```
7675 | 
7676 | - Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 11](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L11)
7677 | 
7678 | 	```solidity
7679 | 	    uint256 public variableValue; // This one cannot be marked constant. (It can be marked immutable)
7680 | 	```
7681 | 
7682 | - Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 29](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L29)
7683 | 
7684 | 	```solidity
7685 | 	    uint256 public variableValue;
7686 | 	```
7687 | 
7688 | - Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 6](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L6)
7689 | 
7690 | 	```solidity
7691 | 	    uint256 potentiallyImmutableUint;
7692 | 	```
7693 | 
7694 | - Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 9](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L9)
7695 | 
7696 | 	```solidity
7697 | 	    address potentiallyImmutableAddr;
7698 | 	```
7699 | 
7700 | - Found in src/StorageConditionals.sol [Line: 5](../tests/contract-playground/src/StorageConditionals.sol#L5)
7701 | 
7702 | 	```solidity
7703 | 	    uint256 private s_sameConditionals;
7704 | 	```
7705 | 
7706 | - Found in src/StorageConditionals.sol [Line: 6](../tests/contract-playground/src/StorageConditionals.sol#L6)
7707 | 
7708 | 	```solidity
7709 | 	    uint256 private s_differentConditionals;
7710 | 	```
7711 | 
7712 | - Found in src/TestERC20.sol [Line: 7](../tests/contract-playground/src/TestERC20.sol#L7)
7713 | 
7714 | 	```solidity
7715 | 	    string public name;
7716 | 	```
7717 | 
7718 | - Found in src/TestERC20.sol [Line: 8](../tests/contract-playground/src/TestERC20.sol#L8)
7719 | 
7720 | 	```solidity
7721 | 	    string public symbol;
7722 | 	```
7723 | 
7724 | - Found in src/Trump.sol [Line: 128](../tests/contract-playground/src/Trump.sol#L128)
7725 | 
7726 | 	```solidity
7727 | 	    address payable private _taxWallet;
7728 | 	```
7729 | 
7730 | - Found in src/Trump.sol [Line: 129](../tests/contract-playground/src/Trump.sol#L129)
7731 | 
7732 | 	```solidity
7733 | 	    address payable private _teamWallet;
7734 | 	```
7735 | 
7736 | - Found in src/TxOriginUsedForAuth.sol [Line: 5](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L5)
7737 | 
7738 | 	```solidity
7739 | 	    address public owner;
7740 | 	```
7741 | 
7742 | - Found in src/UninitializedStateVariable.sol [Line: 9](../tests/contract-playground/src/UninitializedStateVariable.sol#L9)
7743 | 
7744 | 	```solidity
7745 | 	    uint256 public numPages; // GOOD (because it's initialized in constructor)
7746 | 	```
7747 | 
7748 | - Found in src/UninitializedStateVariable.sol [Line: 37](../tests/contract-playground/src/UninitializedStateVariable.sol#L37)
7749 | 
7750 | 	```solidity
7751 | 	    uint256 public myVar; // initialized in extension, hence not captured
7752 | 	```
7753 | 
7754 | - Found in src/UnprotectedInitialize.sol [Line: 9](../tests/contract-playground/src/UnprotectedInitialize.sol#L9)
7755 | 
7756 | 	```solidity
7757 | 	    address private owner;
7758 | 	```
7759 | 
7760 | - Found in src/auditor_mode/ExternalCalls.sol [Line: 9](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L9)
7761 | 
7762 | 	```solidity
7763 | 	    address private target;
7764 | 	```
7765 | 
7766 | - Found in src/auditor_mode/ExternalCalls.sol [Line: 10](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L10)
7767 | 
7768 | 	```solidity
7769 | 	    ExternalContractInterface private targetContract;
7770 | 	```
7771 | 
7772 | - Found in src/eth2/DepositContract.sol [Line: 66](../tests/contract-playground/src/eth2/DepositContract.sol#L66)
7773 | 
7774 | 	```solidity
7775 | 	    bytes32[DEPOSIT_CONTRACT_TREE_DEPTH] zero_hashes;
7776 | 	```
7777 | 
7778 | - Found in src/reused_contract_name/ContractA.sol [Line: 5](../tests/contract-playground/src/reused_contract_name/ContractA.sol#L5)
7779 | 
7780 | 	```solidity
7781 | 	    uint public x;
7782 | 	```
7783 | 
7784 | - Found in src/reused_contract_name/ContractB.sol [Line: 5](../tests/contract-playground/src/reused_contract_name/ContractB.sol#L5)
7785 | 
7786 | 	```solidity
7787 | 	    address public x;
7788 | 	```
7789 | 
7790 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 8](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L8)
7791 | 
7792 | 	```solidity
7793 | 	    address private s_router;
7794 | 	```
7795 | 
7796 | </details>
7797 | 
7798 | 
7799 | 
7800 | ## L-46: Multiple Placeholders in Modifier
7801 | 
7802 | Design the modifier to only contain 1 placeholder statement. If that is not possible, split the logic into multiple modifiers.
7803 | 
7804 | <details><summary>3 Found Instances</summary>
7805 | 
7806 | 
7807 | - Found in src/MultiplePlaceholders.sol [Line: 12](../tests/contract-playground/src/MultiplePlaceholders.sol#L12)
7808 | 
7809 | 	```solidity
7810 | 	    modifier checkOwner() {
7811 | 	```
7812 | 
7813 | - Found in src/MultiplePlaceholders.sol [Line: 19](../tests/contract-playground/src/MultiplePlaceholders.sol#L19)
7814 | 
7815 | 	```solidity
7816 | 	    modifier test2(uint256 a, uint256 b) {
7817 | 	```
7818 | 
7819 | - Found in src/MultiplePlaceholders.sol [Line: 40](../tests/contract-playground/src/MultiplePlaceholders.sol#L40)
7820 | 
7821 | 	```solidity
7822 | 	    modifier test4(uint256 a, uint256 b) {
7823 | 	```
7824 | 
7825 | </details>
7826 | 
7827 | 
7828 | 
7829 | ## L-47: Incorrect Use Of Modifier
7830 | 
7831 | If a modifier does not execute `_` or revert, the execution of the function will return the default value, which can be misleading for the caller. It is recommended that all the paths in a modifier must execute _ or revert.
7832 | 
7833 | <details><summary>2 Found Instances</summary>
7834 | 
7835 | 
7836 | - Found in src/IncorrectModifier.sol [Line: 22](../tests/contract-playground/src/IncorrectModifier.sol#L22)
7837 | 
7838 | 	```solidity
7839 | 	    modifier modifierIfRetBAD() {
7840 | 	```
7841 | 
7842 | - Found in src/IncorrectModifier.sol [Line: 30](../tests/contract-playground/src/IncorrectModifier.sol#L30)
7843 | 
7844 | 	```solidity
7845 | 	    modifier modifierIfPlaceBAD() {
7846 | 	```
7847 | 
7848 | </details>
7849 | 
7850 | 
7851 | 
7852 | ## L-48: Unchecked Return
7853 | 
7854 | Function returns a value but it is ignored. Consider checking the return value.
7855 | 
7856 | <details><summary>35 Found Instances</summary>
7857 | 
7858 | 
7859 | - Found in src/ArbitraryTransferFrom.sol [Line: 19](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L19)
7860 | 
7861 | 	```solidity
7862 | 	        s_token.transferFrom(from, to, amount);
7863 | 	```
7864 | 
7865 | - Found in src/ArbitraryTransferFrom.sol [Line: 34](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L34)
7866 | 
7867 | 	```solidity
7868 | 	        s_token.transferFrom(from_msgsender, to, am);
7869 | 	```
7870 | 
7871 | - Found in src/ArbitraryTransferFrom.sol [Line: 54](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L54)
7872 | 
7873 | 	```solidity
7874 | 	        s_token.transferFrom(msg.sender, to, amount);
7875 | 	```
7876 | 
7877 | - Found in src/DeprecatedOZFunctions.sol [Line: 32](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L32)
7878 | 
7879 | 	```solidity
7880 | 	        token.approve(spender, value);
7881 | 	```
7882 | 
7883 | - Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)
7884 | 
7885 | 	```solidity
7886 | 	        token.transferFrom(from, to, value);
7887 | 	```
7888 | 
7889 | - Found in src/EnumerableSetIteration.sol [Line: 17](../tests/contract-playground/src/EnumerableSetIteration.sol#L17)
7890 | 
7891 | 	```solidity
7892 | 	            bytes32Set.add(bytes32s[i]);
7893 | 	```
7894 | 
7895 | - Found in src/EnumerableSetIteration.sol [Line: 20](../tests/contract-playground/src/EnumerableSetIteration.sol#L20)
7896 | 
7897 | 	```solidity
7898 | 	            addressSet.add(addresses[i]);
7899 | 	```
7900 | 
7901 | - Found in src/EnumerableSetIteration.sol [Line: 23](../tests/contract-playground/src/EnumerableSetIteration.sol#L23)
7902 | 
7903 | 	```solidity
7904 | 	            uintSet.add(uints[i]);
7905 | 	```
7906 | 
7907 | - Found in src/EnumerableSetIteration.sol [Line: 31](../tests/contract-playground/src/EnumerableSetIteration.sol#L31)
7908 | 
7909 | 	```solidity
7910 | 	            bytes32Set.remove(thisBytes32);
7911 | 	```
7912 | 
7913 | - Found in src/EnumerableSetIteration.sol [Line: 40](../tests/contract-playground/src/EnumerableSetIteration.sol#L40)
7914 | 
7915 | 	```solidity
7916 | 	            bytes32Set.remove(thisBytes32);
7917 | 	```
7918 | 
7919 | - Found in src/EnumerableSetIteration.sol [Line: 50](../tests/contract-playground/src/EnumerableSetIteration.sol#L50)
7920 | 
7921 | 	```solidity
7922 | 	            bytes32Set.remove(thisBytes32);
7923 | 	```
7924 | 
7925 | - Found in src/EnumerableSetIteration.sol [Line: 59](../tests/contract-playground/src/EnumerableSetIteration.sol#L59)
7926 | 
7927 | 	```solidity
7928 | 	            addressSet.remove(thisAddress);
7929 | 	```
7930 | 
7931 | - Found in src/EnumerableSetIteration.sol [Line: 67](../tests/contract-playground/src/EnumerableSetIteration.sol#L67)
7932 | 
7933 | 	```solidity
7934 | 	            uintSet.remove(thisUint);
7935 | 	```
7936 | 
7937 | - Found in src/OutOfOrderRetryable.sol [Line: 65](../tests/contract-playground/src/OutOfOrderRetryable.sol#L65)
7938 | 
7939 | 	```solidity
7940 | 	        IInbox(inbox).createRetryableTicket({
7941 | 	```
7942 | 
7943 | - Found in src/OutOfOrderRetryable.sol [Line: 77](../tests/contract-playground/src/OutOfOrderRetryable.sol#L77)
7944 | 
7945 | 	```solidity
7946 | 	        IInbox(inbox).createRetryableTicket({
7947 | 	```
7948 | 
7949 | - Found in src/OutOfOrderRetryable.sol [Line: 92](../tests/contract-playground/src/OutOfOrderRetryable.sol#L92)
7950 | 
7951 | 	```solidity
7952 | 	        IInbox(inbox).createRetryableTicket({
7953 | 	```
7954 | 
7955 | - Found in src/OutOfOrderRetryable.sol [Line: 107](../tests/contract-playground/src/OutOfOrderRetryable.sol#L107)
7956 | 
7957 | 	```solidity
7958 | 	        IInbox(inbox).createRetryableTicket({
7959 | 	```
7960 | 
7961 | - Found in src/OutOfOrderRetryable.sol [Line: 129](../tests/contract-playground/src/OutOfOrderRetryable.sol#L129)
7962 | 
7963 | 	```solidity
7964 | 	        IInbox(inbox).outboundTransferCustomRefund(
7965 | 	```
7966 | 
7967 | - Found in src/OutOfOrderRetryable.sol [Line: 151](../tests/contract-playground/src/OutOfOrderRetryable.sol#L151)
7968 | 
7969 | 	```solidity
7970 | 	        IInbox(inbox).unsafeCreateRetryableTicket(
7971 | 	```
7972 | 
7973 | - Found in src/StateVariablesManipulation.sol [Line: 142](../tests/contract-playground/src/StateVariablesManipulation.sol#L142)
7974 | 
7975 | 	```solidity
7976 | 	        manipulateHelper(p1);
7977 | 	```
7978 | 
7979 | - Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)
7980 | 
7981 | 	```solidity
7982 | 	        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
7983 | 	```
7984 | 
7985 | - Found in src/UncheckedReturn.sol [Line: 14](../tests/contract-playground/src/UncheckedReturn.sol#L14)
7986 | 
7987 | 	```solidity
7988 | 	        one();
7989 | 	```
7990 | 
7991 | - Found in src/UncheckedReturn.sol [Line: 27](../tests/contract-playground/src/UncheckedReturn.sol#L27)
7992 | 
7993 | 	```solidity
7994 | 	        UncheckedHelperExternal(address(0x12345)).two();
7995 | 	```
7996 | 
7997 | - Found in src/router/ExternalCalls.sol [Line: 27](../tests/contract-playground/src/router/ExternalCalls.sol#L27)
7998 | 
7999 | 	```solidity
8000 | 	        a.abc();
8001 | 	```
8002 | 
8003 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 23](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L23)
8004 | 
8005 | 	```solidity
8006 | 	        router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, block.timestamp);
8007 | 	```
8008 | 
8009 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 24](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L24)
8010 | 
8011 | 	```solidity
8012 | 	        router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, block.timestamp);
8013 | 	```
8014 | 
8015 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 25](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L25)
8016 | 
8017 | 	```solidity
8018 | 	        router1.swapExactETHForTokens(amountOutMin, path, to, block.timestamp);
8019 | 	```
8020 | 
8021 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 26](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L26)
8022 | 
8023 | 	```solidity
8024 | 	        router1.swapTokensForExactETH(amountOut, amountInMax, path, to, block.timestamp);
8025 | 	```
8026 | 
8027 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 27](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L27)
8028 | 
8029 | 	```solidity
8030 | 	        router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, block.timestamp);
8031 | 	```
8032 | 
8033 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 46](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L46)
8034 | 
8035 | 	```solidity
8036 | 	        router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, deadline);
8037 | 	```
8038 | 
8039 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 47](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L47)
8040 | 
8041 | 	```solidity
8042 | 	        router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, deadline);
8043 | 	```
8044 | 
8045 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 48](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L48)
8046 | 
8047 | 	```solidity
8048 | 	        router1.swapExactETHForTokens(amountOutMin, path, to, deadline);
8049 | 	```
8050 | 
8051 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 49](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L49)
8052 | 
8053 | 	```solidity
8054 | 	        router1.swapTokensForExactETH(amountOut, amountInMax, path, to, deadline);
8055 | 	```
8056 | 
8057 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 50](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L50)
8058 | 
8059 | 	```solidity
8060 | 	        router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, deadline);
8061 | 	```
8062 | 
8063 | - Found in src/uniswap/UniswapV2Swapper.sol [Line: 51](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L51)
8064 | 
8065 | 	```solidity
8066 | 	        router1.swapETHForExactTokens(amountOut, path, to, deadline);
8067 | 	```
8068 | 
8069 | </details>
8070 | 
8071 | 
8072 | 
8073 | 
```
Page 101/103FirstPrevNextLast