{
  "ml": {
    "v": "7",
    "eng": "2.11.0",
    "lvl": -1,
    "conf": 0,
    "mods": [
      {
        "cls": 0,
        "raw": 0.000058253605,
        "rte": "az",
        "prob": 0.000058253605
      },
      {
        "cls": 0,
        "raw": 0.00077640015,
        "rte": "az/whl",
        "prob": 0.00077640015
      }
    ],
    "prob": 0.000058253605,
    "files": [
      {
        "id": 0,
        "lvl": -1,
        "conf": 0,
        "prob": 0.00005825360494782217,
        "type": "whl"
      },
      {
        "id": 1,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000008751948371354956,
        "type": "python"
      },
      {
        "id": 2,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000009894371032714844,
        "type": "python"
      },
      {
        "id": 6,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000016242265701293945,
        "type": "python"
      },
      {
        "id": 7,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000012497107491071802,
        "type": "python"
      },
      {
        "id": 8,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000012566645636979956,
        "type": "python"
      },
      {
        "id": 13,
        "lvl": -1,
        "conf": 0,
        "prob": 0.000010112921700056177,
        "type": "registry"
      }
    ],
    "version": "v18.18",
    "analyzed_at": "2026-09-14T09:04:15Z"
  },
  "path": "pysbf2-1.0.5-py3-none-any.whl",
  "raw": {
    "files": [
      {
        "id": 0,
        "ctx": [
          {
            "b": "p!H([6Awak2MSdte)U=#1%XJ%002s/000Si003$-B7e-pfje72zFsi1uOlqyG{6XQ.AXWM)[JS*N%C8W25zZN.uG\u0026%vt)8l/I74JzRRCZe*ckoyXRAIW8CuB)v\u0026!x{tqqr+XN$Zvkb1[9T!?WYbE}my/@(VzV",
            "ln": 0
          }
        ],
        "mol": "O(As)H(Cm)",
        "sha": "9b5468c95412367dfd9c008c152f24b77c07de7313c67605ec78520bed0741c4",
        "path": "pysbf2-1.0.5-py3-none-any.whl",
        "risk": 3,
        "size": 35133,
        "type": "whl",
        "facts": {
          "metrics": {
            "whl": {
              "native_extension_count": 0
            },
            "file": {
              "size": 35133,
              "entropy": 7.97
            },
            "binary": {
              "peak_region_bytes": 33792,
              "peak_region_entropy": 7.83
            },
            "archive": {
              "file_count": 14,
              "member_count": 14,
              "script_count": 9,
              "zip_bomb_ratio": 8.5,
              "compressed_size": 33343,
              "directory_count": 0,
              "executable_count": 0,
              "extra_field_size": 0,
              "noise_file_count": 0,
              "compression.ratio": 0.22,
              "hidden_file_count": 0,
              "uncompressed_size": 152797,
              "crc_collision_count": 0,
              "entry_comment_count": 0,
              "max_filename_length": 39,
              "rtlo_filename_count": 0,
              "format.regular_count": 14,
              "nested_archive_count": 0,
              "path_traversal_count": 0,
              "symlink_escape_count": 0,
              "security.setgid_count": 0,
              "security.setuid_count": 0,
              "security.sticky_count": 0,
              "double_extension_count": 0,
              "duplicate_member_count": 0,
              "security.symlink_count": 0,
              "unicode_filename_count": 0,
              "homoglyph_filename_count": 0,
              "security.encrypted_count": 0,
              "timing.mtime_unique_count": 2,
              "timing.mtime_unique_ratio": 0.14,
              "misplaced_executable_count": 0,
              "timing.mtime_outlier_count": 5,
              "timing.mtime_dominant_count": 9,
              "timing.mtime_spread_seconds": 6,
              "timing.sentinel_mtime_count": 0,
              "security.world_writable_count": 0,
              "timing.mtime_dominant_fraction": 0.64,
              "compression.method_counts.deflate": 14
            },
            "consistency": {
              "cloned_summary": 0,
              "name_typosquat": 0,
              "self_dependency": 0,
              "metadata_identity_mismatch": 0
            }
          }
        },
        "ident": {
          "name": {
            "value": "pysbf2",
            "source": "whl.distribution",
            "verified": false
          },
          "trust": "unsigned",
          "emails": [
            "semuadmin@semuconsulting.com"
          ],
          "authors": [
            {
              "name": "Steve Smith",
              "role": "author",
              "email": "semuadmin@semuconsulting.com",
              "source": "whl.author"
            }
          ],
          "version": {
            "value": "1.0.5",
            "source": "whl.version",
            "verified": false
          }
        },
        "traits": [
          {
            "id": "micro-behaviors/communications/http/services/aws-ec2::ec2-user-data-script",
            "mbc": "C0002",
            "conf": 0.86,
            "crit": 3,
            "desc": "EC2 user data script",
            "from": [
              {
                "file": 7
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pkginfo-core-metadata",
            "conf": 1.0,
            "crit": 1,
            "desc": "Declares Python Core Metadata version",
            "from": [
              {
                "file": 11
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pkginfo-license-file",
            "conf": 0.9,
            "crit": 1,
            "desc": "Declares Python package license file",
            "from": [
              {
                "file": 11
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pkginfo-requires-dist",
            "conf": 0.9,
            "crit": 1,
            "desc": "Declares Python runtime dependencies",
            "from": [
              {
                "file": 11
              }
            ]
          },
          {
            "id": "micro-behaviors/communications/socket/connect::socket-from-import",
            "atk": "T1071",
            "mbc": "C0001",
            "conf": 0.6,
            "crit": 3,
            "desc": "from socket import",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pkginfo-name-field",
            "conf": 0.9,
            "crit": 1,
            "desc": "Declares Python package name",
            "from": [
              {
                "file": 11
              }
            ]
          },
          {
            "id": "objectives/anti-static/obfuscation/code-metrics/identifiers::py-sequential-identifiers",
            "atk": "T1027",
            "mbc": "B0032",
            "conf": 0.8,
            "crit": 3,
            "desc": "Excessive sequential identifiers",
            "from": [
              {
                "file": 8
              }
            ]
          },
          {
            "id": "micro-behaviors/fs/read/file::python-pathlib-read-bytes",
            "atk": "T1005",
            "mbc": "E1005",
            "conf": 0.8,
            "crit": 2,
            "desc": "Read bytes via pathlib",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pkginfo-version-field",
            "conf": 0.9,
            "crit": 1,
            "desc": "Declares Python package version",
            "from": [
              {
                "file": 11
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pkginfo-markdown-description",
            "conf": 0.9,
            "crit": 1,
            "desc": "Declares Markdown package description",
            "from": [
              {
                "file": 11
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pkginfo-requires-python",
            "conf": 0.9,
            "crit": 1,
            "desc": "Declares supported Python versions",
            "from": [
              {
                "file": 11
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pypi-license-metadata",
            "conf": 0.94,
            "crit": 2,
            "desc": "PyPI package declares license information",
            "from": [
              {
                "off": 1532,
                "file": 11,
                "line": 35
              }
            ],
            "uses": [
              1,
              2,
              14
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pypi-basic-metadata",
            "conf": 0.95,
            "crit": 2,
            "desc": "PyPI package declares name, version, summary",
            "from": [
              {
                "off": 35,
                "file": 11,
                "line": 3
              }
            ],
            "uses": [
              1,
              5,
              8,
              13
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pkginfo-summary-field",
            "conf": 0.9,
            "crit": 1,
            "desc": "Declares Python package summary",
            "from": [
              {
                "file": 11
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pkginfo-license-expression",
            "conf": 0.9,
            "crit": 1,
            "desc": "Declares Python license expression",
            "from": [
              {
                "file": 11
              }
            ]
          },
          {
            "id": "metadata/package/manifest/ecosystem::pypi-runtime-metadata",
            "conf": 0.94,
            "crit": 2,
            "desc": "PyPI package declares Python and dependencies",
            "from": [
              {
                "off": 1554,
                "file": 11,
                "line": 36
              }
            ],
            "uses": [
              1,
              3,
              10
            ]
          },
          {
            "id": "micro-behaviors/fs/read/file::file-read-content",
            "atk": "T1005",
            "mbc": "E1005",
            "conf": 0.6,
            "crit": 2,
            "desc": "Reads file content (Python)",
            "from": [
              {
                "file": 6
              }
            ]
          },
          {
            "id": "micro-behaviors/communications/socket/connect::socket-module-import",
            "atk": "T1071",
            "mbc": "C0001",
            "conf": 0.6,
            "crit": 3,
            "desc": "Imports Python's socket module",
            "from": [
              {
                "file": 6
              }
            ]
          }
        ]
      },
      {
        "ctx": [
          {
            "b": "a%Fiu3pw\u0026Bvru6\u003eaA8cuf/ZvJvr\u0026$JfFUG{3jNt6vrDW9z/N(YB7GihvpTj?zxHuaBy/Sbax9b\u003eBz99j3ozWnAcVFrxj#xFaAIahBZX/$x(k6gSur@Igb6dAi=5IuwO#N2iV{:/l)aoqlU{gNB7C^/a%Fiu3jNtOA=k!qAcVtrwNPj\u003cB0bglAbP=sasEWaarR^Hq/ueYwPR0]vq{f%AX4UbarR^Hvrb{/edz}earR!owNPQ[zF7Hf3lQDlaz24]w?[gsxE\u003cP1arR^HxKM6}A=U@jwH[n$arR^Hy*?B4z/dsvzey*k3lQDlaz+Fdy\u0026shDwnMxs4gjj2arUGpxFKdewO9F53lQDlaz+\u003ecghg/FhA9rIedz}earR!Cy*?i\u0026AX4UbarR^HB-.aGCw.tvz*9-w3lQDlaA}ZwBz(vUB-.aA4gjJ[3jNtOA=k!qAcVIlw?\u003e#CC4CYnx(v(ix(d*cA=-BhuV{13B7]MguTBlHw].*baAhQEvRdwFwQ4Y@Acb/jzGu}mze:AlBrz$v3lQDlav/g9q=v^UwNPBAA=M8sedz}earR!6vrb^[wPRH7mriA!AX4UbarR^Hq:J@FwPI{3xjTILA=k$H4gjj2arTPHmO)JlB7E^XA=k$H4gjj2arTPHmPjzHwNPBAA=M8sedz}earR!9lpK}1AaIEUA=k$H4gjJ[3tar%z6i!yB7e-pe]$GlxK#10wPz\u0026mx(d*cA=-AN4glY/z/3RoD2)Cbga)SSw]ha2B75Y)azCXiz/P}xq:J@FwPI{3xjRIVw].*baAhQEvRdwFB7e:4wNPaXAV/7kAbP=sax7P@qE%oEwPwj!w].*baAhQEvRdwFB7e:6D2NtouT^?\u0026v@3cdx(d*cA=-AN4glY/z/3RoD2)Cbga)SSw]@rqwPIi*z/Pzix(d*cA=-AN4glY/z/3RoD2)Cbga)SSw]@rqwPIi?wN/T?wPF#dze:AlBrA4x3jNt=wPz\u003caz/cWXaywG0wPz\u003caz/e]?arR)KAcVnlzGE]Zwnc9[vR/Qsx(n95y?WAizEEx[4gi",
            "ln": 0,
            "col": 1,
            "line": 1
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "pysbf2.exceptions",
              "GNSSStreamError"
            ],
            [
              "pysbf2.exceptions",
              "ParameterError"
            ],
            [
              "pysbf2.sbfmessage",
              "SBFMessage"
            ],
            [
              "pysbf2.exceptions",
              "SBFMessageError"
            ],
            [
              "pysbf2.exceptions",
              "SBFParseError"
            ],
            [
              "pysbf2.sbfreader",
              "SBFReader"
            ],
            [
              "pysbf2.exceptions",
              "SBFStreamError"
            ],
            [
              "pysbf2.exceptions",
              "SBFTypeError"
            ],
            [
              "pynmeagps",
              "SocketWrapper"
            ],
            [
              "pysbf2._version",
              "__version__"
            ],
            [
              "pynmeagps",
              "area"
            ],
            [
              "pynmeagps",
              "bearing"
            ],
            [
              "pynmeagps",
              "ecef2llh"
            ],
            [
              "pynmeagps",
              "haversine"
            ],
            [
              "pynmeagps",
              "latlon2dmm"
            ],
            [
              "pynmeagps",
              "latlon2dms"
            ],
            [
              "pynmeagps",
              "llh2ecef"
            ],
            [
              "pynmeagps",
              "llh2iso6709"
            ],
            [
              "pynmeagps",
              "planar"
            ],
            [
              "",
              "pynmeagps"
            ],
            [
              "",
              "pysbf2._version"
            ],
            [
              "",
              "pysbf2.exceptions"
            ],
            [
              "",
              "pysbf2.sbfhelpers"
            ],
            [
              "",
              "pysbf2.sbfmessage"
            ],
            [
              "",
              "pysbf2.sbfreader"
            ],
            [
              "",
              "pysbf2.sbftypes_blocks"
            ],
            [
              "",
              "pysbf2.sbftypes_core"
            ],
            [
              "",
              "pysbf2.sbftypes_decodes"
            ],
            [
              "pynmeagps",
              "utc2wnotow"
            ],
            [
              "pynmeagps",
              "wnotow2utc"
            ]
          ],
          "metrics": {
            "ast": {
              "max_depth": 3,
              "call_count": 0,
              "node_count": 145
            },
            "file": {
              "size": 834,
              "entropy": 4.89
            },
            "text": {
              "lines": 40,
              "top_char": 114,
              "digit_ratio": 0.05,
              "space_count": 117,
              "char_entropy": 4.89,
              "unique_chars": 60,
              "top_char_null": 0,
              "import_density": 75,
              "string_density": 0.03,
              "top_char_ratio": 0.07,
              "avg_line_length": 18.85,
              "max_line_length": 53,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.1,
              "last_line_length": 53,
              "whitespace_ratio": 0.24,
              "identifier_density": 1,
              "line_length_stddev": 13.02,
              "max_whitespace_run": 2,
              "normalized_import_count": 4.74,
              "normalized_string_count": 0.16,
              "normalized_unique_identifiers": 6.01
            },
            "binds": {
              "count": 1
            },
            "binary": {
              "peak_region_bytes": 834,
              "peak_region_entropy": 4.89
            },
            "imports": {
              "count": 30,
              "third_party_count": 30,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 121,
              "count": 1,
              "avg_length": 121,
              "max_length": 121,
              "avg_entropy": 4.89
            },
            "comments": {
              "chars": 30,
              "count": 1,
              "lines": 1,
              "to_code_ratio": 0.03
            },
            "identifiers": {
              "count": 40,
              "unique": 32,
              "avg_length": 10.38,
              "max_length": 16,
              "min_length": 4,
              "avg_entropy": 2.89,
              "reuse_ratio": 0.8,
              "length_stddev": 2.92,
              "has_digit_ratio": 0.25,
              "all_lowercase_ratio": 0.47,
              "numeric_suffix_count": 2,
              "double_underscore_count": 1,
              "underscore_prefix_count": 2
            }
          }
        },
        "id": 1,
        "mol": "Md(Pa)",
        "path": "pysbf2-1.0.5-py3-none-any.whl!!pysbf2/__init__.py",
        "pid": 2,
        "risk": 2,
        "sha": "88142d63d39c5ca0ecfc853d10f0e8330bdb946584e32a94387e26e3941b8233",
        "size": 834,
        "traits": [
          {
            "id": "metadata/package/files/dependency::bundled-python-library-path",
            "conf": 1.0,
            "crit": 3,
            "desc": "Bundled Python dependency library path"
          },
          {
            "id": "metadata/import/python/pynmeagps/area::area",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports area from pynmeagps",
            "spans": [
              [
                176,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/bearing::bearing",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports bearing from pynmeagps",
            "spans": [
              [
                187,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/ecef2llh::ecef2llh",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports ecef2llh from pynmeagps",
            "spans": [
              [
                201,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/haversine::haversine",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports haversine from pynmeagps",
            "spans": [
              [
                216,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/latlon2dmm::latlon2dmm",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports latlon2dmm from pynmeagps",
            "spans": [
              [
                232,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/latlon2dms::latlon2dms",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports latlon2dms from pynmeagps",
            "spans": [
              [
                249,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/llh2ecef::llh2ecef",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports llh2ecef from pynmeagps",
            "spans": [
              [
                266,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/llh2iso6709::llh2iso6709",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports llh2iso6709 from pynmeagps",
            "spans": [
              [
                281,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/planar::planar",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports planar from pynmeagps",
            "spans": [
              [
                299,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/socketwrapper::socketwrapper",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SocketWrapper from pynmeagps",
            "spans": [
              [
                156,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/utc2wnotow::utc2wnotow",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports utc2wnotow from pynmeagps",
            "spans": [
              [
                312,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/wnotow2utc::wnotow2utc",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports wnotow2utc from pynmeagps",
            "spans": [
              [
                329,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps::pynmeagps",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pynmeagps",
            "spans": [
              [
                132,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/_version/__version__::__version__",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports __version__ from pysbf2._version",
            "spans": [
              [
                375,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/_version::pysbf2/_version",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2._version",
            "spans": [
              [
                352,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/gnssstreamerror::gnssstreamerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports GNSSStreamError from pysbf2.exceptions",
            "spans": [
              [
                425,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/parametererror::parametererror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports ParameterError from pysbf2.exceptions",
            "spans": [
              [
                447,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/sbfmessageerror::sbfmessageerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFMessageError from pysbf2.exceptions",
            "spans": [
              [
                468,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/sbfparseerror::sbfparseerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFParseError from pysbf2.exceptions",
            "spans": [
              [
                490,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/sbfstreamerror::sbfstreamerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFStreamError from pysbf2.exceptions",
            "spans": [
              [
                510,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/sbftypeerror::sbftypeerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFTypeError from pysbf2.exceptions",
            "spans": [
              [
                531,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions::pysbf2/exceptions",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.exceptions",
            "spans": [
              [
                393,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfhelpers::pysbf2/sbfhelpers",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.sbfhelpers",
            "spans": [
              [
                554,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfmessage/sbfmessage::sbfmessage",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFMessage from pysbf2.sbfmessage",
            "spans": [
              [
                612,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfmessage::pysbf2/sbfmessage",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.sbfmessage",
            "spans": [
              [
                587,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfreader/sbfreader::sbfreader",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFReader from pysbf2.sbfreader",
            "spans": [
              [
                653,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfreader::pysbf2/sbfreader",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.sbfreader",
            "spans": [
              [
                629,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_blocks::pysbf2/sbftypes_blocks",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.sbftypes_blocks",
            "spans": [
              [
                669,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_core::pysbf2/sbftypes_core",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.sbftypes_core",
            "spans": [
              [
                707,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_decodes::pysbf2/sbftypes_decodes",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.sbftypes_decodes",
            "spans": [
              [
                743,
                0
              ]
            ]
          }
        ],
        "type": "python"
      },
      {
        "depth": 1,
        "facts": {
          "metrics": {
            "ast": {
              "max_depth": 4,
              "call_count": 0,
              "node_count": 14
            },
            "file": {
              "size": 170,
              "entropy": 4.96
            },
            "text": {
              "lines": 11,
              "top_char": 101,
              "max_ws_run": 1,
              "digit_ratio": 0.13,
              "space_count": 15,
              "char_entropy": 4.96,
              "unique_chars": 44,
              "top_char_null": 0,
              "string_density": 0.18,
              "top_char_ratio": 0.08,
              "avg_line_length": 13.45,
              "max_line_length": 32,
              "non_ascii_ratio": 0.01,
              "empty_line_ratio": 0.27,
              "last_line_length": 21,
              "whitespace_ratio": 0.22,
              "identifier_density": 0.09,
              "line_length_stddev": 11.9,
              "normalized_string_count": 0.6,
              "normalized_unique_identifiers": 0.29
            },
            "binds": {
              "count": 1
            },
            "binary": {
              "peak_region_bytes": 170,
              "peak_region_entropy": 4.96
            },
            "strings": {
              "bytes": 146,
              "count": 2,
              "avg_length": 73,
              "max_length": 141,
              "avg_entropy": 3.41,
              "entropy_stddev": 1.49
            },
            "identifiers": {
              "count": 1,
              "unique": 1,
              "avg_length": 11,
              "max_length": 11,
              "min_length": 11,
              "avg_entropy": 2.73,
              "reuse_ratio": 1,
              "all_lowercase_ratio": 1,
              "double_underscore_count": 1,
              "underscore_prefix_count": 1
            }
          }
        },
        "id": 2,
        "path": "pysbf2-1.0.5-py3-none-any.whl!!pysbf2/_version.py",
        "pid": 0,
        "risk": 1,
        "sha": "19ad3c35ff94c978175c95795357109a2394f192c6956146ee5edcd8b3af1ead",
        "size": 170,
        "traits": [
          {
            "id": "metadata/file/extension/identity::py",
            "conf": 1.0,
            "crit": 2,
            "desc": "File uses a Python artifact extension",
            "spans": [
              [
                0,
                0
              ]
            ]
          },
          {
            "id": "metadata/file/extension/token-shape::bare-alphanumeric-script-basename",
            "conf": 0.9,
            "crit": 2,
            "desc": "Script filename is a bare alphanumeric token",
            "spans": [
              [
                0,
                0
              ]
            ]
          },
          {
            "id": "metadata/file/metrics::low-overall-entropy-source",
            "conf": 0.9,
            "crit": 2,
            "desc": "Source file has low overall entropy",
            "spans": [
              [
                0,
                0
              ]
            ]
          }
        ],
        "type": "python"
      },
      {
        "ctx": [
          {
            "b": "a%Fiu3uGV*A+eV\u0026wPxzxC)$8\u00263r6nXqE%oEwPw]6y*?yae!5c%3q$Czwoe(4zE:(evrcB2B0bgmwncj3wozr%awLT1k}BcSlpJ8azE:\u003e/r6%w5zdN^fvp%d)azbUjz6in8C{4oAvpB4:4glSOByuqkBAg@3z6j4ox\u003e7*0B9hCvz/P@vayMykwNL",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "eIeLaeH@z8eIeLaeIeLaeIeF8eIeLaeIeLaeIeEZ3jNtuwPS6nzGu}fz//UnBzbkdA::emvRGZ*A^n^rvrt{2c$dftvTi6bB15kuzE:(ixK@r9vrcB2wftz\u003eBytQ=c$dftvqWh^lpKWXB8$=5wGU]iawLT1k$${iB75Y)aA7.7wN/*he!5c%3n0w",
            "ln": 720,
            "col": 45,
            "line": 17
          },
          {
            "b": "ze199dgDRBv@DsiA+Pf1BugK=wO(M#wnM3#aI$92gb7Eq4gkdjx\u003e7Z(B7ExPlq{n{gC7$gvrDT54gjp6a}j\u003e*3l{WjD2dhjBugKPx(^Y(y?k+Kz/mjAvqZuxAbP/iBzkVhvqEJ7A+xJiwO#Qh4giKKw].*baz+$exk8l@azCXiz/P}xxjVfUz!AY]AT-v/A=k!qB8LM7wPP5eze:AlBrCTyv@2T$4giKKw].*baAhQzzdNc*Ac0doze:AlBrz$v3lQDlawLT1l0)eJqy\u0026m:arR^Hpeaeyo\u003ewx!vp%duA=M8sedz}earR!4o*}uAvrcB2mriA!AX4UbarR^HpeaeyqE%oEwPxsh3lQDlawLT1k#R(CwNPBAA=M8sedz}earR!4o*}uED2Ns-A=M8sedz}earR!9z!0M]BxrG\u003eAbYxeedz}n4glY/z/3RoD2!1pz6iLfAbP=sasEWaarR^HqDc1To\u003ewx!vp%duA=M8sedz}earR!8r6%wRvrcB2mriA!AX4UbarR^HqDc1TqE%oEwPxsh3lQDlaw#fao\u0026DdOwNPBAA=M8sedz}earR!8r6%wVD2Ns-A=M8sedz}n4giKKw].*baAhQEvRdwFwQ4Y@Acb/jzGu}mze:AlBrz$v3lQDlax7P@o\u003ewx!vp%duA=M8sedz}earR!9lpK^WA=U!XA=M8sedz}earR!9lpK)}A+eV@mriA!AX4UbarR^Hq:J@MD2Ns-A=M8sedz}n4glY/z/3RoD2)Cbga)SSw[U:(AaK6hazCXiz/P}xvTi6bB24DuefFCyv\u003e}IsBy/IAaz2R7vq]^^y?%K/w].*baAhQEvRdwFB7e-#wPI{3xjSi1ze:AlBrBHGmONDnB75Y)4glY/z/3RoD2)Cbga)SSw]@rqwPIi*z/Pzix(d*cA=-AL4gjj2arT9JqEr9[m\u003et8RarR^Hmn^2\u003cqB9(MmjX(ParR^HpeaeyuR\u003cS@r8k\u003eSoE{RWarR^HqDc1TgHA%RpGgaSpFrqG3lQDlax7P@uR0N.edz}earR!9lpLrUqCQm/lR*xb4gjj2arTYJoHzDKrzt1N3mMz\u003e4giKKv@bN{B0ayFmP9/awmY^x4gjj2arR\u003cLa}j(4arR!9lpK\u003c:vpS}\u0026ay/j@B8@@y3lQDlar\u00260N4giKKarR^HwmYu}uTEI+x()Y?c\u003ecIaarR^HarQ",
            "ln": 1040,
            "col": 28,
            "line": 27
          },
          {
            "b": "A=M8sxKL^?y?mSFaA7.7wN/*8jS)HrzE\u003evd3lQDlasPtX3lQDlarR^Har\u00260NlVl\u003c-BAhIlBz(gL4giKKarR^HarR^Hi=FIFvqNb$vrt}0BAg@3z6i[wA+eV@iV@cOAclmBwmoN*aAITBwNPA+3lQDlarR^HauBEIA:-/cx(n2nC42i3wmoN\u003eiV}D?oHzDKrzsO:f!1kdaxz]!x\u003egT]wGUF@wN/H%B.@Vs3lQDlarR^HarR^Haxy^4pesRNasF])auZ\u0026YxkRTdwGUY8C42i3wftw}wN/H%B.@lHf!0LsarR^HarR^Hi=FIFvqNc3zGE1uA=l5ix(4)5AYLsro*}uP",
            "ln": 2268,
            "col": 10,
            "line": 87
          },
          {
            "b": "f!0LsarR^HarR^Hi=FIFvqNc3zGE1gB.kYeDsYbWB8LM7wPP5nwN/)avS=o{wPw]mx)Ktkc]rRrhyP7xarR^HarR^Hi=FIFvqNb@z/oCmAa9^dx(mMAaxix7wGTbUAa5",
            "ln": 2835,
            "col": 77,
            "line": 98
          },
          {
            "b": "B98ClvqNC53lQDlarR^Har\u00260N4giKKarR^HarR^HAa9^dx(mMajS)ZAB.80?arR^HarR^HCw7YbwGU@2A=U@jxf4dTboQ/vz/u?wzGGPeaz2C3aA7\u003cmC42i3wft-2B8$=5wGU]iavP6}4gjj2arR^HarR^HarU=DC@=xw4gjj2arR^HarR^HarR^HarUYkCva(?ByupPawM\u0026)wEO",
            "ln": 4626,
            "col": 73,
            "line": 148
          },
          {
            "b": "arR^HAa9^dwN]dUvrt{2jS)HrzE\u003cm:arR^HarR^HarR^HarR^HvTi6bf^5R4B7Gf1e)\u0026TgvpS.OD30Rsc]0d[ar@1HwNP9(Bzbkdw[=pbBrC4rBy+)*arR^HarR^HarR^HarR^HboQYjaz#atax7P@efEXZml@5mAV!mVlRPu/ay]hcv{%y*ayPd#ay/tcBzkSnwEO$?arR^HarR^HarR^HarR!vw/$MdBy^fHzF%Rtx(k4wvJ]64gbHgaayVK1CW@POdlm[BarR^HarR^HarR^HarR^HarR^Hv@Dmbx(n684gjj2arR^HarR^HarR^HarUcsBy^iIjS[/Sy?tqbA+eV\u0026uT!q5wPGmOdgDRbarR^HarR^HarR^HarR!oD30Rhwo5!QayYRrwICqTayYRrwIKY44gjj2arR^HarR^HarR^HarR)Kx\u003ewG4BshbLviwGnmJ=LVB8$=5wGSygcTp)Kg*CnZfEFpU3lQDlarR^HarR^HarR^HazCBgvTi6bxK(cajV%]^lpLrMl@D5P3lQDlarR^HarR^HarR^HarR^HaAy[muU0O!vjSKuvrcB2wm5\u003eQByupPaAIagw?B",
            "ln": 4805,
            "col": 13,
            "line": 156
          },
          {
            "b": "arR^HarR!ry\u0026:eG4gjj2arR^HarR^HarR^HarR^HarR^HarUfjzGGPgB.80?arR^HarR^HarR^HarR^HboQYjazC{BB0a[eawLT1k{g2QB8$=5wGSygcTp)Kg*CnTe?4kparR^HarR^HarR^HarR^HwO=6)ayYRrwOtQ{azCZopeaeyuR0N.iT(AsarR^HarR^HarR^HarR^HarR!EvrV6?vrt{eaAg+fB7F(?wmoN*auZ\u0026*wO+%h",
            "ln": 5535,
            "col": 14,
            "line": 171
          },
          {
            "b": "atw4JgDMZ*D30QMauZ\u00263vLxF\u0026fFCggdK+/larR^HarR^HarR^HarR^HwO=6)ayYRrwICq\u003cjS[hTtZf^na%priwfrpfD30QMtqft9clN:\u003eCRy{5au.\u003egfGGTIarR^HarR^HarR^HarR^HarR^HA::f0wmoN*efF[uA=U/5uU0O!vivYQB7Gf1e)\u0026L",
            "ln": 6107,
            "col": 27,
            "line": 183
          },
          {
            "b": "A=U/0B7e-fB7Gf1efFRpAYLsLD30RsdiHiaaAR:By?kTp3lQDlarR^Har\u00260N4gjj2arR^HarTG?A=U!mA+f8@x(mD)AV/pjax7P@az\u003eXhB75Y)e!5c%3lQDlarR^HauBEIA:-/cvTi6bB0bdbAYLswlpJ8hwNPaXAV==tcTo]3gbJlvCR?94dgDRbarR^HarR^/A+funA=9]XBAILswGU]6asInsCva(?Byuq2B0a}qBy/IAaAg+fB7F(?wmoN*ayPslq:J@FwPI{3xjSi7AV!a}zE\u003ema3lQDlarR^HauBK+D2NsQaAR:By?j4.arR^HarR^Ha%Fiu3jNs+arR^H",
            "ln": 7385,
            "col": 12,
            "line": 218
          },
          {
            "b": "w[t#(3lQDlarR^HayYRrwO@RNaAIagw?EChwNPaRvTi6bB0@{}4gjj2arR^HarUfmv\u003c0]SvTi6bzD!!Qgf\u003es@arR^HarR^Hzf6u7wfs2TvTi6bzD!\u003eSg*HK$arR^HarR^H",
            "ln": 7707,
            "col": 56,
            "line": 227
          },
          {
            "b": "B7FY@zdNc7B7Gf1efFRpAYLsLD30RsdiHiaaAR:By?kTp3lQDlarR^Har\u00260N4gjj2arR^HarTG?A=U!mA+f8@x(mD)AV/pjawLT1k{g2QB8$=5wGSyzB7]J8aAhQzzdNc*Ac0drx\u003c#9\u003eA^o8^4giKKarR^HarR^Hi=FIFvqNb@D30RsaztqaiV}f(ml@5fwNPaXAV==tcTo]3gbJlvCRgP@dgDRbarR^HarR^/A+funA=9]XBAILswGU]6asInsCva(?Byuq2B0a}qBy/IAaAg+fB7F(?wmoN*ayPslpeaeyo\u003ewx!vp%c]z/M%}z/fbn4gjj2arR^HarSZ=BA}?piS",
            "ln": 8414,
            "col": 13,
            "line": 247
          },
          {
            "b": "wNxF1v@j1IB7Gf1efFRpAYLsLD30RsdiHiaaAR:By?kTp3lQDlarR^Har\u00260N4gjj2arR^HarTG?A=U!mvqZukqDc1TgAZjpByuqazxK4mwGV5oA+eV@asIwNx(mMaAcVFCv@iu8x\u003c#9\u003eA^o8^4giKKarR^HarR^Hi=FIFvqNb@D30RsaztqaiV@3GA=VsBg9y4KBy/Ioz!pa\u0026r6%woazts{wmY=\u003c3lQDlarR^HauBKOBAIRwiV@J!Abo8dz!pauA::f0wmoN*ayPslvTi6bB1wCMvrcB2wm6z1BZ=F4B0avWlRQo^B8$=5wHO5}arR^HarR^Hi=Ys/AaI6MBAILs",
            "ln": 9267,
            "col": 14,
            "line": 270
          },
          {
            "b": "4gjj2arR^HarUYoBAIRwasInsCva(?ByuZyAa9^dwN]dUvrt{b4giKKarR^HwmYu}uVGZ^wm5!\u003eBy/IwB7Gf1efG1FDsYbWx(n2wat2=1vTi6bB2\u003c:qarR^HarR^Ha%Fiu3lQDlarR^Haw#=Vwftq6B8UY2x\u003ez6\u003cwft=jzdm6%aA7\u003cmvTi6bB0b7nz/3RrBAg@3z7Vn84gjj2arR^HarSZ:vrb^[azC.naAImywJy@KB.$P0AV/pjayYRrwPF#ozY\u003c7ivpP/OarR^HarR^Hi=X!NB-IvXayYRrwPFp/arR^HarR^Hi=Ys/AaI6MvTi6bA$5E0arR^HarR^/A:-W6wPG)Pq:J@LBAg@3zaeF=z/M$mw/#epA+eV@az2C3B0bBxwO\u003e\u003c$B-I5fC)$96arR^HarR^",
            "ln": 10120,
            "col": 31,
            "line": 293
          },
          {
            "b": "arR^HarR^HarR!Evqf^]avP6}mriA!AWSvVar@1FA:-P$vlbJGzY\u0026LdC4CX63lQDlarR^HazCBgwmoN*tp?M\u003ct{7pNayVK1CRALIiV]K\u0026aARTDzEW9%wN({8BAg@3z4c*{arR^HarR^HarR!Evqf^]ax7P@q/)4\u003evqOCNA=k$D4gjj2arR^HarR^HarR^HarR\u003ebwPzG[y-)!vA+eV@aARgnze0(@By!#9B-7=nAaJK3wN]R5e*8tE3lQDlarR^HarR^H",
            "ln": 11143,
            "col": 2,
            "line": 327
          },
          {
            "b": "wO95(wn+*^A=M8sd05%ow?k6oA=Kh-mr\u0026rNAcb/jzyEQQ3lQDlarR^Har\u00260N4gjj2arR^HarTi-zE^M{az2Olz/NDt3jNs+arR^HarR^/Aa9=}z6hn(v}xR3x(v(iwPz/Laz2Olz/Mo]arR^HarR^Hi=XUyB7GzNavQJ+wPh:9z/cXiw/#8ox([ohwPz*fAV^H/mn^2\u003cqB9(MmiB0ldgDRbarR^HarR^Ja%EE64gjj2arR^HarUxgaAIagw?ECgB.L@ozE)\u003cez/M%-jS)f\u003eqErr/nMe5s4gjj2arR^HarR^HarUYkx(^\u0026dwPz/lw].*baz2Ol4gjj2arR^HarUxg",
            "ln": 11447,
            "col": 6,
            "line": 335
          },
          {
            "b": "z76Epy?taseJ$p}vRPE:Buf\u003crarR^HarR^Ha%Fiu3lQDlarR^Hav*0+By/Fnw]zYjB98ClvqNRa3jNs+arR^HarR^/A+funA=9]XwmoN*aAITBwNPA+3lQDlarR^HauBK+D2NsQaA7.7wN//\u003e3lQDlarR^Har\u00260N4giKKarR^HarR^HA+funA=90",
            "ln": 12012,
            "col": 18,
            "line": 354
          },
          {
            "b": "wO+)rayYncy-\u003e\u003e-rc0a)edz}earR^Qat2=1z^)D)v@%:v3lQDlarR^Har\u00260N4gjj2arR^HarTG?A=U!mq:J}@vTi6baAITBwNPA#Bz\u0026p2lpKWXB8$=5wGU]2ygQ)%e!5c%3lQDlarR^HauBEIA:-/cvTi6bB0bshB8$=5wJy@yx(mv1C{3%nB8$=5wGV8kaAg+fB7C^/arR^HarR^Hi=FIFvqNc3zGE1AvqGT*vru6waxy^4lRyuTo=$\u0026sdiH+@r://UwmoN\u003eay/7@v@3ddz7Db6arR^HarR^HarR^HrZxzOpFKt3c[)7)jS[DKzF%MbazC.pvqGT*ay/7@v@3dd",
            "ln": 12288,
            "col": 19,
            "line": 368
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "isinstance"
            ],
            [
              "",
              "SocketWrapper"
            ],
            [
              "",
              "getLogger"
            ],
            [
              "",
              "self.read"
            ],
            [
              "",
              "self._read_bytes"
            ],
            [
              "",
              "self._read_bytes"
            ],
            [
              "",
              "self._parse_sbf"
            ],
            [
              "",
              "self._parse_nmea"
            ],
            [
              "",
              "self._parse_rtcm3"
            ],
            [
              "",
              "SBFParseError"
            ],
            [
              "",
              "self._do_error"
            ],
            [
              "",
              "self._read_bytes"
            ],
            [
              "",
              "int.from_bytes"
            ],
            [
              "",
              "self._read_bytes"
            ],
            [
              "",
              "self.parse"
            ],
            [
              "",
              "self._read_line"
            ],
            [
              "",
              "NMEAReader.parse"
            ],
            [
              "",
              "self._read_bytes"
            ],
            [
              "",
              "self._read_bytes"
            ],
            [
              "",
              "self._read_bytes"
            ],
            [
              "",
              "RTCMReader.parse"
            ],
            [
              "",
              "self._stream.read"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "EOFError"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "SBFStreamError"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "self._stream.readline"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "EOFError"
            ],
            [
              "",
              "SBFStreamError"
            ],
            [
              "",
              "len"
            ],
            [
              "",
              "self._logger.error"
            ],
            [
              "",
              "self._errorhandler"
            ],
            [
              "",
              "crc2bytes"
            ],
            [
              "",
              "SBFMessageError"
            ],
            [
              "",
              "escapeall"
            ],
            [
              "",
              "escapeall"
            ],
            [
              "",
              "bytes2id"
            ],
            [
              "",
              "int.from_bytes"
            ],
            [
              "",
              "SBFMessage"
            ],
            [
              "pysbf2.sbftypes_core",
              "ERR_LOG"
            ],
            [
              "pysbf2.sbftypes_core",
              "ERR_RAISE"
            ],
            [
              "pynmeagps",
              "NMEAMessageError"
            ],
            [
              "pynmeagps",
              "NMEAParseError"
            ],
            [
              "pynmeagps",
              "NMEAReader"
            ],
            [
              "pynmeagps",
              "NMEAStreamError"
            ],
            [
              "pynmeagps",
              "NMEATypeError"
            ],
            [
              "pynmeagps",
              "NMEA_HDR"
            ],
            [
              "pysbf2.sbftypes_core",
              "NMEA_PROTOCOL"
            ],
            [
              "pysbf2.sbftypes_core",
              "RTCM3_PROTOCOL"
            ],
            [
              "pyrtcm",
              "RTCMMessageError"
            ],
            [
              "pyrtcm",
              "RTCMParseError"
            ],
            [
              "pyrtcm",
              "RTCMReader"
            ],
            [
              "pyrtcm",
              "RTCMStreamError"
            ],
            [
              "pyrtcm",
              "RTCMTypeError"
            ],
            [
              "pysbf2.sbfmessage",
              "SBFMessage"
            ],
            [
              "pysbf2.exceptions",
              "SBFMessageError"
            ],
            [
              "pysbf2.exceptions",
              "SBFParseError"
            ],
            [
              "pysbf2.exceptions",
              "SBFStreamError"
            ],
            [
              "pysbf2.exceptions",
              "SBFTypeError"
            ],
            [
              "pysbf2.sbftypes_core",
              "SBF_HDR"
            ],
            [
              "pysbf2.sbftypes_core",
              "SBF_PROTOCOL"
            ],
            [
              "pynmeagps",
              "SocketWrapper"
            ],
            [
              "pysbf2.sbftypes_core",
              "VALCKSUM"
            ],
            [
              "pysbf2.sbfhelpers",
              "bytes2id"
            ],
            [
              "pysbf2.sbfhelpers",
              "crc2bytes"
            ],
            [
              "pysbf2.sbfhelpers",
              "escapeall"
            ],
            [
              "logging",
              "getLogger"
            ],
            [
              "",
              "logging"
            ],
            [
              "",
              "pynmeagps"
            ],
            [
              "",
              "pyrtcm"
            ],
            [
              "",
              "pysbf2.exceptions"
            ],
            [
              "",
              "pysbf2.sbfhelpers"
            ],
            [
              "",
              "pysbf2.sbfmessage"
            ],
            [
              "",
              "pysbf2.sbftypes_core"
            ],
            [
              "",
              "socket"
            ],
            [
              "socket",
              "socket"
            ]
          ],
          "mbr": [
            "NMEAReader.parse",
            "RTCMReader.parse",
            "int.from_bytes",
            "self._do_error",
            "self._errorhandler",
            "self._logger",
            "self._logger.error",
            "self._parse_nmea",
            "self._parse_rtcm3",
            "self._parse_sbf",
            "self._parsebf",
            "self._parsing",
            "self._protfilter",
            "self._quitonerror",
            "self._read_bytes",
            "self._read_line",
            "self._stream",
            "self._stream.read",
            "self._stream.readline",
            "self._validate",
            "self.parse",
            "self.read"
          ],
          "tgt": [
            "EOFError",
            "NMEAReader.parse",
            "RTCMReader.parse",
            "SBFMessage",
            "SBFMessageError",
            "SBFParseError",
            "SBFStreamError",
            "SocketWrapper",
            "bytes2id",
            "crc2bytes",
            "escapeall",
            "getLogger",
            "int.from_bytes",
            "isinstance",
            "len",
            "self._do_error",
            "self._errorhandler",
            "self._logger.error",
            "self._parse_nmea",
            "self._parse_rtcm3",
            "self._parse_sbf",
            "self._read_bytes",
            "self._read_line",
            "self._stream.read",
            "self._stream.readline",
            "self.parse",
            "self.read"
          ],
          "funcs": [
            [
              "__init__",
              1964
            ],
            [
              "__iter__",
              3640
            ],
            [
              "__next__",
              3715
            ],
            [
              "read",
              4124
            ],
            [
              "_parse_sbf",
              7378
            ],
            [
              "_parse_nmea",
              8406
            ],
            [
              "_parse_rtcm3",
              9258
            ],
            [
              "_read_bytes",
              10168
            ],
            [
              "_read_line",
              10821
            ],
            [
              "_do_error",
              11446
            ],
            [
              "datastream",
              11999
            ],
            [
              "parse",
              12198
            ]
          ],
          "metrics": {
            "ast": {
              "op.add": 9,
              "op.bor": 3,
              "op.shl": 1,
              "op.sub": 2,
              "op.band": 8,
              "op.bnot": 1,
              "op.land": 6,
              "max_depth": 17,
              "call_count": 41,
              "node_count": 1781,
              "member_count": 22,
              "op_density.add": 0.01,
              "op_density.bor": 0,
              "op_density.shl": 0,
              "op_density.sub": 0,
              "op_density.band": 0,
              "op_density.bnot": 0,
              "op_density.land": 0,
              "max_array_length": 12,
              "max_concat_chain": 5,
              "max_member_depth": 3
            },
            "file": {
              "size": 13328,
              "entropy": 4.51
            },
            "text": {
              "lines": 395,
              "top_char": 101,
              "digit_ratio": 0.02,
              "space_count": 4152,
              "char_entropy": 4.51,
              "unique_chars": 88,
              "top_char_null": 0,
              "escape_density": 0.08,
              "import_density": 9.37,
              "string_density": 0.07,
              "top_char_ratio": 0.06,
              "ascii_art_lines": 4,
              "avg_line_length": 31.74,
              "max_line_length": 100,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.14,
              "hex_escape_count": 10,
              "last_line_length": 9,
              "whitespace_ratio": 0.37,
              "identifier_density": 1.03,
              "line_length_stddev": 22.81,
              "max_whitespace_run": 23,
              "normalized_import_count": 1.86,
              "normalized_string_count": 1.31,
              "repeated_char_sequences": 118,
              "suspicious_string_ratio": 0.12,
              "normalized_function_count": 0.6,
              "imports_to_functions_ratio": 3.08,
              "strings_to_functions_ratio": 2.17,
              "normalized_unique_identifiers": 12.29,
              "identifiers_to_functions_ratio": 8.83
            },
            "binds": {
              "count": 45
            },
            "binary": {
              "peak_region_bytes": 4096,
              "peak_region_entropy": 4.96
            },
            "source": {
              "class_count": 1,
              "function_count": 12
            },
            "imports": {
              "count": 37,
              "stdlib_count": 3,
              "stdlib_ratio": 0.08,
              "third_party_count": 34,
              "third_party_ratio": 0.92
            },
            "strings": {
              "sql": 2,
              "bytes": 4720,
              "count": 26,
              "very_long": 1,
              "avg_length": 181.54,
              "max_length": 1103,
              "avg_entropy": 3.35,
              "entropy_stddev": 1.4,
              "embedded_code_candidates": 1
            },
            "comments": {
              "chars": 1099,
              "count": 32,
              "lines": 32,
              "to_code_ratio": 0.09
            },
            "functions": {
              "count": 13,
              "density": 3.04,
              "avg_params": 2.25,
              "code_ratio": 0.77,
              "max_params": 9,
              "length_stddev": 18.55,
              "avg_name_length": 8.83,
              "avg_length_lines": 25.42,
              "max_length_lines": 79,
              "min_length_lines": 4,
              "many_params_count": 1,
              "numeric_suffix_names": 1,
              "avg_param_name_length": 6.15
            },
            "identifiers": {
              "count": 406,
              "unique": 106,
              "avg_length": 8.58,
              "max_length": 16,
              "min_length": 3,
              "avg_entropy": 2.61,
              "reuse_ratio": 0.26,
              "length_stddev": 3.4,
              "has_digit_ratio": 0.08,
              "all_lowercase_ratio": 0.66,
              "all_uppercase_ratio": 0.07,
              "numeric_suffix_count": 5,
              "double_underscore_count": 4,
              "underscore_prefix_count": 18
            }
          }
        },
        "id": 6,
        "mol": "H(Db)Md(In₂)",
        "path": "pysbf2-1.0.5-py3-none-any.whl!!pysbf2/sbfreader.py",
        "pid": 0,
        "risk": 3,
        "sha": "4f580cb4a4c9d3a9b6d03b5342b83214454f2eae7269147a699501fc45d0f04c",
        "size": 13328,
        "traits": [
          {
            "id": "metadata/import/python/socket/socket::socket",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports socket from socket",
            "spans": [
              [
                1210,
                6
              ]
            ]
          },
          {
            "id": "metadata/import/python/socket::socket",
            "conf": 0.95,
            "crit": 3,
            "desc": "imports socket",
            "spans": [
              [
                1196,
                6
              ]
            ]
          },
          {
            "id": "micro-behaviors/communications/socket/create::socket-from-import",
            "atk": "T1071",
            "mbc": "C0001",
            "conf": 0.6,
            "crit": 3,
            "desc": "from socket import",
            "spans": [
              [
                1191,
                18
              ]
            ]
          },
          {
            "id": "micro-behaviors/data/embedded/payload/trailer::python-slice-tail-magic-compare",
            "atk": "T1027.003",
            "conf": 0.8,
            "crit": 3,
            "desc": "Compares final bytes to a marker",
            "spans": [
              [
                11207,
                16
              ]
            ]
          },
          {
            "id": "metadata/import/python/logging/getlogger::getlogger",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports getLogger from logging",
            "spans": [
              [
                1180,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/logging::logging",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports logging",
            "spans": [
              [
                1165,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/nmea_hdr::nmea_hdr",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports NMEA_HDR from pynmeagps",
            "spans": [
              [
                1249,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/nmeamessageerror::nmeamessageerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports NMEAMessageError from pynmeagps",
            "spans": [
              [
                1264,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/nmeaparseerror::nmeaparseerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports NMEAParseError from pynmeagps",
            "spans": [
              [
                1287,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/nmeareader::nmeareader",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports NMEAReader from pynmeagps",
            "spans": [
              [
                1308,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/nmeastreamerror::nmeastreamerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports NMEAStreamError from pynmeagps",
            "spans": [
              [
                1325,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/nmeatypeerror::nmeatypeerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports NMEATypeError from pynmeagps",
            "spans": [
              [
                1347,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps/socketwrapper::socketwrapper",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SocketWrapper from pynmeagps",
            "spans": [
              [
                1367,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pynmeagps::pynmeagps",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pynmeagps",
            "spans": [
              [
                1225,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pyrtcm/rtcmmessageerror::rtcmmessageerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports RTCMMessageError from pyrtcm",
            "spans": [
              [
                1412,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pyrtcm/rtcmparseerror::rtcmparseerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports RTCMParseError from pyrtcm",
            "spans": [
              [
                1435,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pyrtcm/rtcmreader::rtcmreader",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports RTCMReader from pyrtcm",
            "spans": [
              [
                1456,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pyrtcm/rtcmstreamerror::rtcmstreamerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports RTCMStreamError from pyrtcm",
            "spans": [
              [
                1473,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pyrtcm/rtcmtypeerror::rtcmtypeerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports RTCMTypeError from pyrtcm",
            "spans": [
              [
                1495,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pyrtcm::pyrtcm",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pyrtcm",
            "spans": [
              [
                1391,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/sbfmessageerror::sbfmessageerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFMessageError from pysbf2.exceptions",
            "spans": [
              [
                1553,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/sbfparseerror::sbfparseerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFParseError from pysbf2.exceptions",
            "spans": [
              [
                1575,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/sbfstreamerror::sbfstreamerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFStreamError from pysbf2.exceptions",
            "spans": [
              [
                1595,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions/sbftypeerror::sbftypeerror",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFTypeError from pysbf2.exceptions",
            "spans": [
              [
                1616,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/exceptions::pysbf2/exceptions",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.exceptions",
            "spans": [
              [
                1521,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfhelpers/bytes2id::bytes2id",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports bytes2id from pysbf2.sbfhelpers",
            "spans": [
              [
                1664,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfhelpers/crc2bytes::crc2bytes",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports crc2bytes from pysbf2.sbfhelpers",
            "spans": [
              [
                1674,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfhelpers/escapeall::escapeall",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports escapeall from pysbf2.sbfhelpers",
            "spans": [
              [
                1685,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfhelpers::pysbf2/sbfhelpers",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.sbfhelpers",
            "spans": [
              [
                1639,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfmessage/sbfmessage::sbfmessage",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBFMessage from pysbf2.sbfmessage",
            "spans": [
              [
                1726,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbfmessage::pysbf2/sbfmessage",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.sbfmessage",
            "spans": [
              [
                1701,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_core/err_log::err_log",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports ERR_LOG from pysbf2.sbftypes_core",
            "spans": [
              [
                1778,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_core/err_raise::err_raise",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports ERR_RAISE from pysbf2.sbftypes_core",
            "spans": [
              [
                1792,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_core/nmea_protocol::nmea_protocol",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports NMEA_PROTOCOL from pysbf2.sbftypes_core",
            "spans": [
              [
                1808,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_core/rtcm3_protocol::rtcm3_protocol",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports RTCM3_PROTOCOL from pysbf2.sbftypes_core",
            "spans": [
              [
                1828,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_core/sbf_hdr::sbf_hdr",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBF_HDR from pysbf2.sbftypes_core",
            "spans": [
              [
                1849,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_core/sbf_protocol::sbf_protocol",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports SBF_PROTOCOL from pysbf2.sbftypes_core",
            "spans": [
              [
                1863,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_core/valcksum::valcksum",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports VALCKSUM from pysbf2.sbftypes_core",
            "spans": [
              [
                1882,
                0
              ]
            ]
          },
          {
            "id": "metadata/import/python/pysbf2/sbftypes_core::pysbf2/sbftypes_core",
            "conf": 0.95,
            "crit": 2,
            "desc": "imports pysbf2.sbftypes_core",
            "spans": [
              [
                1743,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-1",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"the\"",
            "spans": [
              [
                768,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-2",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"and\"",
            "spans": [
              [
                47,
                0
              ],
              [
                6155,
                0
              ]
            ]
          },
          {
            "id": "metadata/lang/natural::lang-english--atom-5",
            "conf": 0.8,
            "crit": 1,
            "desc": "English function-word token \"for\"",
            "spans": [
              [
                12060,
                0
              ]
            ]
          }
        ],
        "type": "python"
      },
      {
        "ctx": [
          {
            "b": "a%Fiu3uGV*BA}?pB6\u0026x)z!0N7e]V7B3jNtvlpJ7]A=l5rv@Dfaz/{evB-X:Bvr(WcvpQG\u003ewObT]x([6czGvAt3jNtwnjuDCave)]axg)2aw+vboIW@xavFT/nLR\u0026RnL-8WavYd8awCp6q:A]xqY]BpqCQ1]axg)2aw$S}mm*JGqvJ%YwIdQFaw=S\u0026x(vJ@v\u003c1JPC4\u003eO$BzkVhavGTWvlkPdz!%kjqE%]*z/fScB2$HozF0/fzdN^fvp%d)dj#5p",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "ze199dgDRBv@DsiA+Pf1BugK=wO(M#wnM3#aI$92gb7Eq4gkdjx\u003e7Z(B7ExPlq{n{gC7$gvrDT54gjp6a}j\u003e*3l{WjD2dhjBugKPx(^Y(y?k+Kz/mjAvqZuxy?W=#A$5D=3tar%z6i!yB7e-pe]$GlBA}?pB6\u0026A}A+cwcze:AlBrz$v3lQDlavv\u003c",
            "ln": 345,
            "col": 28,
            "line": 13
          },
          {
            "b": "q:I].f\u003ez{[edz}earR^HarR^KaA}HgA+cxsU](gLA::67zY\u0026$gaAR)FwGSYIvqYP#BA}?patL6Hvrcy5wPw]9A+flkwO#0(wPFp/arR^HarR^Hb2?utb03\u0026Dg+o7yarR^HarR^Hb3dJHb03\u0026DgaS\u003ewarR^HarR^Hb2f\u003cpiV}ASedz}earR^HarR^",
            "ln": 1697,
            "col": 73,
            "line": 81
          },
          {
            "b": "arR\u003evA=l8tb03?{4gjj2arR^HarR^HarR\u003e6a$KfgarR^HarR^HarR^HDKQr8arR^HarR^HarR^HarR^JrDz.(l$7gCb03\u0026Df!r+varR^HarR^HarR^HEjL*marR^HarR^Hdj+]narR^HarR^Hb133LzF\u003c34b03\u0026Df!sB\u0026boP(}B%5HG3lQDlaBL^I3lQDlar\u003co$xl4]?ByxolB0rT/DKQr8arR^HarR^Jr8lNtiV}AVedz}earR^HarR^J",
            "ln": 56595,
            "col": 7,
            "line": 2432
          },
          {
            "b": "arR^HarR^HarR^HDKQr8arR^HarR^HarR^HarR^Jq!p2\u003ex(v(Xl)sVmrwu3l3lQDlarR^HarR^HarR^Har\u003cT2A=-G^axpcE4gjj2arR^HarR^HarR^HarR\u003ebByxolB0rT/c\u0026",
            "ln": 65339,
            "col": 1,
            "line": 2773
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "C1"
            ],
            [
              "",
              "C10"
            ],
            [
              "",
              "C20"
            ],
            [
              "",
              "C21"
            ],
            [
              "",
              "C3"
            ],
            [
              "",
              "C32"
            ],
            [
              "",
              "C40"
            ],
            [
              "",
              "C60"
            ],
            [
              "",
              "C9"
            ],
            [
              "",
              "F4"
            ],
            [
              "",
              "F8"
            ],
            [
              "",
              "I1"
            ],
            [
              "",
              "I2"
            ],
            [
              "",
              "I4"
            ],
            [
              "",
              "PAD"
            ],
            [
              "",
              "PD"
            ],
            [
              "",
              "PD1"
            ],
            [
              "",
              "PD2"
            ],
            [
              "",
              "U1"
            ],
            [
              "",
              "U12"
            ],
            [
              "",
              "U13"
            ],
            [
              "",
              "U16"
            ],
            [
              "",
              "U2"
            ],
            [
              "",
              "U20"
            ],
            [
              "",
              "U3"
            ],
            [
              "",
              "U4"
            ],
            [
              "",
              "U5"
            ],
            [
              "",
              "U6"
            ],
            [
              "",
              "U7"
            ],
            [
              "",
              "U8"
            ],
            [
              "",
              "U9"
            ],
            [
              "",
              "V1"
            ],
            [
              "",
              "V2"
            ],
            [
              "",
              "V4"
            ],
            [
              "",
              "X1"
            ],
            [
              "",
              "X12"
            ],
            [
              "",
              "X124"
            ],
            [
              "",
              "X2"
            ],
            [
              "",
              "X228"
            ],
            [
              "",
              "X252"
            ],
            [
              "",
              "X32"
            ],
            [
              "",
              "X4"
            ],
            [
              "",
              "X40"
            ],
            [
              "",
              "X64"
            ],
            [
              "",
              "X72"
            ],
            [
              "",
              "pysbf2.sbftypes_core"
            ]
          ],
          "metrics": {
            "ast": {
              "max_depth": 17,
              "call_count": 0,
              "node_count": 19187,
              "max_array_len": 3
            },
            "file": {
              "size": 70929,
              "entropy": 3.8
            },
            "text": {
              "lines": 3001,
              "top_char": 34,
              "max_ws_run": 25,
              "digit_ratio": 0.13,
              "space_count": 32893,
              "char_entropy": 3.8,
              "unique_chars": 89,
              "top_char_null": 0,
              "string_density": 0.73,
              "top_char_ratio": 0.06,
              "avg_line_length": 21.64,
              "max_line_length": 82,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.01,
              "last_line_length": 1,
              "whitespace_ratio": 0.55,
              "identifier_density": 0.7,
              "line_length_stddev": 9.72,
              "encoded_string_ratio": 0.01,
              "normalized_string_count": 39.74,
              "repeated_char_sequences": 1020,
              "suspicious_comment_ratio": 0.03,
              "suspicious_identifier_ratio": 0.35,
              "normalized_unique_identifiers": 5.63
            },
            "binds": {
              "count": 18
            },
            "binary": {
              "peak_region_bytes": 2048,
              "peak_region_entropy": 4.95
            },
            "imports": {
              "count": 46,
              "third_party_count": 46,
              "third_party_ratio": 1
            },
            "strings": {
              "bytes": 14460,
              "count": 2177,
              "avg_length": 6.64,
              "max_length": 408,
              "avg_entropy": 2.28,
              "entropy_stddev": 0.78,
              "base64_candidates": 17,
              "high_entropy_count": 1
            },
            "comments": {
              "chars": 3650,
              "count": 183,
              "lines": 183,
              "high_entropy": 5,
              "to_code_ratio": 0.06
            },
            "identifiers": {
              "count": 2102,
              "unique": 65,
              "avg_length": 9.74,
              "max_length": 38,
              "min_length": 2,
              "avg_entropy": 1.98,
              "reuse_ratio": 0.03,
              "length_stddev": 11.82,
              "has_digit_ratio": 0.69,
              "sequential_names": 23,
              "high_entropy_count": 16,
              "high_entropy_ratio": 0.25,
              "all_lowercase_ratio": 0.02,
              "all_uppercase_ratio": 0.29,
              "numeric_suffix_count": 44
            }
          }
        },
        "id": 7,
        "mol": "H(Cm)",
        "path": "pysbf2-1.0.5-py3-none-any.whl!!pysbf2/sbftypes_blocks.py",
        "pid": 0,
        "risk": 1,
        "sha": "6fd42aa911426bec0376e312a3eadde8d1f676e017c1f04e9f194b564027d2ae",
        "size": 70929,
        "traits": [
          {
            "id": "micro-behaviors/communications/http/services/aws-ec2::ec2-user-data-script",
            "mbc": "C0002",
            "conf": 0.86,
            "crit": 3,
            "desc": "EC2 user data script",
            "spans": [
              [
                56659,
                8
              ]
            ]
          }
        ],
        "type": "python"
      },
      {
        "ctx": [
          {
            "b": "a%FirB7e:6D2NtouT[1{wId}E3joY#mJ+JFz//]cz!{Laz/PzixkzG}vqH0oay/tcB97\u0026dBAn#QwmoN*BA}?pB0a[ewft-2B8$=5wGUX$wO#Q7w[+*%B1N!blVM:DBy!#9z/cWLiuR48C{1\u003c@gbPyCnP5cUaAIEzA:@V\u003eazbUjz6iXlB75=)eM:\u003eMqE%DKA+fb#wGTG=x\u003eg=$B#g*agY",
            "ln": 0,
            "col": 1,
            "line": 1
          },
          {
            "b": "ax9b\u003eBz99gi+98ED2^RixMMoTB7GihvpTj?zxM/}atLSafBx\u003cSx\u003e7Z(B7ExPlq{n{gC7$gvrDT53l*Vr3joY#mQFXOqxOaBvJ]64gbJlXg+Z9@ar@0MbTrZ:a%FjflpJ8mwPI{3xjSi0wNPaXAV#XK3joj1qErr/nMe52jS(G!a%Fjevqf^]az2M",
            "ln": 229,
            "col": 26,
            "line": 10
          },
          {
            "b": "dK([$dK([$dK([$dK([$dK([$dK([$dK([$dK([$dK([PboP@Rmn(R$k#Hb]r7GC2q:J}@p/p7*pEv]Kaw+vboIW@xave$aqB%hPr7d{esX}K=3l{VydK([$dK([$dK([$dK([$dK([$dK([$dK([$dK([$dK([$dK([$dK([$dK([$dHFJ$auZ?",
            "ln": 1007,
            "col": 18,
            "line": 50
          },
          {
            "b": "q:J}@p/p7*pEv]Kavw}5miCq[q=t$LmiCe\u0026mnu/Nr7PIS3l{V\u0026vr(WcvpTB4w]zYjwNP7ZaA7\u003cmBzblbwGUX$wO#Q7BzkrcayPq4ay]4}x(mG)azCZoB7e:6D2NtouT^?\u0026v@3b)boOD=dK([$dK([$dK([$dK([$dK([$dK([$dK([$dK([$dK([",
            "ln": 3591,
            "col": 17,
            "line": 120
          },
          {
            "b": "BrSmyarR^HarR^Hb3m#KaAz4fvrujbwGU@gB7]-gz/cXazE:(kwO=o{x([RyCwhejaAz4mAaJK3aARJAvQTs?d03*Yed9HxarS9:3lQDlat+=ci65fg3lQDlarR^Har\u003ccXB7Fx-v@#Tfm}DQHa$K6zarR^HarR^Jmnu\u00269A+f5}Bzk]faAhmux([6c",
            "ln": 4173,
            "col": 23,
            "line": 133
          }
        ],
        "depth": 1,
        "facts": {
          "imp": [
            [
              "",
              "type"
            ],
            [
              "",
              "type"
            ],
            [
              "",
              "type"
            ],
            [
              "",
              "type"
            ],
            [
              "",
              "type"
            ],
            [
              "",
              "type"
            ],
            [
              "",
              "type"
            ],
            [
              "",
              "type"
            ],
            [
              "",
              "type"
            ]
          ],
          "tgt": [
            "type"
          ],
          "metrics": {
            "ast": {
              "op.sub": 1,
              "max_depth": 9,
              "call_count": 9,
              "node_count": 2815,
              "max_array_len": 2,
              "op_density.sub": 0
            },
            "file": {
              "size": 12208,
              "entropy": 5.24
            },
            "text": {
              "lines": 278,
              "top_char": 34,
              "max_ws_run": 2,
              "digit_ratio": 0.14,
              "space_count": 2116,
              "char_entropy": 5.24,
              "unique_chars": 82,
              "top_char_null": 0,
              "escape_density": 0.02,
              "string_density": 1.18,
              "top_char_ratio": 0.06,
              "ascii_art_lines": 4,
              "avg_line_length": 42.91,
              "max_line_length": 89,
              "non_ascii_ratio": 0,
              "empty_line_ratio": 0.04,
              "hex_escape_count": 2,
              "last_line_length": 1,
              "whitespace_ratio": 0.2,
              "identifier_density": 0.3,
              "line_length_stddev": 23.56,
              "encoded_string_ratio": 0.01,
              "normalized_string_count": 19.67,
              "repeated_char_sequences": 4,
              "suspicious_string_ratio": 0,
              "suspicious_identifier_ratio": 0.37,
              "normalized_unique_identifiers": 9.36
            },
            "binds": {
              "count": 75
            },
            "binary": {
              "peak_region_bytes": 10160,
              "peak_region_entropy": 5.31
            },
            "strings": {
              "sql": 1,
              "bytes": 6378,
              "count": 328,
              "avg_length": 19.45,
              "max_length": 291,
              "avg_entropy": 3.04,
              "entropy_stddev": 1.02,
              "base64_candidates": 4,
              "high_entropy_count": 1
            },
            "comments": {
              "chars": 1947,
              "count": 72,
              "lines": 72,
              "to_code_ratio": 0.35
            },
            "identifiers": {
              "count": 84,
              "unique": 76,
              "avg_length": 3.95,
              "max_length": 14,
              "min_length": 2,
              "avg_entropy": 1.66,
              "reuse_ratio": 0.9,
              "length_stddev": 2.73,
              "has_digit_ratio": 0.79,
              "sequential_names": 28,
              "all_lowercase_ratio": 0.01,
              "all_uppercase_ratio": 0.2,
              "numeric_suffix_count": 59
            }
          }
        },
        "id": 8,
        "mol": "O(As)",
        "path": "pysbf2-1.0.5-py3-none-any.whl!!pysbf2/sbftypes_core.py",
        "pid": 0,
        "risk": 1,
        "sha": "413d2d76c27abee492c9e16fd13784994bc362d72bf60cf6f15d5e67232ed13c",
        "size": 12208,
        "traits": [
          {
            "id": "objectives/anti-static/obfuscation/code-metrics/identifiers::py-sequential-identifiers",
            "atk": "T1027",
            "mbc": "B0032",
            "conf": 0.8,
            "crit": 3,
            "desc": "Excessive sequential identifiers",
            "spans": [
              [
                0,
                36
              ]
            ]
          }
        ],
        "type": "python"
      },
      {
        "id": 13,
        "mol": "Md(Re)",
        "sha": "e36d6c0db1219b6a4021e8eb04df291af09a7c2fa8d444daace7c88f93035a3a",
        "path": "pysbf2@1.0.5.registry.json",
        "risk": 1,
        "size": 793,
        "type": "registry",
        "depth": 1
      }
    ],
    "omitted_files": 1,
    "rev": "c7f7e",
    "v": "8"
  }
}