#
tokens: 48391/50000 14/1140 files (page 21/94)
lines: off (toggle) GitHub
raw markdown copy
This is page 21 of 94. Use http://codebase.md/cyfrin/aderyn?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

--------------------------------------------------------------------------------
/benchmarks/solmate-safe-transfer-lib/report/change/t-test.svg:
--------------------------------------------------------------------------------

```
<svg width="960" height="540" viewBox="0 0 960 540" xmlns="http://www.w3.org/2000/svg">
<text x="480" y="32" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="16.129032258064516" opacity="1" fill="#000000">
solmate-safe-transfer-lib: Welch t test
</text>
<text x="27" y="263" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 27, 263)">
Density
</text>
<text x="510" y="513" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
t score
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="86,53 86,472 "/>
<text x="77" y="472" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,472 86,472 "/>
<text x="77" y="424" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.05
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,424 86,424 "/>
<text x="77" y="375" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.1
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,375 86,375 "/>
<text x="77" y="326" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.15
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,326 86,326 "/>
<text x="77" y="277" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.2
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,277 86,277 "/>
<text x="77" y="228" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.25
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,228 86,228 "/>
<text x="77" y="179" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.3
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,179 86,179 "/>
<text x="77" y="130" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.35
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,130 86,130 "/>
<text x="77" y="81" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.4
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,81 86,81 "/>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 932,473 "/>
<text x="99" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
-5.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="99,473 99,478 "/>
<text x="189" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
-4.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="189,473 189,478 "/>
<text x="278" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
-3.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="278,473 278,478 "/>
<text x="368" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
-2.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="368,473 368,478 "/>
<text x="458" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
-1.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="458,473 458,478 "/>
<text x="547" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
0.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="547,473 547,478 "/>
<text x="637" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
1.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="637,473 637,478 "/>
<text x="727" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
2.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="727,473 727,478 "/>
<text x="816" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
3.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="816,473 816,478 "/>
<text x="906" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
4.0
</text>
<polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="906,473 906,478 "/>
<polygon opacity="0.25" fill="#1F78B4" points="87,472 88,472 90,472 92,472 93,472 95,472 97,472 98,472 100,472 102,472 103,472 105,472 107,472 109,472 110,472 112,472 114,472 115,472 117,472 119,472 120,472 122,472 124,472 125,472 127,472 129,472 131,472 132,472 134,472 136,472 137,472 139,472 141,472 142,472 144,472 146,472 147,472 149,472 151,472 153,472 154,472 156,472 158,472 159,472 161,472 163,472 164,472 166,472 168,472 169,472 171,472 173,472 175,472 176,472 178,472 180,472 181,472 183,472 185,472 186,472 188,472 190,472 191,472 193,472 195,472 197,472 198,472 200,472 202,472 203,472 205,472 207,472 208,472 210,472 212,472 214,472 215,472 217,472 219,472 220,472 222,472 224,472 225,472 227,472 229,472 230,472 232,472 234,472 236,472 237,472 239,472 241,471 242,471 244,471 246,471 247,471 249,471 251,471 252,471 254,470 256,470 258,470 259,470 261,470 263,470 264,470 266,470 268,469 269,469 271,469 273,469 274,469 276,468 278,468 280,468 281,467 283,467 285,467 286,467 288,466 290,466 291,466 293,465 295,465 296,465 298,464 300,464 302,463 303,463 305,462 307,462 308,461 310,461 312,460 313,459 315,459 317,458 318,457 320,457 322,456 324,455 325,454 327,453 329,453 330,451 332,450 334,449 335,448 337,447 339,446 341,444 342,443 344,442 346,440 347,439 349,437 351,436 352,434 354,433 356,431 357,430 359,428 361,426 363,424 364,422 366,420 368,418 369,416 371,414 373,412 374,410 376,407 378,405 379,403 381,401 383,398 385,396 386,394 388,391 390,388 391,386 393,383 395,380 396,377 398,374 400,371 401,367 403,364 405,361 407,357 408,354 410,350 412,346 413,343 415,339 417,335 418,331 420,327 422,323 423,319 425,315 427,311 429,307 430,303 432,298 434,294 435,290 437,286 439,281 440,277 442,273 444,269 445,265 447,261 449,257 451,252 452,248 454,244 456,240 457,236 459,231 461,227 462,222 464,218 466,214 468,209 469,205 471,200 473,196 474,192 476,188 478,184 479,180 481,176 483,172 484,169 486,166 488,162 490,159 491,156 493,153 495,150 496,147 498,143 500,140 501,137 503,133 505,129 506,126 508,122 510,119 512,115 513,112 515,109 517,106 518,103 520,101 522,99 523,97 525,95 527,94 528,93 530,92 532,92 534,92 535,92 537,92 539,92 540,92 542,92 544,93 545,93 547,93 549,93 550,93 552,93 554,93 556,93 557,93 559,94 561,94 562,95 564,96 566,97 567,98 569,99 571,100 573,101 574,102 576,104 578,106 579,108 581,110 583,112 584,115 586,118 588,121 589,125 591,128 593,132 595,135 596,139 598,143 600,146 601,150 603,154 605,157 606,161 608,165 610,169 611,173 613,177 615,181 617,185 618,189 620,193 622,197 623,201 625,206 627,210 628,214 630,218 632,222 633,226 635,230 637,235 639,239 640,243 642,247 644,251 645,256 647,260 649,264 650,269 652,273 654,277 655,282 657,286 659,290 661,294 662,298 664,302 666,306 667,310 669,313 671,317 672,321 674,324 676,328 677,332 679,335 681,339 683,342 684,346 686,349 688,353 689,357 691,360 693,364 694,367 696,371 698,374 700,377 701,380 703,383 705,386 706,389 708,392 710,395 711,397 713,400 715,402 716,404 718,407 720,409 722,411 723,413 725,415 727,417 728,419 730,421 732,423 733,424 735,426 737,428 738,430 740,431 742,433 744,435 745,436 747,438 749,439 750,441 752,442 754,443 755,445 757,446 759,447 760,448 762,449 764,450 766,451 767,452 769,453 771,454 772,454 774,455 776,456 777,457 779,457 781,458 782,459 784,460 786,460 788,461 789,462 791,462 793,463 794,464 796,464 798,465 799,465 801,466 803,466 804,466 806,467 808,467 810,467 811,468 813,468 815,468 816,468 818,468 820,468 821,469 823,469 825,469 827,469 828,469 830,470 832,470 833,470 835,470 837,470 838,470 840,470 842,470 843,471 845,471 847,471 849,471 850,471 852,471 854,471 855,471 857,471 859,471 860,472 862,472 864,472 865,472 867,472 869,472 871,472 872,472 874,472 876,472 877,472 879,472 881,472 882,472 884,472 886,472 887,472 889,472 891,472 893,472 894,472 896,472 898,472 899,472 901,472 903,472 904,472 906,472 908,472 909,472 911,472 913,472 915,472 916,472 918,472 920,472 921,472 923,472 925,472 926,472 928,472 930,472 932,472 932,472 87,472 "/>
<polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="2" points="933,472 933,53 "/>
<text x="842" y="250" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
t distribution
</text>
<text x="842" y="265" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
t statistic
</text>
<rect x="812" y="250" width="20" height="10" opacity="0.25" fill="#1F78B4" stroke="none"/>
<polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="812,270 832,270 "/>
</svg>

```

--------------------------------------------------------------------------------
/aderyn_core/src/stats/token.rs:
--------------------------------------------------------------------------------

```rust
use crate::stats::util::CodeIterator;

#[derive(Debug)]
pub struct TokenDescriptor {
    pub token_type: TokenType,
    pub start_line: usize,
    pub end_line: usize,
    pub content: String,
}

#[derive(Debug, Clone, PartialEq)]
pub enum TokenType {
    CodeSingleQuotes,
    CodeDoubleQuotes,
    CodeOutsideQuotes,
    MultilineComment,
    SinglelineComment,
}

pub fn tokenize(content: &str) -> Vec<TokenDescriptor> {
    let mut iter: CodeIterator = content.parse().unwrap();

    let mut multiline_comment_bytes = vec![];
    let mut singleline_comment_bytes = vec![];
    let mut code_bytes_inside_single_quotes = vec![];
    let mut code_bytes_inside_double_quotes = vec![];
    let mut code_bytes_outside_quotes = vec![];

    let mut token_descriptors = vec![];

    #[allow(clippy::while_let_on_iterator)]
    while let Some(token) = iter.next() {
        // Track on which line no the token ends.
        // (Start by assuming it ends on the same line until we finally hit the end)
        let mut end = token.line_no;

        if token.curr == '/' && token.next.is_some_and(|c| c == '*') {
            multiline_comment_bytes.push('/');
            multiline_comment_bytes.push('*');
            iter.next();
            while let Some(next) = iter.next() {
                if next.curr == '*' && next.next.is_some_and(|c| c == '/') {
                    let multiline_end_line = iter.next().unwrap().line_no;
                    end = std::cmp::max(end, multiline_end_line);
                    multiline_comment_bytes.push('*');
                    multiline_comment_bytes.push('/');
                    break;
                }
                multiline_comment_bytes.push(next.curr);
            }
        } else if token.curr == '"' {
            code_bytes_inside_double_quotes.push('"');
            while let Some(next) = iter.next() {
                if next.curr == '"' {
                    code_bytes_inside_double_quotes.push('"');
                    end = std::cmp::max(end, next.line_no);
                    break;
                }
                code_bytes_inside_double_quotes.push(next.curr);
                if next.curr == '\\' && next.next.is_some() {
                    // escape whatever comes next
                    iter.next();
                    code_bytes_inside_double_quotes.push(next.next.unwrap());
                }
            }
        } else if token.curr == '\'' {
            code_bytes_inside_single_quotes.push('\'');
            while let Some(next) = iter.next() {
                if next.curr == '\'' {
                    code_bytes_inside_single_quotes.push('\'');
                    end = std::cmp::max(end, next.line_no);
                    break;
                }
                code_bytes_inside_single_quotes.push(next.curr);
                if next.curr == '\\' && next.next.is_some() {
                    // escape whatever comes next
                    iter.next();
                    code_bytes_inside_single_quotes.push(next.next.unwrap());
                }
            }
        } else if token.curr == '/' && token.next.is_some_and(|c| c == '/') {
            singleline_comment_bytes.push('/');
            singleline_comment_bytes.push('/');
            iter.next();
            while let Some(next) = iter.next() {
                singleline_comment_bytes.push(next.curr);
                if next.curr == '\n' {
                    break;
                }
            }
        } else {
            // keep going until the next char is one of the above tokens
            code_bytes_outside_quotes.push(token.curr);
            // let staw_away = ['\'', '"', '/'];

            let staw_away = ['\'', '"', '/'];

            let mut curr = token.next;

            while let Some(next) = curr {
                if staw_away.iter().any(|x| x == &next) {
                    break;
                }
                let next_token = iter.next().unwrap();
                end = std::cmp::max(end, next_token.line_no);
                code_bytes_outside_quotes.push(next_token.curr);
                curr = next_token.next;
            }
        }

        if !multiline_comment_bytes.is_empty() {
            token_descriptors.push(TokenDescriptor {
                token_type: TokenType::MultilineComment,
                start_line: token.line_no,
                end_line: end,
                content: multiline_comment_bytes.iter().collect(),
            });
        }

        if !singleline_comment_bytes.is_empty() {
            token_descriptors.push(TokenDescriptor {
                token_type: TokenType::SinglelineComment,
                start_line: token.line_no,
                end_line: end,
                content: singleline_comment_bytes.iter().collect(),
            });
        }

        if !code_bytes_inside_double_quotes.is_empty() {
            token_descriptors.push(TokenDescriptor {
                token_type: TokenType::CodeDoubleQuotes,
                start_line: token.line_no,
                end_line: end,
                content: code_bytes_inside_double_quotes.iter().collect(),
            });
        }

        if !code_bytes_inside_single_quotes.is_empty() {
            token_descriptors.push(TokenDescriptor {
                token_type: TokenType::CodeSingleQuotes,
                start_line: token.line_no,
                end_line: end,
                content: code_bytes_inside_single_quotes.iter().collect(),
            });
        }

        if !code_bytes_outside_quotes.is_empty() {
            token_descriptors.push(TokenDescriptor {
                token_type: TokenType::CodeOutsideQuotes,
                start_line: token.line_no,
                end_line: end,
                content: code_bytes_outside_quotes.iter().collect(),
            });
        }

        multiline_comment_bytes.clear();
        singleline_comment_bytes.clear();
        code_bytes_inside_single_quotes.clear();
        code_bytes_inside_double_quotes.clear();
        code_bytes_outside_quotes.clear();
    }
    token_descriptors
}

#[derive(Debug, Clone)]
pub struct CodeLines {
    pub info_lines: usize,
    pub actual_first_line: isize,
    pub last_line_has_code: bool,
}

#[derive(Clone, Debug)]
pub struct TokenInsight {
    pub token_type: TokenType,
    pub start_line: usize,
    pub end_line: usize,
    pub code_lines: CodeLines,
    pub starts_with_newline: bool,
    pub ends_with_newline: bool,
}

impl From<&TokenDescriptor> for TokenInsight {
    #[allow(clippy::let_and_return)]
    fn from(value: &TokenDescriptor) -> Self {
        let insight = TokenInsight {
            code_lines: match value.token_type.clone() {
                TokenType::CodeDoubleQuotes | TokenType::CodeSingleQuotes => CodeLines {
                    info_lines: value.end_line - value.start_line + 1,
                    actual_first_line: 0,
                    last_line_has_code: true,
                },
                _ => value.token_type.number_of_lines(&value.content),
            },
            start_line: value.start_line,
            end_line: value.end_line,
            token_type: value.token_type.clone(),
            starts_with_newline: value.content.starts_with('\n'),
            ends_with_newline: value.content.ends_with('\n'),
        };

        insight
    }
}

impl TokenType {
    pub fn number_of_lines(&self, content: &str) -> CodeLines {
        match self {
            TokenType::CodeOutsideQuotes => {
                let mut non_blank_lines = 0;
                let mut actual_first_line = -1;
                let mut count = 0;
                let mut last_line_has_code = false;
                #[allow(clippy::explicit_counter_loop)]
                for curr in content.split('\n') {
                    if curr.trim() != "" {
                        non_blank_lines += 1;
                        if actual_first_line == -1 {
                            actual_first_line = count;
                        }
                        last_line_has_code = true;
                    } else {
                        last_line_has_code = false;
                    }
                    count += 1;
                }

                CodeLines { info_lines: non_blank_lines, actual_first_line, last_line_has_code }
            }
            _ => CodeLines {
                info_lines: 0, // we don't care about these values
                actual_first_line: -1,
                last_line_has_code: true,
            },
        }
    }
}

impl TokenInsightGroup {
    pub fn total_contribution(&self) -> usize {
        let len = self.token_insights.len();
        let mut total = 0;

        for i in 0..len {
            let curr = &self.token_insights[i];
            if curr.code_lines.actual_first_line == -1 {
                continue;
            }
            total += curr.code_lines.info_lines;
            //todo! do not over count
            if i > 0 {
                let prev = &self.token_insights[i - 1];
                if curr.code_lines.actual_first_line == 0
                    && curr.start_line == prev.end_line
                    && prev.code_lines.actual_first_line != -1
                {
                    total -= 1;
                }
            }
        }

        total
    }
}

#[derive(Debug, PartialEq)]
pub enum HighLevelType {
    Code,
    NotCode,
}

impl From<TokenType> for HighLevelType {
    fn from(value: TokenType) -> Self {
        match value {
            TokenType::CodeDoubleQuotes
            | TokenType::CodeOutsideQuotes
            | TokenType::CodeSingleQuotes => Self::Code,
            TokenType::MultilineComment | TokenType::SinglelineComment => Self::NotCode,
        }
    }
}

#[derive(Debug)]
pub struct TokenInsightGroup {
    pub token_insights: Vec<TokenInsight>,
    pub start_line: usize,
    pub end_line: usize,
    pub token_type: HighLevelType,
}

impl TokenInsightGroup {
    pub fn last_token_insight_has_code_in_its_last_line(&self) -> bool {
        self.token_insights.last().is_some_and(|insight| insight.code_lines.last_line_has_code)
    }
}

```

--------------------------------------------------------------------------------
/benchmarks/aderyn/report/index.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>aderyn - Criterion.rs</title>
    <style type="text/css">
        body {
            font: 14px Helvetica Neue;
            text-rendering: optimizelegibility;
        }

        .body {
            width: 960px;
            margin: auto;
        }

        th {
            font-weight: 200
        }

        th,
        td {
            padding-right: 3px;
            padding-bottom: 3px;
        }

        a:link {
            color: #1F78B4;
            text-decoration: none;
        }

        th.ci-bound {
            opacity: 0.6
        }

        td.ci-bound {
            opacity: 0.5
        }

        .stats {
            width: 80%;
            margin: auto;
            display: flex;
        }

        .additional_stats {
            flex: 0 0 60%
        }

        .additional_plots {
            flex: 1
        }

        h2 {
            font-size: 36px;
            font-weight: 300;
        }

        h3 {
            font-size: 24px;
            font-weight: 300;
        }

        #footer {
            height: 40px;
            background: #888;
            color: white;
            font-size: larger;
            font-weight: 300;
        }

        #footer a {
            color: white;
            text-decoration: underline;
        }

        #footer p {
            text-align: center
        }
    </style>
</head>

<body>
    <div class="body">
        <h2>aderyn</h2>
        <div class="absolute">
            <section class="plots">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="pdf.svg">
                                    <img src="pdf_small.svg" alt="PDF of Slope" width="450" height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="iteration_times.svg">
                                    <img src="iteration_times_small.svg" alt="Iteration Times" width="450" height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </section>
            <section class="stats">
                <div class="additional_stats">
                    <h4>Additional Statistics:</h4>
                    <table>
                        <thead>
                            <tr>
                                <th></th>
                                <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                                <th>Estimate</th>
                                <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>R&#xb2;</td>
                                <td class="ci-bound">0.0006964</td>
                                <td>0.0007201</td>
                                <td class="ci-bound">0.0006908</td>
                            </tr>
                            <tr>
                                <td>Mean</td>
                                <td class="ci-bound">110.01 ms</td>
                                <td>114.67 ms</td>
                                <td class="ci-bound">119.88 ms</td>
                            </tr>
                            <tr>
                                <td title="Standard Deviation">Std. Dev.</td>
                                <td class="ci-bound">18.201 ms</td>
                                <td>25.380 ms</td>
                                <td class="ci-bound">32.321 ms</td>
                            </tr>
                            <tr>
                                <td>Median</td>
                                <td class="ci-bound">103.04 ms</td>
                                <td>107.56 ms</td>
                                <td class="ci-bound">114.96 ms</td>
                            </tr>
                            <tr>
                                <td title="Median Absolute Deviation">MAD</td>
                                <td class="ci-bound">14.319 ms</td>
                                <td>17.426 ms</td>
                                <td class="ci-bound">23.442 ms</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="additional_plots">
                    <h4>Additional Plots:</h4>
                    <ul>
                        
                        <li>
                            <a href="typical.svg">Typical</a>
                        </li>
                        <li>
                            <a href="mean.svg">Mean</a>
                        </li>
                        <li>
                            <a href="SD.svg">Std. Dev.</a>
                        </li>
                        <li>
                            <a href="median.svg">Median</a>
                        </li>
                        <li>
                            <a href="MAD.svg">MAD</a>
                        </li>
                    </ul>
                </div>
            </section>
            <section class="explanation">
                <h4>Understanding this report:</h4>
                <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region
                    shows the estimated probability of an iteration taking a certain amount of time, while the line
                    shows the mean. Click on the plot for a larger view showing the outliers.</p>
                <p>The plot on the right shows the average time per iteration for the samples. Each point 
                    represents one sample.</p>
                <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the
                        documentation</a> for more details on the additional statistics.</p>
            </section>
        </div>
        <section class="plots">
            <h3>Change Since Previous Benchmark</h3>
            <div class="relative">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="both/pdf.svg">
                                    <img src="relative_pdf_small.svg" alt="PDF Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="both/iteration_times.svg">
                                    <img src="relative_iteration_times_small.svg" alt="Iteration Time Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>
        <section class="stats">
            <div class="additional_stats">
                <h4>Additional Statistics:</h4>
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                            <th>Estimate</th>
                            <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Change in time</td>
                            <td class="ci-bound">+18.460%</td>
                            <td>+23.709%</td>
                            <td class="ci-bound">+29.085%</td>
                            <td>(p = 0.00 &lt;
                                0.05)</td>
                        </tr>
                    </tbody>
                </table>
                Performance has regressed.
            </div>
            <div class="additional_plots">
                <h4>Additional Plots:</h4>
                <ul>
                    
                    <li>
                        <a href="change/mean.svg">Change in mean</a>
                    </li>
                    <li>
                        <a href="change/median.svg">Change in median</a>
                    </li>
                    <li>
                        <a href="change/t-test.svg">T-Test</a>
                    </li>
                </ul>
            </div>
        </section>
        <section class="explanation">
            <h4>Understanding this report:</h4>
            <p>The plot on the left shows the probability of the function taking a certain amount of time. The red
                curve represents the saved measurements from the last time this benchmark was run, while the blue curve
                shows the measurements from this run. The lines represent the mean time per iteration. Click on the
                plot for a larger view.</p>
            <p>The plot on the right shows the iteration times for the two measurements. Again, the red dots represent
                the previous measurement while the blue dots show the current measurement.</p>
            <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the
                    documentation</a> for more details on the additional statistics.</p>
        </section>
    </div>
    <div id="footer">
        <p>This report was generated by
            <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
            library in Rust.</p>
    </div>
</body>

</html>
```

--------------------------------------------------------------------------------
/aderyn_core/src/detect/high/incorrect_erc721_interface.rs:
--------------------------------------------------------------------------------

```rust
use std::{collections::BTreeMap, error::Error};

use crate::ast::{ASTNode, NodeID, Visibility};

use crate::{
    capture,
    context::{browser::ExtractFunctionDefinitions, workspace::WorkspaceContext},
    detect::detector::{IssueDetector, IssueDetectorNamePool, IssueSeverity},
};
use eyre::Result;

#[derive(Default)]
pub struct IncorrectERC721InterfaceDetector {
    // Keys are: [0] source file name, [1] line number, [2] character location of node.
    // Do not add items manually, use `capture!` to add nodes to this BTreeMap.
    found_instances: BTreeMap<(String, usize, String), NodeID>,
}

impl IssueDetector for IncorrectERC721InterfaceDetector {
    fn detect(&mut self, context: &WorkspaceContext) -> Result<bool, Box<dyn Error>> {
        // Analyze each contract in context
        for current_contract in context.contract_definitions() {
            // Look through it's inheritance hierarchy to determine if it's an ERC721
            let contract_ids = &current_contract.linearized_base_contracts;
            let current_contract_is_erc721 = contract_ids.iter().any(|i| {
                context.nodes.get(i).is_some_and(|c| {
                    if let ASTNode::ContractDefinition(contract) = c
                        && contract.name.contains("ERC721")
                    {
                        return true;
                    }
                    false
                })
            });

            if !current_contract_is_erc721 {
                continue;
            }

            // Now we know that current contract is an ERC721

            for contract_id in contract_ids {
                if let Some(ASTNode::ContractDefinition(contract)) = context.nodes.get(contract_id)
                {
                    let functions = ExtractFunctionDefinitions::from(contract).extracted;

                    for func in functions {
                        if (func.visibility != Visibility::Public
                            && func.visibility != Visibility::External)
                            || !func.implemented
                        {
                            continue;
                        }

                        if func.represents_erc721_balance_of() && !func.returns_uint256() {
                            capture!(self, context, func);
                        }

                        if (func.represents_erc721_get_approved()
                            || func.represents_erc721_owner_of())
                            && !func.returns_address()
                        {
                            capture!(self, context, func);
                        }

                        if (func.represents_erc721_safe_transfer_from()
                            || func.represents_erc721_transfer_from())
                            && !func.returns_nothing()
                        {
                            capture!(self, context, func);
                        }

                        if (func.represents_erc721_approve()
                            || func.represents_erc721_set_approval_for_all())
                            && !func.returns_nothing()
                        {
                            capture!(self, context, func);
                        }

                        if func.represents_erc721_is_approved_for_all() && !func.returns_bool() {
                            capture!(self, context, func);
                        }
                    }
                }
            }
        }

        Ok(!self.found_instances.is_empty())
    }

    fn severity(&self) -> IssueSeverity {
        IssueSeverity::High
    }

    fn title(&self) -> String {
        String::from("Incorrect ERC721 interface")
    }

    fn description(&self) -> String {
        String::from(
            "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.",
        )
    }

    fn instances(&self) -> BTreeMap<(String, usize, String), NodeID> {
        self.found_instances.clone()
    }

    fn name(&self) -> String {
        format!("{}", IssueDetectorNamePool::IncorrectERC721Interface)
    }
}

mod erc721_matching_function_signature_helper {
    //! This module matches function signature only (name + parameters)
    //! This means, that the return value could be different.

    use crate::ast::FunctionDefinition;

    struct SignatureMatcher<'a> {
        name: &'a str,
        parameter_types: Vec<&'a str>,
    }

    // Helps with checking if a function definition satisfied a signature matcher
    impl SignatureMatcher<'_> {
        fn satisfies(&self, func: &FunctionDefinition) -> bool {
            if func.name != self.name {
                return false;
            }
            let params = &func.parameters.parameters;
            if params.len() != self.parameter_types.len() {
                return false;
            }
            #[allow(clippy::needless_range_loop)]
            for idx in 0..params.len() {
                if let Some(func_param_type) = params[idx].type_descriptions.type_string.as_ref() {
                    let target = &self.parameter_types[idx];
                    if *target == "address" {
                        if func_param_type == "address" || func_param_type == "address payable" {
                            continue;
                        } else {
                            return false;
                        }
                    } else if func_param_type != target {
                        return false;
                    }
                } else {
                    return false;
                }
            }
            true
        }
    }

    // ERC721 function signature matching
    impl FunctionDefinition {
        pub fn represents_erc721_get_approved(&self) -> bool {
            let satisifer =
                SignatureMatcher { name: "getApproved", parameter_types: vec!["uint256"] };
            satisifer.satisfies(self)
        }

        pub fn represents_erc721_transfer_from(&self) -> bool {
            let satisifer = SignatureMatcher {
                name: "transferFrom",
                parameter_types: vec!["address", "address", "uint256"],
            };
            satisifer.satisfies(self)
        }

        pub fn represents_erc721_approve(&self) -> bool {
            let satisifer =
                SignatureMatcher { name: "approve", parameter_types: vec!["address", "uint256"] };
            satisifer.satisfies(self)
        }

        pub fn represents_erc721_is_approved_for_all(&self) -> bool {
            let satisifer = SignatureMatcher {
                name: "isApprovedForAll",
                parameter_types: vec!["address", "address"],
            };
            satisifer.satisfies(self)
        }

        pub fn represents_erc721_balance_of(&self) -> bool {
            let satisifer =
                SignatureMatcher { name: "balanceOf", parameter_types: vec!["address"] };
            satisifer.satisfies(self)
        }

        pub fn represents_erc721_owner_of(&self) -> bool {
            let satisifer = SignatureMatcher { name: "ownerOf", parameter_types: vec!["uint256"] };
            satisifer.satisfies(self)
        }

        pub fn represents_erc721_safe_transfer_from(&self) -> bool {
            let type_1_staisfier = SignatureMatcher {
                name: "safeTransferFrom",
                parameter_types: vec!["address", "address", "uint256", "bytes"],
            };

            let type_2_satisifer = SignatureMatcher {
                name: "safeTransferFrom",
                parameter_types: vec!["address", "address", "uint256"],
            };

            type_1_staisfier.satisfies(self) || type_2_satisifer.satisfies(self)
        }

        pub fn represents_erc721_set_approval_for_all(&self) -> bool {
            let satisfier = SignatureMatcher {
                name: "setApprovalForAll",
                parameter_types: vec!["address", "bool"],
            };
            satisfier.satisfies(self)
        }
    }

    // Helpers to match return types (bool & uint256)
    impl FunctionDefinition {
        pub fn returns_nothing(&self) -> bool {
            self.return_parameters.parameters.is_empty()
        }

        pub fn returns_bool(&self) -> bool {
            let params = &self.return_parameters.parameters;
            params.len() == 1
                && params[0]
                    .type_descriptions
                    .type_string
                    .as_ref()
                    .is_some_and(|type_string| type_string == "bool")
        }

        pub fn returns_uint256(&self) -> bool {
            let params = &self.return_parameters.parameters;
            params.len() == 1
                && params[0]
                    .type_descriptions
                    .type_string
                    .as_ref()
                    .is_some_and(|type_string| type_string == "uint256")
        }

        pub fn returns_address(&self) -> bool {
            let params = &self.return_parameters.parameters;
            params.len() == 1
                && params[0].type_descriptions.type_string.as_ref().is_some_and(|type_string| {
                    type_string == "address" || type_string == "address payable"
                })
        }
    }
}

#[cfg(test)]
mod incorrect_erc721_tests {

    use crate::detect::{
        detector::IssueDetector, high::incorrect_erc721_interface::IncorrectERC721InterfaceDetector,
    };

    #[test]

    fn test_incorrect_erc721_functions() {
        let context = crate::detect::test_utils::load_solidity_source_unit(
            "../tests/contract-playground/src/IncorrectERC721.sol",
        );

        let mut detector = IncorrectERC721InterfaceDetector::default();
        let found = detector.detect(&context).unwrap();

        // We capture every faulty method in the IncorrectERC721 contract that has the wrong return
        // type

        assert!(found);

        assert_eq!(detector.instances().len(), 8);
    }
}

```

--------------------------------------------------------------------------------
/aderyn_driver/src/interface/markdown.rs:
--------------------------------------------------------------------------------

```rust
use std::{
    collections::{HashMap, HashSet},
    io::{Result, Write},
    path::{Path, PathBuf},
};

use aderyn_core::{context::workspace::WorkspaceContext, report::*};

use crate::process::WorkspaceContextWrapper;

use super::util::{carve_shortest_path, files_details};

pub fn print_report(
    writer: &mut Box<dyn Write>,
    report: &Report,
    cx_wrapper: &WorkspaceContextWrapper,
    output_rel_path: String,
    no_snippets: bool,
) -> Result<()> {
    let (contexts, root_path) = (&cx_wrapper.contexts, &cx_wrapper.root_path);

    print_title_and_disclaimer(writer.as_mut())?;
    print_table_of_contents(writer.as_mut(), report)?;
    print_contract_summary(writer.as_mut(), report, contexts)?;

    let (high_issues, low_issues) = report.detailed_issues(contexts);

    let all_issues = vec![
        (high_issues.issues, "# High Issues\n", "H"),
        (low_issues.issues, "# Low Issues\n", "L"),
    ];

    let file_contents = contexts
        .iter()
        .flat_map(|context| context.source_units())
        .map(|source_unit| {
            (
                source_unit.absolute_path.as_ref().unwrap().to_owned(),
                source_unit.source.as_ref().unwrap(),
            )
        })
        .collect::<HashMap<_, _>>();

    for (issues, heading, severity) in all_issues {
        let mut counter = 0;

        if !issues.is_empty() {
            writeln!(writer, "{}", heading).unwrap();
            for issue_body in &issues {
                counter += 1;
                print_issue(
                    writer,
                    PrintIssueParams {
                        issue_body,
                        severity,
                        number: counter,
                        root_path,
                        output_rel_path: output_rel_path.clone(),
                        no_snippets,
                    },
                    &file_contents,
                )?;
            }
        }
    }

    Ok(())
}

struct PrintIssueParams<'a> {
    issue_body: &'a IssueBody,
    severity: &'a str,
    number: i32,
    root_path: &'a Path,
    output_rel_path: String,
    no_snippets: bool,
}

fn print_title_and_disclaimer<W: Write>(mut writer: W) -> Result<()> {
    writeln!(writer, "# Aderyn Analysis Report\n")?;
    writeln!(
        writer,
        "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."
    )?;
    Ok(())
}
fn print_contract_summary<W: Write>(
    mut writer: W,
    report: &Report,
    contexts: &[WorkspaceContext],
) -> Result<()> {
    let mut all_files_details = FilesDetails::default();
    for context in contexts {
        all_files_details = all_files_details + &files_details(context)
    }

    let mut all_files_summary = FilesSummary::default();
    for details in &all_files_details.files_details {
        all_files_summary.total_sloc += details.n_sloc;
        all_files_summary.total_source_units += 1;
    }

    writeln!(writer, "# Summary\n")?;

    // Files Summary
    {
        writeln!(writer, "## Files Summary\n")?;

        // Start the markdown table
        writeln!(writer, "| Key | Value |")?;
        writeln!(writer, "| --- | --- |")?;
        writeln!(writer, "| .sol Files | {} |", all_files_summary.total_source_units)?;
        writeln!(writer, "| Total nSLOC | {} |", all_files_summary.total_sloc)?;

        writeln!(writer, "\n")?; // Add an extra newline for spacing
    }

    // Files Details
    {
        writeln!(writer, "## Files Details\n")?;

        // Start the markdown table with the header
        writeln!(writer, "| Filepath | nSLOC |")?;
        writeln!(writer, "| --- | --- |")?;

        let mut files_details = all_files_details;
        files_details.files_details.sort_by(|a, b| a.file_path.cmp(&b.file_path));

        files_details.files_details.iter().for_each(|detail| {
            writeln!(writer, "| {} | {} |", detail.file_path, detail.n_sloc).unwrap();
        });

        writeln!(writer, "| **Total** | **{}** |", all_files_summary.total_sloc)?;
        writeln!(writer, "\n")?; // Add an extra newline for spacing
    }

    // Analysis Summary
    {
        let issue_count = report.issue_count();
        writeln!(writer, "## Issue Summary\n")?;

        // Start the markdown table
        writeln!(writer, "| Category | No. of Issues |")?;
        writeln!(writer, "| --- | --- |")?;
        writeln!(writer, "| High | {} |", issue_count.high)?;
        writeln!(writer, "| Low | {} |", issue_count.low)?;
        writeln!(writer, "\n")?; // Add an extra newline for spacing
    }

    Ok(())
}

fn print_table_of_contents<W: Write>(mut writer: W, report: &Report) -> Result<()> {
    fn print_table_of_content<T>(issues: &[Issue], mut w: T, severity: &str)
    where
        T: Write,
    {
        for (index, issue) in issues.iter().enumerate() {
            let issue_title_slug = issue
                .title
                .to_lowercase()
                .replace(' ', "-")
                .replace(|c: char| !c.is_ascii_alphanumeric() && c != '-', "");
            writeln!(
                w,
                "  - [{}-{}: {}](#{}-{}-{})",
                severity,
                index + 1,
                issue.title,
                severity.to_ascii_lowercase(),
                index + 1,
                issue_title_slug
            )
            .unwrap();
        }
    }

    fn display<T: Write>(title: &str, issues: &[Issue], mut writer: T, severity: &str) {
        if !issues.is_empty() {
            writeln!(writer, "{}", title).unwrap();
            print_table_of_content(issues, &mut writer, severity);
        }
    }

    writeln!(writer, "# Table of Contents\n")?;
    writeln!(writer, "- [Summary](#summary)")?;
    writeln!(writer, "  - [Files Summary](#files-summary)")?;
    writeln!(writer, "  - [Files Details](#files-details)")?;
    writeln!(writer, "  - [Issue Summary](#issue-summary)")?;

    let issues = [
        (&report.highs, "- [High Issues](#high-issues)", "H"),
        (&report.lows, "- [Low Issues](#low-issues)", "L"),
    ];

    issues.iter().for_each(|rec| {
        display(rec.1, rec.0, &mut writer, rec.2);
    });

    writeln!(writer, "\n")?; // Add an extra newline for spacing
    Ok(())
}

fn print_issue(
    writer: &mut Box<dyn Write>,
    params: PrintIssueParams,
    file_data: &HashMap<String, &String>,
) -> Result<()> {
    let is_file = params.root_path.is_file();

    writeln!(
        writer,
        "## {}-{}: {}\n\n{}\n", // <a name> is the anchor for the issue title
        params.severity, params.number, params.issue_body.title, params.issue_body.description
    )?;
    let mut line_nos_printed: HashSet<(String, usize)> = HashSet::new();
    writeln!(
        writer,
        "<details><summary>{} Found Instances</summary>\n\n",
        &params.issue_body.instances.len()
    )?;
    for instance in &params.issue_body.instances {
        // If this line number has already been printed for this issue, skip it
        // This occurs when multiple instances of the same issue are found on the same line.
        // We only want to print the line once in the markdown report.
        // Other formats may want this repetition, but not the markdown report.
        if line_nos_printed.contains(&(instance.contract_path.clone(), instance.line_no)) {
            continue;
        }
        line_nos_printed.insert((instance.contract_path.clone(), instance.line_no));

        let path = {
            if is_file {
                String::from(params.root_path.to_str().unwrap())
            } else {
                // dbg!(&instance.contract_path.clone());
                // String::from("/".to_string() + &instance.contract_path.clone())

                String::from(
                    params
                        .root_path
                        .join(instance.contract_path.clone())
                        .as_path()
                        .to_str()
                        .unwrap(),
                )
            }
        };

        if params.no_snippets {
            writeln!(
                writer,
                "- Found in {} [Line: {}]({}#L{})",
                instance.contract_path,
                instance.line_no,
                carve_shortest_path(
                    std::fs::canonicalize(PathBuf::from(params.output_rel_path.clone())).unwrap(),
                    std::fs::canonicalize(&path).unwrap()
                )
                .to_str()
                .unwrap(),
                instance.line_no,
            )?;
            continue;
        }

        let line = file_data.get(&instance.contract_path).unwrap();

        let line_preview = line.split('\n').skip(instance.line_no - 1).take(1).next().unwrap();

        if let Some(hint) = instance.hint.as_ref() {
            writeln!(
                writer,
                "- Found in {} [Line: {}]({}#L{})\n\n\t{}\n\t```solidity\n\t{}\n\t```\n",
                instance.contract_path,
                instance.line_no,
                carve_shortest_path(
                    std::fs::canonicalize(PathBuf::from(params.output_rel_path.clone())).unwrap(),
                    std::fs::canonicalize(&path).unwrap()
                )
                .to_str()
                .unwrap(),
                instance.line_no,
                hint,
                line_preview,
            )?;
        } else {
            writeln!(
                writer,
                "- Found in {} [Line: {}]({}#L{})\n\n\t```solidity\n\t{}\n\t```\n",
                instance.contract_path,
                instance.line_no,
                carve_shortest_path(
                    std::fs::canonicalize(PathBuf::from(params.output_rel_path.clone())).unwrap(),
                    std::fs::canonicalize(&path).unwrap()
                )
                .to_str()
                .unwrap(),
                instance.line_no,
                line_preview,
            )?;
        }
    }
    writeln!(writer, "</details>\n")?;
    line_nos_printed.clear();
    writeln!(writer, "\n")?; // Add an extra newline for spacing
    Ok(())
}

```

--------------------------------------------------------------------------------
/aderyn/src/main.rs:
--------------------------------------------------------------------------------

```rust
use aderyn::{
    aderyn_is_currently_running_newest_version, birdsong,
    completions::SupportedShellsForCompletions,
    create_aderyn_toml_file_at, initialize_niceties,
    lsp::spin_up_language_server,
    mcp::{spin_up_http_stream_mcp_server, spin_up_stdio_mcp_server},
    print_all_detectors_view, print_detail_view,
};
use aderyn_driver::driver::{self, Args, kick_off_report_creation};
use clap::{ArgGroup, CommandFactory, Parser, Subcommand, ValueHint};
use clap_complete::{Shell, generate};
use indoc::indoc;
use std::path::PathBuf;

#[derive(Parser, Debug)]
#[command(
    author,
    version,
    about = indoc!{
        r#"Aderyn - Rust based Solidity Static analyzer.

        Quickstart:
        cd my-solidity-project/
        aderyn

        It outputs report.md if the solidity project is foundry/hardhat/soldeer.

        In the case that it's not, it's important to create a config file via the
        command `aderyn init` in the workspace root.

        For more examples, visit docs: https://cyfrin.gitbook.io/cyfrin-docs/aderyn-cli
        Also ask questions via command line: `aderyn docs "how to configure scan options?"`

        Help Aderyn stay open source by giving us a star on Github.
        Repository: https://github.com/cyfrin/aderyn
    "#},
    group(ArgGroup::new("stdout_dependent").requires("stdout")),
)]
pub struct CommandLineArgs {
    /// Commands to initialize a config file and docs help
    #[clap(subcommand)]
    subcommand: Option<MainSubcommand>,

    /// Solidity project root directory
    #[arg(default_value = ".", value_hint = ValueHint::DirPath)]
    root: String,

    /// Path to the contracts source directory (relative to the root)
    /// By default, it is auto detected in most projects.
    #[arg(short, long, use_value_delimiter = true, verbatim_doc_comment, value_hint =  ValueHint::DirPath)]
    src: Option<String>,

    /// List of path fragments to include, delimited by comma (no spaces)
    /// By default, it is auto detected.
    ///
    /// Use this to include only specified source files in the analysis:
    /// Examples:
    ///     -i src/MyContract.sol
    ///     -i src/MyContract.sol,src/MyOtherContract.sol
    #[arg(short = 'i', long, use_value_delimiter = true, verbatim_doc_comment, value_hint = ValueHint::Other)]
    path_includes: Option<Vec<String>>,

    /// List of path fragments to exclude, delimited by comma (no spaces)
    /// By default, it is auto detected.
    ///
    /// Use this to exclude only specified source files in the analysis:
    /// Examples:
    ///     -x src/MyContract.sol
    ///     -x src/MyContract.sol,src/MyOtherContract.sol
    #[arg(short = 'x', long, use_value_delimiter = true, verbatim_doc_comment, value_hint = ValueHint::Other)]
    path_excludes: Option<Vec<String>>,

    /// Desired file path for the final report
    /// Output file extension (.json/.md/.sarif) decides the format.
    ///
    /// NOTE: Allowed formats: JSON, Markdown, Sarif
    /// NOTE: Overwrites existing file if found in the same path.
    #[arg(short, long, default_value = "report.md", verbatim_doc_comment, value_hint = ValueHint::FilePath)]
    output: String,

    /// Start Aderyn's LSP server on stdout. (Must be accompanied with `--stdout`)
    #[arg(short, long, group = "stdout_dependent")]
    lsp: bool,

    /// Only use the high detectors
    #[arg(long)]
    highs_only: bool,

    /// After generating report, skip checking if a new version of Aderyn is available.
    #[arg(long)]
    skip_update_check: bool,

    // ---------- Hidden arguments --------------- //
    /// Serialize the reports to stdout, don't write to files.
    #[arg(long, name = "stdout", hide = true)]
    stdout: bool,

    /// Skip counting number of lines of code.
    #[arg(long, hide = true)]
    skip_cloc: bool,

    /// Run in Auditor mode, which only outputs manual audit helpers
    #[arg(long, hide = true)]
    auditor_mode: bool,

    /// Do not include code snippets in the report (reduces markdown report size in large repos)
    #[arg(long, hide = true)]
    no_snippets: bool,
}

#[derive(Debug, Subcommand)]
enum MainSubcommand {
    /// Browse detector registry
    Registry {
        /// all    - View all available detectors
        ///
        /// <name> - Detail view of a single detector
        #[arg(default_value = "all", verbatim_doc_comment)]
        detector: String,
    },
    /// Generate shell completion scripts
    Completions {
        /// Shell to generate completions for
        #[arg(value_enum)]
        shell: SupportedShellsForCompletions,
    },
    /// Initializes aderyn.toml. Required when solidity project root is not the workspace root
    Init {
        /// Optional path inside root where aderyn.toml will be created
        #[arg(value_hint = ValueHint::DirPath)]
        path: Option<String>,
    },
    /// Browse Aderyn documentation
    /// Chat with AI for help - aderyn docs "how to exclude files from scan?"
    Docs {
        /// Ask question
        question: Option<String>,
    },
    /// ⚠️ [BETA] Start an MCP server in the project root
    Mcp {
        #[command(subcommand)]
        transport: McpTransport,
    },
}

#[derive(Debug, Subcommand)]
enum McpTransport {
    /// Run MCP server over streamable HTTP
    HttpStream {
        /// Port to bind the MCP server on (defaults to 6277)
        #[arg(long, default_value_t = 6277)]
        port: u16,
    },
    /// Run MCP server over STDIO
    Stdio,
}

fn main() {
    initialize_niceties();
    let cmd_args = CommandLineArgs::parse();

    // Condense args
    let mut args = Args {
        input_config: driver::CliArgsInputConfig {
            root: cmd_args.root.clone(),
            src: cmd_args.src,
            path_excludes: cmd_args.path_excludes,
            path_includes: cmd_args.path_includes,
        },
        output_config: driver::CliArgsOutputConfig {
            output: cmd_args.output,
            stdout: cmd_args.stdout,
            no_snippets: cmd_args.no_snippets,
        },
        common_config: driver::CliArgsCommonConfig {
            verbose: {
                let is_running_lsp = cmd_args.lsp;
                let is_running_mcp = cmd_args
                    .subcommand
                    .as_ref()
                    .is_some_and(|s| matches!(s, MainSubcommand::Mcp { transport: _ }));
                // In neither of those 2 cases, should aderyn be verbose enough to print metadata.
                !(is_running_lsp || is_running_mcp)
            },
            lsp: cmd_args.lsp,
            skip_cloc: cmd_args.skip_cloc,
            highs_only: cmd_args.highs_only,
        },
    };

    if let Some(subcommand) = cmd_args.subcommand {
        match subcommand {
            MainSubcommand::Registry { detector } => {
                if detector == "all" {
                    print_all_detectors_view();
                } else {
                    print_detail_view(&detector);
                }
            }
            MainSubcommand::Init { path } => {
                let creation_path = match path {
                    Some(optional_path) => {
                        let mut target_dir = PathBuf::from(&cmd_args.root);
                        target_dir.push(optional_path);

                        let can_initialize = target_dir.exists()
                            && std::fs::metadata(&target_dir).is_ok_and(|p| p.is_dir());

                        if !can_initialize {
                            eprintln!("Failed to initialize aderyn.toml in non-existent directory");
                            std::process::exit(1);
                        }

                        target_dir.to_string_lossy().to_string()
                    }
                    None => cmd_args.root,
                };

                // Create aderyn.toml at the target directory
                create_aderyn_toml_file_at(creation_path);
            }
            MainSubcommand::Docs { question } => {
                let url = match question {
                    Some(question) => {
                        let encoded_question = urlencoding::encode(&question);
                        format!(
                            "https://cyfrin.gitbook.io/cyfrin-docs/aderyn-cli/readme?q={}&ask=true",
                            encoded_question
                        )
                    }
                    None => "https://cyfrin.gitbook.io/cyfrin-docs/aderyn-cli".to_string(),
                };

                // First try opening the URL in browser, if it fails just print to stdout
                if webbrowser::open(&url).is_err() {
                    println!("Visit {}", url);
                };
            }
            MainSubcommand::Mcp { transport } => {
                // FORCE skip cloc
                args.common_config.skip_cloc = true;
                match transport {
                    McpTransport::HttpStream { port } => {
                        spin_up_http_stream_mcp_server(args, port);
                    }
                    McpTransport::Stdio => {
                        spin_up_stdio_mcp_server(args);
                    }
                }
            }
            MainSubcommand::Completions { shell } => {
                let mut cmd = CommandLineArgs::command();
                let name = cmd.get_name().to_string();
                let clap_shell: Shell = shell.into();
                generate(clap_shell, &mut cmd, name, &mut std::io::stdout());
                return;
            }
        }

        return;
    }

    if cmd_args.auditor_mode {
        driver::kick_off_audit_mode(args.clone());
    } else {
        // Run watcher is watch mode is engaged
        if cmd_args.lsp {
            // FORCE skip cloc
            args.common_config.skip_cloc = true;
            spin_up_language_server(args);
        } else {
            kick_off_report_creation(args.clone());
        }
    }

    // Check for updates on non lsp mode
    if !cmd_args.lsp
        && !cmd_args.skip_update_check
        && let Some(yes) = aderyn_is_currently_running_newest_version()
        && !yes
    {
        println!();
        println!(
            "NEW VERSION OF ADERYN AVAILABLE! Please upgrade aderyn by following the instruction here - https://github.com/cyfrin/aderyn"
        );
        println!("NOTE: You can skip this check by passing --skip-update-check flag");
    }

    // Ask open source community for stars
    if !cmd_args.lsp {
        birdsong::print_last_words();
    }
}

```

--------------------------------------------------------------------------------
/benchmarks/empty-block/report/index.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>empty-block - Criterion.rs</title>
    <style type="text/css">
        body {
            font: 14px Helvetica Neue;
            text-rendering: optimizelegibility;
        }

        .body {
            width: 960px;
            margin: auto;
        }

        th {
            font-weight: 200
        }

        th,
        td {
            padding-right: 3px;
            padding-bottom: 3px;
        }

        a:link {
            color: #1F78B4;
            text-decoration: none;
        }

        th.ci-bound {
            opacity: 0.6
        }

        td.ci-bound {
            opacity: 0.5
        }

        .stats {
            width: 80%;
            margin: auto;
            display: flex;
        }

        .additional_stats {
            flex: 0 0 60%
        }

        .additional_plots {
            flex: 1
        }

        h2 {
            font-size: 36px;
            font-weight: 300;
        }

        h3 {
            font-size: 24px;
            font-weight: 300;
        }

        #footer {
            height: 40px;
            background: #888;
            color: white;
            font-size: larger;
            font-weight: 300;
        }

        #footer a {
            color: white;
            text-decoration: underline;
        }

        #footer p {
            text-align: center
        }
    </style>
</head>

<body>
    <div class="body">
        <h2>empty-block</h2>
        <div class="absolute">
            <section class="plots">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="pdf.svg">
                                    <img src="pdf_small.svg" alt="PDF of Slope" width="450" height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="regression.svg">
                                    <img src="regression_small.svg" alt="Regression" width="450" height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </section>
            <section class="stats">
                <div class="additional_stats">
                    <h4>Additional Statistics:</h4>
                    <table>
                        <thead>
                            <tr>
                                <th></th>
                                <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                                <th>Estimate</th>
                                <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>Slope</td>
                                <td class="ci-bound">49.275 µs</td>
                                <td>49.544 µs</td>
                                <td class="ci-bound">49.852 µs</td>
                            </tr>
                            <tr>
                                <td>R&#xb2;</td>
                                <td class="ci-bound">0.9120057</td>
                                <td>0.9159055</td>
                                <td class="ci-bound">0.9107683</td>
                            </tr>
                            <tr>
                                <td>Mean</td>
                                <td class="ci-bound">50.533 µs</td>
                                <td>50.946 µs</td>
                                <td class="ci-bound">51.450 µs</td>
                            </tr>
                            <tr>
                                <td title="Standard Deviation">Std. Dev.</td>
                                <td class="ci-bound">1.3775 µs</td>
                                <td>2.3764 µs</td>
                                <td class="ci-bound">3.5064 µs</td>
                            </tr>
                            <tr>
                                <td>Median</td>
                                <td class="ci-bound">50.730 µs</td>
                                <td>50.844 µs</td>
                                <td class="ci-bound">51.335 µs</td>
                            </tr>
                            <tr>
                                <td title="Median Absolute Deviation">MAD</td>
                                <td class="ci-bound">1.0342 µs</td>
                                <td>1.6954 µs</td>
                                <td class="ci-bound">1.9058 µs</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="additional_plots">
                    <h4>Additional Plots:</h4>
                    <ul>
                        
                        <li>
                            <a href="typical.svg">Typical</a>
                        </li>
                        <li>
                            <a href="mean.svg">Mean</a>
                        </li>
                        <li>
                            <a href="SD.svg">Std. Dev.</a>
                        </li>
                        <li>
                            <a href="median.svg">Median</a>
                        </li>
                        <li>
                            <a href="MAD.svg">MAD</a>
                        </li>
                        <li>
                            <a href="slope.svg">Slope</a>
                        </li>
                    </ul>
                </div>
            </section>
            <section class="explanation">
                <h4>Understanding this report:</h4>
                <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region
                    shows the estimated probability of an iteration taking a certain amount of time, while the line
                    shows the mean. Click on the plot for a larger view showing the outliers.</p>
                <p>The plot on the right shows the linear regression calculated from the measurements. Each point
                    represents a sample, though here it shows the total time for the sample rather than time per
                    iteration. The line is the line of best fit for these measurements.</p>
                <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the
                        documentation</a> for more details on the additional statistics.</p>
            </section>
        </div>
        <section class="plots">
            <h3>Change Since Previous Benchmark</h3>
            <div class="relative">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="both/pdf.svg">
                                    <img src="relative_pdf_small.svg" alt="PDF Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="both/regression.svg">
                                    <img src="relative_regression_small.svg" alt="Regression Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>
        <section class="stats">
            <div class="additional_stats">
                <h4>Additional Statistics:</h4>
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                            <th>Estimate</th>
                            <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Change in time</td>
                            <td class="ci-bound">-13.014%</td>
                            <td>-11.424%</td>
                            <td class="ci-bound">-9.9095%</td>
                            <td>(p = 0.00 &lt;
                                0.05)</td>
                        </tr>
                    </tbody>
                </table>
                Performance has improved.
            </div>
            <div class="additional_plots">
                <h4>Additional Plots:</h4>
                <ul>
                    
                    <li>
                        <a href="change/mean.svg">Change in mean</a>
                    </li>
                    <li>
                        <a href="change/median.svg">Change in median</a>
                    </li>
                    <li>
                        <a href="change/t-test.svg">T-Test</a>
                    </li>
                </ul>
            </div>
        </section>
        <section class="explanation">
            <h4>Understanding this report:</h4>
            <p>The plot on the left shows the probability of the function taking a certain amount of time. The red
                curve represents the saved measurements from the last time this benchmark was run, while the blue curve
                shows the measurements from this run. The lines represent the mean time per iteration. Click on the
                plot for a larger view.</p>
            <p>The plot on the right shows the two regressions. Again, the red line represents the previous measurement
                while the blue line shows the current measurement.</p>
            <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the
                    documentation</a> for more details on the additional statistics.</p>
        </section>
    </div>
    <div id="footer">
        <p>This report was generated by
            <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
            library in Rust.</p>
    </div>
</body>

</html>
```

--------------------------------------------------------------------------------
/benchmarks/ecrecover/report/index.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>ecrecover - Criterion.rs</title>
    <style type="text/css">
        body {
            font: 14px Helvetica Neue;
            text-rendering: optimizelegibility;
        }

        .body {
            width: 960px;
            margin: auto;
        }

        th {
            font-weight: 200
        }

        th,
        td {
            padding-right: 3px;
            padding-bottom: 3px;
        }

        a:link {
            color: #1F78B4;
            text-decoration: none;
        }

        th.ci-bound {
            opacity: 0.6
        }

        td.ci-bound {
            opacity: 0.5
        }

        .stats {
            width: 80%;
            margin: auto;
            display: flex;
        }

        .additional_stats {
            flex: 0 0 60%
        }

        .additional_plots {
            flex: 1
        }

        h2 {
            font-size: 36px;
            font-weight: 300;
        }

        h3 {
            font-size: 24px;
            font-weight: 300;
        }

        #footer {
            height: 40px;
            background: #888;
            color: white;
            font-size: larger;
            font-weight: 300;
        }

        #footer a {
            color: white;
            text-decoration: underline;
        }

        #footer p {
            text-align: center
        }
    </style>
</head>

<body>
    <div class="body">
        <h2>ecrecover</h2>
        <div class="absolute">
            <section class="plots">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="pdf.svg">
                                    <img src="pdf_small.svg" alt="PDF of Slope" width="450" height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="regression.svg">
                                    <img src="regression_small.svg" alt="Regression" width="450" height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </section>
            <section class="stats">
                <div class="additional_stats">
                    <h4>Additional Statistics:</h4>
                    <table>
                        <thead>
                            <tr>
                                <th></th>
                                <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                                <th>Estimate</th>
                                <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>Slope</td>
                                <td class="ci-bound">5.1394 µs</td>
                                <td>5.3891 µs</td>
                                <td class="ci-bound">5.7963 µs</td>
                            </tr>
                            <tr>
                                <td>R&#xb2;</td>
                                <td class="ci-bound">0.1109766</td>
                                <td>0.1155248</td>
                                <td class="ci-bound">0.1041705</td>
                            </tr>
                            <tr>
                                <td>Mean</td>
                                <td class="ci-bound">5.0502 µs</td>
                                <td>5.1764 µs</td>
                                <td class="ci-bound">5.3579 µs</td>
                            </tr>
                            <tr>
                                <td title="Standard Deviation">Std. Dev.</td>
                                <td class="ci-bound">211.88 ns</td>
                                <td>807.83 ns</td>
                                <td class="ci-bound">1.2969 µs</td>
                            </tr>
                            <tr>
                                <td>Median</td>
                                <td class="ci-bound">4.9804 µs</td>
                                <td>5.0636 µs</td>
                                <td class="ci-bound">5.1134 µs</td>
                            </tr>
                            <tr>
                                <td title="Median Absolute Deviation">MAD</td>
                                <td class="ci-bound">165.79 ns</td>
                                <td>226.26 ns</td>
                                <td class="ci-bound">282.03 ns</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="additional_plots">
                    <h4>Additional Plots:</h4>
                    <ul>
                        
                        <li>
                            <a href="typical.svg">Typical</a>
                        </li>
                        <li>
                            <a href="mean.svg">Mean</a>
                        </li>
                        <li>
                            <a href="SD.svg">Std. Dev.</a>
                        </li>
                        <li>
                            <a href="median.svg">Median</a>
                        </li>
                        <li>
                            <a href="MAD.svg">MAD</a>
                        </li>
                        <li>
                            <a href="slope.svg">Slope</a>
                        </li>
                    </ul>
                </div>
            </section>
            <section class="explanation">
                <h4>Understanding this report:</h4>
                <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region
                    shows the estimated probability of an iteration taking a certain amount of time, while the line
                    shows the mean. Click on the plot for a larger view showing the outliers.</p>
                <p>The plot on the right shows the linear regression calculated from the measurements. Each point
                    represents a sample, though here it shows the total time for the sample rather than time per
                    iteration. The line is the line of best fit for these measurements.</p>
                <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the
                        documentation</a> for more details on the additional statistics.</p>
            </section>
        </div>
        <section class="plots">
            <h3>Change Since Previous Benchmark</h3>
            <div class="relative">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="both/pdf.svg">
                                    <img src="relative_pdf_small.svg" alt="PDF Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="both/regression.svg">
                                    <img src="relative_regression_small.svg" alt="Regression Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>
        <section class="stats">
            <div class="additional_stats">
                <h4>Additional Statistics:</h4>
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                            <th>Estimate</th>
                            <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Change in time</td>
                            <td class="ci-bound">-3.8641%</td>
                            <td>-0.8889%</td>
                            <td class="ci-bound">+3.0760%</td>
                            <td>(p = 0.64 &gt;
                                0.05)</td>
                        </tr>
                    </tbody>
                </table>
                No change in performance detected.
            </div>
            <div class="additional_plots">
                <h4>Additional Plots:</h4>
                <ul>
                    
                    <li>
                        <a href="change/mean.svg">Change in mean</a>
                    </li>
                    <li>
                        <a href="change/median.svg">Change in median</a>
                    </li>
                    <li>
                        <a href="change/t-test.svg">T-Test</a>
                    </li>
                </ul>
            </div>
        </section>
        <section class="explanation">
            <h4>Understanding this report:</h4>
            <p>The plot on the left shows the probability of the function taking a certain amount of time. The red
                curve represents the saved measurements from the last time this benchmark was run, while the blue curve
                shows the measurements from this run. The lines represent the mean time per iteration. Click on the
                plot for a larger view.</p>
            <p>The plot on the right shows the two regressions. Again, the red line represents the previous measurement
                while the blue line shows the current measurement.</p>
            <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the
                    documentation</a> for more details on the additional statistics.</p>
        </section>
    </div>
    <div id="footer">
        <p>This report was generated by
            <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
            library in Rust.</p>
    </div>
</body>

</html>
```

--------------------------------------------------------------------------------
/benchmarks/push-zero-opcode/report/index.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>push-zero-opcode - Criterion.rs</title>
    <style type="text/css">
        body {
            font: 14px Helvetica Neue;
            text-rendering: optimizelegibility;
        }

        .body {
            width: 960px;
            margin: auto;
        }

        th {
            font-weight: 200
        }

        th,
        td {
            padding-right: 3px;
            padding-bottom: 3px;
        }

        a:link {
            color: #1F78B4;
            text-decoration: none;
        }

        th.ci-bound {
            opacity: 0.6
        }

        td.ci-bound {
            opacity: 0.5
        }

        .stats {
            width: 80%;
            margin: auto;
            display: flex;
        }

        .additional_stats {
            flex: 0 0 60%
        }

        .additional_plots {
            flex: 1
        }

        h2 {
            font-size: 36px;
            font-weight: 300;
        }

        h3 {
            font-size: 24px;
            font-weight: 300;
        }

        #footer {
            height: 40px;
            background: #888;
            color: white;
            font-size: larger;
            font-weight: 300;
        }

        #footer a {
            color: white;
            text-decoration: underline;
        }

        #footer p {
            text-align: center
        }
    </style>
</head>

<body>
    <div class="body">
        <h2>push-zero-opcode</h2>
        <div class="absolute">
            <section class="plots">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="pdf.svg">
                                    <img src="pdf_small.svg" alt="PDF of Slope" width="450" height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="regression.svg">
                                    <img src="regression_small.svg" alt="Regression" width="450" height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </section>
            <section class="stats">
                <div class="additional_stats">
                    <h4>Additional Statistics:</h4>
                    <table>
                        <thead>
                            <tr>
                                <th></th>
                                <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                                <th>Estimate</th>
                                <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>Slope</td>
                                <td class="ci-bound">41.304 µs</td>
                                <td>42.279 µs</td>
                                <td class="ci-bound">43.672 µs</td>
                            </tr>
                            <tr>
                                <td>R&#xb2;</td>
                                <td class="ci-bound">0.4582522</td>
                                <td>0.4741685</td>
                                <td class="ci-bound">0.4428075</td>
                            </tr>
                            <tr>
                                <td>Mean</td>
                                <td class="ci-bound">42.614 µs</td>
                                <td>43.116 µs</td>
                                <td class="ci-bound">43.714 µs</td>
                            </tr>
                            <tr>
                                <td title="Standard Deviation">Std. Dev.</td>
                                <td class="ci-bound">1.6200 µs</td>
                                <td>2.8210 µs</td>
                                <td class="ci-bound">3.9401 µs</td>
                            </tr>
                            <tr>
                                <td>Median</td>
                                <td class="ci-bound">41.957 µs</td>
                                <td>43.006 µs</td>
                                <td class="ci-bound">43.444 µs</td>
                            </tr>
                            <tr>
                                <td title="Median Absolute Deviation">MAD</td>
                                <td class="ci-bound">1.4291 µs</td>
                                <td>1.7916 µs</td>
                                <td class="ci-bound">2.3147 µs</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="additional_plots">
                    <h4>Additional Plots:</h4>
                    <ul>
                        
                        <li>
                            <a href="typical.svg">Typical</a>
                        </li>
                        <li>
                            <a href="mean.svg">Mean</a>
                        </li>
                        <li>
                            <a href="SD.svg">Std. Dev.</a>
                        </li>
                        <li>
                            <a href="median.svg">Median</a>
                        </li>
                        <li>
                            <a href="MAD.svg">MAD</a>
                        </li>
                        <li>
                            <a href="slope.svg">Slope</a>
                        </li>
                    </ul>
                </div>
            </section>
            <section class="explanation">
                <h4>Understanding this report:</h4>
                <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region
                    shows the estimated probability of an iteration taking a certain amount of time, while the line
                    shows the mean. Click on the plot for a larger view showing the outliers.</p>
                <p>The plot on the right shows the linear regression calculated from the measurements. Each point
                    represents a sample, though here it shows the total time for the sample rather than time per
                    iteration. The line is the line of best fit for these measurements.</p>
                <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the
                        documentation</a> for more details on the additional statistics.</p>
            </section>
        </div>
        <section class="plots">
            <h3>Change Since Previous Benchmark</h3>
            <div class="relative">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="both/pdf.svg">
                                    <img src="relative_pdf_small.svg" alt="PDF Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="both/regression.svg">
                                    <img src="relative_regression_small.svg" alt="Regression Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>
        <section class="stats">
            <div class="additional_stats">
                <h4>Additional Statistics:</h4>
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                            <th>Estimate</th>
                            <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Change in time</td>
                            <td class="ci-bound">-15.031%</td>
                            <td>-12.566%</td>
                            <td class="ci-bound">-10.291%</td>
                            <td>(p = 0.00 &lt;
                                0.05)</td>
                        </tr>
                    </tbody>
                </table>
                Performance has improved.
            </div>
            <div class="additional_plots">
                <h4>Additional Plots:</h4>
                <ul>
                    
                    <li>
                        <a href="change/mean.svg">Change in mean</a>
                    </li>
                    <li>
                        <a href="change/median.svg">Change in median</a>
                    </li>
                    <li>
                        <a href="change/t-test.svg">T-Test</a>
                    </li>
                </ul>
            </div>
        </section>
        <section class="explanation">
            <h4>Understanding this report:</h4>
            <p>The plot on the left shows the probability of the function taking a certain amount of time. The red
                curve represents the saved measurements from the last time this benchmark was run, while the blue curve
                shows the measurements from this run. The lines represent the mean time per iteration. Click on the
                plot for a larger view.</p>
            <p>The plot on the right shows the two regressions. Again, the red line represents the previous measurement
                while the blue line shows the current measurement.</p>
            <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the
                    documentation</a> for more details on the additional statistics.</p>
        </section>
    </div>
    <div id="footer">
        <p>This report was generated by
            <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
            library in Rust.</p>
    </div>
</body>

</html>
```

--------------------------------------------------------------------------------
/benchmarks/useless-modifier/report/index.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>useless-modifier - Criterion.rs</title>
    <style type="text/css">
        body {
            font: 14px Helvetica Neue;
            text-rendering: optimizelegibility;
        }

        .body {
            width: 960px;
            margin: auto;
        }

        th {
            font-weight: 200
        }

        th,
        td {
            padding-right: 3px;
            padding-bottom: 3px;
        }

        a:link {
            color: #1F78B4;
            text-decoration: none;
        }

        th.ci-bound {
            opacity: 0.6
        }

        td.ci-bound {
            opacity: 0.5
        }

        .stats {
            width: 80%;
            margin: auto;
            display: flex;
        }

        .additional_stats {
            flex: 0 0 60%
        }

        .additional_plots {
            flex: 1
        }

        h2 {
            font-size: 36px;
            font-weight: 300;
        }

        h3 {
            font-size: 24px;
            font-weight: 300;
        }

        #footer {
            height: 40px;
            background: #888;
            color: white;
            font-size: larger;
            font-weight: 300;
        }

        #footer a {
            color: white;
            text-decoration: underline;
        }

        #footer p {
            text-align: center
        }
    </style>
</head>

<body>
    <div class="body">
        <h2>useless-modifier</h2>
        <div class="absolute">
            <section class="plots">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="pdf.svg">
                                    <img src="pdf_small.svg" alt="PDF of Slope" width="450" height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="regression.svg">
                                    <img src="regression_small.svg" alt="Regression" width="450" height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </section>
            <section class="stats">
                <div class="additional_stats">
                    <h4>Additional Statistics:</h4>
                    <table>
                        <thead>
                            <tr>
                                <th></th>
                                <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                                <th>Estimate</th>
                                <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>Slope</td>
                                <td class="ci-bound">24.183 µs</td>
                                <td>24.338 µs</td>
                                <td class="ci-bound">24.519 µs</td>
                            </tr>
                            <tr>
                                <td>R&#xb2;</td>
                                <td class="ci-bound">0.8893117</td>
                                <td>0.8940165</td>
                                <td class="ci-bound">0.8876461</td>
                            </tr>
                            <tr>
                                <td>Mean</td>
                                <td class="ci-bound">24.890 µs</td>
                                <td>25.116 µs</td>
                                <td class="ci-bound">25.376 µs</td>
                            </tr>
                            <tr>
                                <td title="Standard Deviation">Std. Dev.</td>
                                <td class="ci-bound">826.10 ns</td>
                                <td>1.2446 µs</td>
                                <td class="ci-bound">1.7387 µs</td>
                            </tr>
                            <tr>
                                <td>Median</td>
                                <td class="ci-bound">24.919 µs</td>
                                <td>25.071 µs</td>
                                <td class="ci-bound">25.299 µs</td>
                            </tr>
                            <tr>
                                <td title="Median Absolute Deviation">MAD</td>
                                <td class="ci-bound">791.48 ns</td>
                                <td>1.0698 µs</td>
                                <td class="ci-bound">1.2179 µs</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="additional_plots">
                    <h4>Additional Plots:</h4>
                    <ul>
                        
                        <li>
                            <a href="typical.svg">Typical</a>
                        </li>
                        <li>
                            <a href="mean.svg">Mean</a>
                        </li>
                        <li>
                            <a href="SD.svg">Std. Dev.</a>
                        </li>
                        <li>
                            <a href="median.svg">Median</a>
                        </li>
                        <li>
                            <a href="MAD.svg">MAD</a>
                        </li>
                        <li>
                            <a href="slope.svg">Slope</a>
                        </li>
                    </ul>
                </div>
            </section>
            <section class="explanation">
                <h4>Understanding this report:</h4>
                <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region
                    shows the estimated probability of an iteration taking a certain amount of time, while the line
                    shows the mean. Click on the plot for a larger view showing the outliers.</p>
                <p>The plot on the right shows the linear regression calculated from the measurements. Each point
                    represents a sample, though here it shows the total time for the sample rather than time per
                    iteration. The line is the line of best fit for these measurements.</p>
                <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the
                        documentation</a> for more details on the additional statistics.</p>
            </section>
        </div>
        <section class="plots">
            <h3>Change Since Previous Benchmark</h3>
            <div class="relative">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="both/pdf.svg">
                                    <img src="relative_pdf_small.svg" alt="PDF Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="both/regression.svg">
                                    <img src="relative_regression_small.svg" alt="Regression Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>
        <section class="stats">
            <div class="additional_stats">
                <h4>Additional Statistics:</h4>
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                            <th>Estimate</th>
                            <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Change in time</td>
                            <td class="ci-bound">-24.667%</td>
                            <td>-20.867%</td>
                            <td class="ci-bound">-17.116%</td>
                            <td>(p = 0.00 &lt;
                                0.05)</td>
                        </tr>
                    </tbody>
                </table>
                Performance has improved.
            </div>
            <div class="additional_plots">
                <h4>Additional Plots:</h4>
                <ul>
                    
                    <li>
                        <a href="change/mean.svg">Change in mean</a>
                    </li>
                    <li>
                        <a href="change/median.svg">Change in median</a>
                    </li>
                    <li>
                        <a href="change/t-test.svg">T-Test</a>
                    </li>
                </ul>
            </div>
        </section>
        <section class="explanation">
            <h4>Understanding this report:</h4>
            <p>The plot on the left shows the probability of the function taking a certain amount of time. The red
                curve represents the saved measurements from the last time this benchmark was run, while the blue curve
                shows the measurements from this run. The lines represent the mean time per iteration. Click on the
                plot for a larger view.</p>
            <p>The plot on the right shows the two regressions. Again, the red line represents the previous measurement
                while the blue line shows the current measurement.</p>
            <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the
                    documentation</a> for more details on the additional statistics.</p>
        </section>
    </div>
    <div id="footer">
        <p>This report was generated by
            <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
            library in Rust.</p>
    </div>
</body>

</html>
```

--------------------------------------------------------------------------------
/benchmarks/unindexed-events/report/index.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>unindexed-events - Criterion.rs</title>
    <style type="text/css">
        body {
            font: 14px Helvetica Neue;
            text-rendering: optimizelegibility;
        }

        .body {
            width: 960px;
            margin: auto;
        }

        th {
            font-weight: 200
        }

        th,
        td {
            padding-right: 3px;
            padding-bottom: 3px;
        }

        a:link {
            color: #1F78B4;
            text-decoration: none;
        }

        th.ci-bound {
            opacity: 0.6
        }

        td.ci-bound {
            opacity: 0.5
        }

        .stats {
            width: 80%;
            margin: auto;
            display: flex;
        }

        .additional_stats {
            flex: 0 0 60%
        }

        .additional_plots {
            flex: 1
        }

        h2 {
            font-size: 36px;
            font-weight: 300;
        }

        h3 {
            font-size: 24px;
            font-weight: 300;
        }

        #footer {
            height: 40px;
            background: #888;
            color: white;
            font-size: larger;
            font-weight: 300;
        }

        #footer a {
            color: white;
            text-decoration: underline;
        }

        #footer p {
            text-align: center
        }
    </style>
</head>

<body>
    <div class="body">
        <h2>unindexed-events</h2>
        <div class="absolute">
            <section class="plots">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="pdf.svg">
                                    <img src="pdf_small.svg" alt="PDF of Slope" width="450" height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="regression.svg">
                                    <img src="regression_small.svg" alt="Regression" width="450" height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </section>
            <section class="stats">
                <div class="additional_stats">
                    <h4>Additional Statistics:</h4>
                    <table>
                        <thead>
                            <tr>
                                <th></th>
                                <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                                <th>Estimate</th>
                                <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>Slope</td>
                                <td class="ci-bound">28.445 µs</td>
                                <td>28.600 µs</td>
                                <td class="ci-bound">28.766 µs</td>
                            </tr>
                            <tr>
                                <td>R&#xb2;</td>
                                <td class="ci-bound">0.8837029</td>
                                <td>0.8867175</td>
                                <td class="ci-bound">0.8832776</td>
                            </tr>
                            <tr>
                                <td>Mean</td>
                                <td class="ci-bound">28.379 µs</td>
                                <td>28.669 µs</td>
                                <td class="ci-bound">29.004 µs</td>
                            </tr>
                            <tr>
                                <td title="Standard Deviation">Std. Dev.</td>
                                <td class="ci-bound">975.84 ns</td>
                                <td>1.6043 µs</td>
                                <td class="ci-bound">2.1426 µs</td>
                            </tr>
                            <tr>
                                <td>Median</td>
                                <td class="ci-bound">28.185 µs</td>
                                <td>28.322 µs</td>
                                <td class="ci-bound">28.400 µs</td>
                            </tr>
                            <tr>
                                <td title="Median Absolute Deviation">MAD</td>
                                <td class="ci-bound">455.97 ns</td>
                                <td>606.32 ns</td>
                                <td class="ci-bound">967.87 ns</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="additional_plots">
                    <h4>Additional Plots:</h4>
                    <ul>
                        
                        <li>
                            <a href="typical.svg">Typical</a>
                        </li>
                        <li>
                            <a href="mean.svg">Mean</a>
                        </li>
                        <li>
                            <a href="SD.svg">Std. Dev.</a>
                        </li>
                        <li>
                            <a href="median.svg">Median</a>
                        </li>
                        <li>
                            <a href="MAD.svg">MAD</a>
                        </li>
                        <li>
                            <a href="slope.svg">Slope</a>
                        </li>
                    </ul>
                </div>
            </section>
            <section class="explanation">
                <h4>Understanding this report:</h4>
                <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region
                    shows the estimated probability of an iteration taking a certain amount of time, while the line
                    shows the mean. Click on the plot for a larger view showing the outliers.</p>
                <p>The plot on the right shows the linear regression calculated from the measurements. Each point
                    represents a sample, though here it shows the total time for the sample rather than time per
                    iteration. The line is the line of best fit for these measurements.</p>
                <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the
                        documentation</a> for more details on the additional statistics.</p>
            </section>
        </div>
        <section class="plots">
            <h3>Change Since Previous Benchmark</h3>
            <div class="relative">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="both/pdf.svg">
                                    <img src="relative_pdf_small.svg" alt="PDF Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="both/regression.svg">
                                    <img src="relative_regression_small.svg" alt="Regression Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>
        <section class="stats">
            <div class="additional_stats">
                <h4>Additional Statistics:</h4>
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                            <th>Estimate</th>
                            <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Change in time</td>
                            <td class="ci-bound">+22.313%</td>
                            <td>+24.218%</td>
                            <td class="ci-bound">+26.123%</td>
                            <td>(p = 0.00 &lt;
                                0.05)</td>
                        </tr>
                    </tbody>
                </table>
                Performance has regressed.
            </div>
            <div class="additional_plots">
                <h4>Additional Plots:</h4>
                <ul>
                    
                    <li>
                        <a href="change/mean.svg">Change in mean</a>
                    </li>
                    <li>
                        <a href="change/median.svg">Change in median</a>
                    </li>
                    <li>
                        <a href="change/t-test.svg">T-Test</a>
                    </li>
                </ul>
            </div>
        </section>
        <section class="explanation">
            <h4>Understanding this report:</h4>
            <p>The plot on the left shows the probability of the function taking a certain amount of time. The red
                curve represents the saved measurements from the last time this benchmark was run, while the blue curve
                shows the measurements from this run. The lines represent the mean time per iteration. Click on the
                plot for a larger view.</p>
            <p>The plot on the right shows the two regressions. Again, the red line represents the previous measurement
                while the blue line shows the current measurement.</p>
            <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the
                    documentation</a> for more details on the additional statistics.</p>
        </section>
    </div>
    <div id="footer">
        <p>This report was generated by
            <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
            library in Rust.</p>
    </div>
</body>

</html>
```

--------------------------------------------------------------------------------
/benchmarks/zero-address-check/report/index.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>zero-address-check - Criterion.rs</title>
    <style type="text/css">
        body {
            font: 14px Helvetica Neue;
            text-rendering: optimizelegibility;
        }

        .body {
            width: 960px;
            margin: auto;
        }

        th {
            font-weight: 200
        }

        th,
        td {
            padding-right: 3px;
            padding-bottom: 3px;
        }

        a:link {
            color: #1F78B4;
            text-decoration: none;
        }

        th.ci-bound {
            opacity: 0.6
        }

        td.ci-bound {
            opacity: 0.5
        }

        .stats {
            width: 80%;
            margin: auto;
            display: flex;
        }

        .additional_stats {
            flex: 0 0 60%
        }

        .additional_plots {
            flex: 1
        }

        h2 {
            font-size: 36px;
            font-weight: 300;
        }

        h3 {
            font-size: 24px;
            font-weight: 300;
        }

        #footer {
            height: 40px;
            background: #888;
            color: white;
            font-size: larger;
            font-weight: 300;
        }

        #footer a {
            color: white;
            text-decoration: underline;
        }

        #footer p {
            text-align: center
        }
    </style>
</head>

<body>
    <div class="body">
        <h2>zero-address-check</h2>
        <div class="absolute">
            <section class="plots">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="pdf.svg">
                                    <img src="pdf_small.svg" alt="PDF of Slope" width="450" height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="regression.svg">
                                    <img src="regression_small.svg" alt="Regression" width="450" height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </section>
            <section class="stats">
                <div class="additional_stats">
                    <h4>Additional Statistics:</h4>
                    <table>
                        <thead>
                            <tr>
                                <th></th>
                                <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                                <th>Estimate</th>
                                <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>Slope</td>
                                <td class="ci-bound">441.77 µs</td>
                                <td>445.69 µs</td>
                                <td class="ci-bound">451.39 µs</td>
                            </tr>
                            <tr>
                                <td>R&#xb2;</td>
                                <td class="ci-bound">0.7879760</td>
                                <td>0.7952005</td>
                                <td class="ci-bound">0.7801513</td>
                            </tr>
                            <tr>
                                <td>Mean</td>
                                <td class="ci-bound">452.00 µs</td>
                                <td>456.44 µs</td>
                                <td class="ci-bound">461.63 µs</td>
                            </tr>
                            <tr>
                                <td title="Standard Deviation">Std. Dev.</td>
                                <td class="ci-bound">15.213 µs</td>
                                <td>24.846 µs</td>
                                <td class="ci-bound">33.120 µs</td>
                            </tr>
                            <tr>
                                <td>Median</td>
                                <td class="ci-bound">449.30 µs</td>
                                <td>455.35 µs</td>
                                <td class="ci-bound">458.73 µs</td>
                            </tr>
                            <tr>
                                <td title="Median Absolute Deviation">MAD</td>
                                <td class="ci-bound">10.087 µs</td>
                                <td>14.327 µs</td>
                                <td class="ci-bound">18.492 µs</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="additional_plots">
                    <h4>Additional Plots:</h4>
                    <ul>
                        
                        <li>
                            <a href="typical.svg">Typical</a>
                        </li>
                        <li>
                            <a href="mean.svg">Mean</a>
                        </li>
                        <li>
                            <a href="SD.svg">Std. Dev.</a>
                        </li>
                        <li>
                            <a href="median.svg">Median</a>
                        </li>
                        <li>
                            <a href="MAD.svg">MAD</a>
                        </li>
                        <li>
                            <a href="slope.svg">Slope</a>
                        </li>
                    </ul>
                </div>
            </section>
            <section class="explanation">
                <h4>Understanding this report:</h4>
                <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region
                    shows the estimated probability of an iteration taking a certain amount of time, while the line
                    shows the mean. Click on the plot for a larger view showing the outliers.</p>
                <p>The plot on the right shows the linear regression calculated from the measurements. Each point
                    represents a sample, though here it shows the total time for the sample rather than time per
                    iteration. The line is the line of best fit for these measurements.</p>
                <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the
                        documentation</a> for more details on the additional statistics.</p>
            </section>
        </div>
        <section class="plots">
            <h3>Change Since Previous Benchmark</h3>
            <div class="relative">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="both/pdf.svg">
                                    <img src="relative_pdf_small.svg" alt="PDF Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="both/regression.svg">
                                    <img src="relative_regression_small.svg" alt="Regression Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>
        <section class="stats">
            <div class="additional_stats">
                <h4>Additional Statistics:</h4>
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                            <th>Estimate</th>
                            <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Change in time</td>
                            <td class="ci-bound">-11.666%</td>
                            <td>-7.9593%</td>
                            <td class="ci-bound">-4.5319%</td>
                            <td>(p = 0.00 &lt;
                                0.05)</td>
                        </tr>
                    </tbody>
                </table>
                Performance has improved.
            </div>
            <div class="additional_plots">
                <h4>Additional Plots:</h4>
                <ul>
                    
                    <li>
                        <a href="change/mean.svg">Change in mean</a>
                    </li>
                    <li>
                        <a href="change/median.svg">Change in median</a>
                    </li>
                    <li>
                        <a href="change/t-test.svg">T-Test</a>
                    </li>
                </ul>
            </div>
        </section>
        <section class="explanation">
            <h4>Understanding this report:</h4>
            <p>The plot on the left shows the probability of the function taking a certain amount of time. The red
                curve represents the saved measurements from the last time this benchmark was run, while the blue curve
                shows the measurements from this run. The lines represent the mean time per iteration. Click on the
                plot for a larger view.</p>
            <p>The plot on the right shows the two regressions. Again, the red line represents the previous measurement
                while the blue line shows the current measurement.</p>
            <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the
                    documentation</a> for more details on the additional statistics.</p>
        </section>
    </div>
    <div id="footer">
        <p>This report was generated by
            <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
            library in Rust.</p>
    </div>
</body>

</html>
```

--------------------------------------------------------------------------------
/benchmarks/centralization-risk/report/index.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>centralization-risk - Criterion.rs</title>
    <style type="text/css">
        body {
            font: 14px Helvetica Neue;
            text-rendering: optimizelegibility;
        }

        .body {
            width: 960px;
            margin: auto;
        }

        th {
            font-weight: 200
        }

        th,
        td {
            padding-right: 3px;
            padding-bottom: 3px;
        }

        a:link {
            color: #1F78B4;
            text-decoration: none;
        }

        th.ci-bound {
            opacity: 0.6
        }

        td.ci-bound {
            opacity: 0.5
        }

        .stats {
            width: 80%;
            margin: auto;
            display: flex;
        }

        .additional_stats {
            flex: 0 0 60%
        }

        .additional_plots {
            flex: 1
        }

        h2 {
            font-size: 36px;
            font-weight: 300;
        }

        h3 {
            font-size: 24px;
            font-weight: 300;
        }

        #footer {
            height: 40px;
            background: #888;
            color: white;
            font-size: larger;
            font-weight: 300;
        }

        #footer a {
            color: white;
            text-decoration: underline;
        }

        #footer p {
            text-align: center
        }
    </style>
</head>

<body>
    <div class="body">
        <h2>centralization-risk</h2>
        <div class="absolute">
            <section class="plots">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="pdf.svg">
                                    <img src="pdf_small.svg" alt="PDF of Slope" width="450" height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="regression.svg">
                                    <img src="regression_small.svg" alt="Regression" width="450" height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </section>
            <section class="stats">
                <div class="additional_stats">
                    <h4>Additional Statistics:</h4>
                    <table>
                        <thead>
                            <tr>
                                <th></th>
                                <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                                <th>Estimate</th>
                                <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>Slope</td>
                                <td class="ci-bound">12.314 µs</td>
                                <td>12.437 µs</td>
                                <td class="ci-bound">12.575 µs</td>
                            </tr>
                            <tr>
                                <td>R&#xb2;</td>
                                <td class="ci-bound">0.7595754</td>
                                <td>0.7676509</td>
                                <td class="ci-bound">0.7574769</td>
                            </tr>
                            <tr>
                                <td>Mean</td>
                                <td class="ci-bound">12.372 µs</td>
                                <td>12.490 µs</td>
                                <td class="ci-bound">12.619 µs</td>
                            </tr>
                            <tr>
                                <td title="Standard Deviation">Std. Dev.</td>
                                <td class="ci-bound">453.22 ns</td>
                                <td>635.99 ns</td>
                                <td class="ci-bound">793.93 ns</td>
                            </tr>
                            <tr>
                                <td>Median</td>
                                <td class="ci-bound">12.290 µs</td>
                                <td>12.358 µs</td>
                                <td class="ci-bound">12.394 µs</td>
                            </tr>
                            <tr>
                                <td title="Median Absolute Deviation">MAD</td>
                                <td class="ci-bound">300.96 ns</td>
                                <td>426.53 ns</td>
                                <td class="ci-bound">522.86 ns</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="additional_plots">
                    <h4>Additional Plots:</h4>
                    <ul>
                        
                        <li>
                            <a href="typical.svg">Typical</a>
                        </li>
                        <li>
                            <a href="mean.svg">Mean</a>
                        </li>
                        <li>
                            <a href="SD.svg">Std. Dev.</a>
                        </li>
                        <li>
                            <a href="median.svg">Median</a>
                        </li>
                        <li>
                            <a href="MAD.svg">MAD</a>
                        </li>
                        <li>
                            <a href="slope.svg">Slope</a>
                        </li>
                    </ul>
                </div>
            </section>
            <section class="explanation">
                <h4>Understanding this report:</h4>
                <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region
                    shows the estimated probability of an iteration taking a certain amount of time, while the line
                    shows the mean. Click on the plot for a larger view showing the outliers.</p>
                <p>The plot on the right shows the linear regression calculated from the measurements. Each point
                    represents a sample, though here it shows the total time for the sample rather than time per
                    iteration. The line is the line of best fit for these measurements.</p>
                <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the
                        documentation</a> for more details on the additional statistics.</p>
            </section>
        </div>
        <section class="plots">
            <h3>Change Since Previous Benchmark</h3>
            <div class="relative">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="both/pdf.svg">
                                    <img src="relative_pdf_small.svg" alt="PDF Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="both/regression.svg">
                                    <img src="relative_regression_small.svg" alt="Regression Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>
        <section class="stats">
            <div class="additional_stats">
                <h4>Additional Statistics:</h4>
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                            <th>Estimate</th>
                            <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Change in time</td>
                            <td class="ci-bound">+5.5580%</td>
                            <td>+6.7652%</td>
                            <td class="ci-bound">+8.1573%</td>
                            <td>(p = 0.00 &lt;
                                0.05)</td>
                        </tr>
                    </tbody>
                </table>
                Performance has regressed.
            </div>
            <div class="additional_plots">
                <h4>Additional Plots:</h4>
                <ul>
                    
                    <li>
                        <a href="change/mean.svg">Change in mean</a>
                    </li>
                    <li>
                        <a href="change/median.svg">Change in median</a>
                    </li>
                    <li>
                        <a href="change/t-test.svg">T-Test</a>
                    </li>
                </ul>
            </div>
        </section>
        <section class="explanation">
            <h4>Understanding this report:</h4>
            <p>The plot on the left shows the probability of the function taking a certain amount of time. The red
                curve represents the saved measurements from the last time this benchmark was run, while the blue curve
                shows the measurements from this run. The lines represent the mean time per iteration. Click on the
                plot for a larger view.</p>
            <p>The plot on the right shows the two regressions. Again, the red line represents the previous measurement
                while the blue line shows the current measurement.</p>
            <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the
                    documentation</a> for more details on the additional statistics.</p>
        </section>
    </div>
    <div id="footer">
        <p>This report was generated by
            <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
            library in Rust.</p>
    </div>
</body>

</html>
```

--------------------------------------------------------------------------------
/benchmarks/require-with-string/report/index.html:
--------------------------------------------------------------------------------

```html
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>require-with-string - Criterion.rs</title>
    <style type="text/css">
        body {
            font: 14px Helvetica Neue;
            text-rendering: optimizelegibility;
        }

        .body {
            width: 960px;
            margin: auto;
        }

        th {
            font-weight: 200
        }

        th,
        td {
            padding-right: 3px;
            padding-bottom: 3px;
        }

        a:link {
            color: #1F78B4;
            text-decoration: none;
        }

        th.ci-bound {
            opacity: 0.6
        }

        td.ci-bound {
            opacity: 0.5
        }

        .stats {
            width: 80%;
            margin: auto;
            display: flex;
        }

        .additional_stats {
            flex: 0 0 60%
        }

        .additional_plots {
            flex: 1
        }

        h2 {
            font-size: 36px;
            font-weight: 300;
        }

        h3 {
            font-size: 24px;
            font-weight: 300;
        }

        #footer {
            height: 40px;
            background: #888;
            color: white;
            font-size: larger;
            font-weight: 300;
        }

        #footer a {
            color: white;
            text-decoration: underline;
        }

        #footer p {
            text-align: center
        }
    </style>
</head>

<body>
    <div class="body">
        <h2>require-with-string</h2>
        <div class="absolute">
            <section class="plots">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="pdf.svg">
                                    <img src="pdf_small.svg" alt="PDF of Slope" width="450" height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="regression.svg">
                                    <img src="regression_small.svg" alt="Regression" width="450" height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </section>
            <section class="stats">
                <div class="additional_stats">
                    <h4>Additional Statistics:</h4>
                    <table>
                        <thead>
                            <tr>
                                <th></th>
                                <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                                <th>Estimate</th>
                                <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>Slope</td>
                                <td class="ci-bound">27.201 µs</td>
                                <td>27.604 µs</td>
                                <td class="ci-bound">28.159 µs</td>
                            </tr>
                            <tr>
                                <td>R&#xb2;</td>
                                <td class="ci-bound">0.4305139</td>
                                <td>0.4388669</td>
                                <td class="ci-bound">0.4232610</td>
                            </tr>
                            <tr>
                                <td>Mean</td>
                                <td class="ci-bound">28.957 µs</td>
                                <td>29.510 µs</td>
                                <td class="ci-bound">30.117 µs</td>
                            </tr>
                            <tr>
                                <td title="Standard Deviation">Std. Dev.</td>
                                <td class="ci-bound">2.0476 µs</td>
                                <td>2.9781 µs</td>
                                <td class="ci-bound">3.8002 µs</td>
                            </tr>
                            <tr>
                                <td>Median</td>
                                <td class="ci-bound">28.434 µs</td>
                                <td>29.595 µs</td>
                                <td class="ci-bound">29.808 µs</td>
                            </tr>
                            <tr>
                                <td title="Median Absolute Deviation">MAD</td>
                                <td class="ci-bound">2.1358 µs</td>
                                <td>2.4434 µs</td>
                                <td class="ci-bound">3.2236 µs</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="additional_plots">
                    <h4>Additional Plots:</h4>
                    <ul>
                        
                        <li>
                            <a href="typical.svg">Typical</a>
                        </li>
                        <li>
                            <a href="mean.svg">Mean</a>
                        </li>
                        <li>
                            <a href="SD.svg">Std. Dev.</a>
                        </li>
                        <li>
                            <a href="median.svg">Median</a>
                        </li>
                        <li>
                            <a href="MAD.svg">MAD</a>
                        </li>
                        <li>
                            <a href="slope.svg">Slope</a>
                        </li>
                    </ul>
                </div>
            </section>
            <section class="explanation">
                <h4>Understanding this report:</h4>
                <p>The plot on the left displays the average time per iteration for this benchmark. The shaded region
                    shows the estimated probability of an iteration taking a certain amount of time, while the line
                    shows the mean. Click on the plot for a larger view showing the outliers.</p>
                <p>The plot on the right shows the linear regression calculated from the measurements. Each point
                    represents a sample, though here it shows the total time for the sample rather than time per
                    iteration. The line is the line of best fit for these measurements.</p>
                <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#additional-statistics">the
                        documentation</a> for more details on the additional statistics.</p>
            </section>
        </div>
        <section class="plots">
            <h3>Change Since Previous Benchmark</h3>
            <div class="relative">
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                                <a href="both/pdf.svg">
                                    <img src="relative_pdf_small.svg" alt="PDF Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                            <td>
                                <a href="both/regression.svg">
                                    <img src="relative_regression_small.svg" alt="Regression Comparison" width="450"
                                        height="300" />
                                </a>
                            </td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>
        <section class="stats">
            <div class="additional_stats">
                <h4>Additional Statistics:</h4>
                <table>
                    <thead>
                        <tr>
                            <th></th>
                            <th title="0.95 confidence level" class="ci-bound">Lower bound</th>
                            <th>Estimate</th>
                            <th title="0.95 confidence level" class="ci-bound">Upper bound</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Change in time</td>
                            <td class="ci-bound">+8.4705%</td>
                            <td>+11.129%</td>
                            <td class="ci-bound">+13.651%</td>
                            <td>(p = 0.00 &lt;
                                0.05)</td>
                        </tr>
                    </tbody>
                </table>
                Performance has regressed.
            </div>
            <div class="additional_plots">
                <h4>Additional Plots:</h4>
                <ul>
                    
                    <li>
                        <a href="change/mean.svg">Change in mean</a>
                    </li>
                    <li>
                        <a href="change/median.svg">Change in median</a>
                    </li>
                    <li>
                        <a href="change/t-test.svg">T-Test</a>
                    </li>
                </ul>
            </div>
        </section>
        <section class="explanation">
            <h4>Understanding this report:</h4>
            <p>The plot on the left shows the probability of the function taking a certain amount of time. The red
                curve represents the saved measurements from the last time this benchmark was run, while the blue curve
                shows the measurements from this run. The lines represent the mean time per iteration. Click on the
                plot for a larger view.</p>
            <p>The plot on the right shows the two regressions. Again, the red line represents the previous measurement
                while the blue line shows the current measurement.</p>
            <p>See <a href="https://bheisler.github.io/criterion.rs/book/user_guide/command_line_output.html#change">the
                    documentation</a> for more details on the additional statistics.</p>
        </section>
    </div>
    <div id="footer">
        <p>This report was generated by
            <a href="https://github.com/bheisler/criterion.rs">Criterion.rs</a>, a statistics-driven benchmarking
            library in Rust.</p>
    </div>
</body>

</html>
```
Page 21/94FirstPrevNextLast