Package not found: Apache:Modules/apache2-mod_dnssd

File grant-0.2.9.obscpio of Package grant

07070100000000000081A4000000000000000000000001689645100000075E000000000000000000000000000000000000001800000000grant-0.2.9/.binny.yamltools:
  - name: grant
    version:
      want: current
    method: go-install
    with:
      module: .
      entrypoint: cmd/grant
      ldflags:
        - -X main.version={{ .Version }}
        - -X main.gitCommit={{ .Version }}
        - -X main.gitDescription={{ .Version }}
        # note: sprig functions are available: http://masterminds.github.io/sprig/
        - -X main.buildDate={{ now | date "2006-01-02T15:04:05Z07:00" }}

  - name: binny
    version:
      want: v0.6.2
    method: github-release
    with:
      repo: anchore/binny

  - name: gh
    version:
      want: v2.35.0
    method: github-release
    with:
      repo: cli/cli

  - name: quill
    version:
      want: v0.4.1
    method: github-release
    with:
      repo: anchore/quill

  - name: chronicle
    version:
      want: v0.8.0
    method: github-release
    with:
      repo: anchore/chronicle

  - name: gosimports
    version:
      want: v0.3.8
    method: github-release
    with:
      repo: rinchsan/gosimports

  - name: glow
    version:
      want: v1.5.1
    method: github-release
    with:
      repo: charmbracelet/glow

  # used for signing the checksums file at release
  - name: cosign
    version:
      want: v2.2.4
    method: github-release
    with:
      repo: sigstore/cosign

  - name: goreleaser
    version:
      want: v2.3.2
    method: github-release
    with:
      repo: goreleaser/goreleaser

  - name: golangci-lint
    version:
      want: v1.64.2
    method: github-release
    with:
      repo: golangci/golangci-lint

  - name: bouncer
    version:
      want: v0.4.0
    method: github-release
    with:
      repo: wagoodman/go-bouncer

  - name: task
    version:
      want: v3.30.1
    method: github-release
    with:
      repo: go-task/task

  - name: syft
    version:
      want: v1.2.0
    method: github-release
    with:
      repo: anchore/syft
07070100000001000081A4000000000000000000000001689645100000077C000000000000000000000000000000000000001A00000000grant-0.2.9/.bouncer.yamlpermit:
  - BSD.*
  - CC0.*
  - MIT.*
  - Apache.*
  - MPL.*
  - ISC
  - WTFPL

ignore-packages:
  # packageurl-go is released under the MIT license located in the root of the repo at /mit.LICENSE
  - github.com/anchore/packageurl-go

  # both of these dependencies are specified as Apache-2.0 in their respective GitHub READMEs
  - github.com/alibabacloud-go/cr-20160607/client
  - github.com/alibabacloud-go/tea-xml/service

  # crypto/internal/boring is released under the openSSL license as a part of the Golang Standard Libary
  - crypto/internal/boring

  # from: https://github.com/spdx/tools-golang/blob/main/LICENSE.code
  # The tools-golang source code is provided and may be used, at your option,
  # under either:
  # * Apache License, version 2.0 (Apache-2.0), OR
  # * GNU General Public License, version 2.0 or later (GPL-2.0-or-later).
  # (we choose Apache-2.0)
  - github.com/spdx/tools-golang

  # from: https://github.com/xi2/xz/blob/master/LICENSE
  # All these files have been put into the public domain.
  # You can do whatever you want with these files.
  - github.com/xi2/xz

  # from: https://gitlab.com/cznic/sqlite/-/blob/v1.15.4/LICENSE
  # This is a BSD-3-Clause license
  - modernc.org/libc
  - modernc.org/libc/errno
  - modernc.org/libc/fcntl
  - modernc.org/libc/fts
  - modernc.org/libc/grp
  - modernc.org/libc/langinfo
  - modernc.org/libc/limits
  - modernc.org/libc/netdb
  - modernc.org/libc/netinet/in
  - modernc.org/libc/poll
  - modernc.org/libc/pthread
  - modernc.org/libc/pwd
  - modernc.org/libc/signal
  - modernc.org/libc/stdio
  - modernc.org/libc/stdlib
  - modernc.org/libc/sys/socket
  - modernc.org/libc/sys/stat
  - modernc.org/libc/sys/types
  - modernc.org/libc/termios
  - modernc.org/libc/time
  - modernc.org/libc/unistd
  - modernc.org/libc/utime
  - modernc.org/libc/uuid/uuid
  - modernc.org/libc/wctype
  - modernc.org/mathutil
  - modernc.org/memory
07070100000002000081A4000000000000000000000001689645100000005C000000000000000000000000000000000000001C00000000grant-0.2.9/.chronicle.yamlenforce-v0: true # don't make breaking-change label bump major version before 1.0.
title: ""07070100000003000081A40000000000000000000000016896451000000B88000000000000000000000000000000000000001B00000000grant-0.2.9/.golangci.yamlissues:
  max-same-issues: 25
  uniq-by-line: false

  # TODO: enable this when we have coverage on docstring comments
#  # The list of ids of default excludes to include or disable.
#  include:
#    - EXC0002 # disable excluding of issues about comments from golint

linters:
  # inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint
  disable-all: true
  enable:
    - asciicheck
    - bodyclose
    - dogsled
    - dupl
    - errcheck
    - funlen
    - gocognit
    - goconst
    - gocritic
    - gocyclo
    - gofmt
    - goimports
    - goprintffuncname
    - gosec
    - gosimple
    - govet
    - ineffassign
    - misspell
    - nakedret
    - revive
    - staticcheck
    - stylecheck
    - typecheck
    - unconvert
    - unparam
    - unused
    - whitespace

linters-settings:
  funlen:
    # Checks the number of lines in a function.
    # If lower than 0, disable the check.
    # Default: 60
    lines: 70
    # Checks the number of statements in a function.
    # If lower than 0, disable the check.
    # Default: 40
    statements: 50

run:
  timeout: 10m

# do not enable...
#    - deadcode          # The owner seems to have abandoned the linter. Replaced by "unused".
#    - depguard          # We don't have a configuration for this yet
#    - goprintffuncname  # does not catch all cases and there are exceptions
#    - nakedret          # does not catch all cases and should not fail a build
#    - gochecknoglobals
#    - gochecknoinits    # this is too aggressive
#    - rowserrcheck disabled per generics https://github.com/golangci/golangci-lint/issues/2649
#    - godot
#    - godox
#    - goerr113
#    - goimports   # we're using gosimports now instead to account for extra whitespaces (see https://github.com/golang/go/issues/20818)
#    - golint      # deprecated
#    - gomnd       # this is too aggressive
#    - interfacer  # this is a good idea, but is no longer supported and is prone to false positives
#    - lll         # without a way to specify per-line exception cases, this is not usable
#    - maligned    # this is an excellent linter, but tricky to optimize and we are not sensitive to memory layout optimizations
#    - nestif
#    - nolintlint   # as of go1.19 this conflicts with the behavior of gofmt, which is a deal-breaker (lint-fix will still fail when running lint)
#    - prealloc     # following this rule isn't consistently a good idea, as it sometimes forces unnecessary allocations that result in less idiomatic code
#    - rowserrcheck # not in a repo with sql, so this is not useful
#    - scopelint    # deprecated
#    - structcheck  # The owner seems to have abandoned the linter. Replaced by "unused".
#    - testpackage
#    - varcheck     # The owner seems to have abandoned the linter. Replaced by "unused".
#    - wsl          # this doens't have an auto-fixer yet and is pretty noisy (https://github.com/bombsimon/wsl/issues/90)
07070100000004000081A40000000000000000000000016896451000000990000000000000000000000000000000000000001D00000000grant-0.2.9/.goreleaser.yaml# yaml-language-server: $schema=https://goreleaser.com/static/schema.json
# vim: set ts=2 sw=2 tw=0 fo=jcroql
version: 2

release:
  prerelease: auto
  draft: false

env:
  # required to support multi architecture docker builds
  - CGO_ENABLED=0

builds:
  - id: linux-build
    dir: ./cmd/grant
    binary: grant
    goos:
      - linux
    goarch:
      - amd64
      - arm64
    # set the modified timestamp on the output binary to the git timestamp to ensure a reproducible build
    mod_timestamp: &build-timestamp '{{ .CommitTimestamp }}'
    ldflags: &build-ldflags |
      -w
      -s
      -extldflags '-static'
      -X main.version={{.Version}}
      -X main.gitCommit={{.Commit}}
      -X main.buildDate={{.Date}}
      -X main.gitDescription={{.Summary}}

  - id: darwin-build
    dir: ./cmd/grant
    binary: grant
    goos:
      - darwin
    goarch:
      - amd64
      - arm64
    mod_timestamp: *build-timestamp
    ldflags: *build-ldflags
    hooks:
      post:
        - cmd: .tool/quill sign-and-notarize "{{ .Path }}" --dry-run={{ .IsSnapshot }} --ad-hoc={{ .IsSnapshot }} -vv
          env:
            - QUILL_LOG_FILE=/tmp/quill-{{ .Target }}.log

archives:
  - id: linux-archives
    builds:
      - linux-build
  - id: darwin-archives
    builds:
      - darwin-build

nfpms:
  - license: "Apache 2.0"
    maintainer: "Anchore, Inc"
    homepage: &website "https://github.com/anchore/grant"
    description: &description "A tool consumes SBOMS and details license information"
    formats:
      - rpm
      - deb

brews:
  - repository:
      owner: anchore
      name: homebrew-grant
      token: "{{.Env.GITHUB_BREW_TOKEN}}"
    ids:
      - darwin-archives
      - linux-archives
    homepage: *website
    description: *description
    license: "Apache License 2.0"

sboms:
  - artifacts: archive
    # this is relative to the snapshot/dist directory, not the root of the repo
    cmd: ../.tool/syft
    documents:
      - "{{ .Binary }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}.sbom"
    args:
      - "scan"
      - "$artifact"
      - "--output"
      - "json=$document"

signs:
  - cmd: .tool/cosign
    signature: "${artifact}.sig"
    certificate: "${artifact}.pem"
    args:
      - "sign-blob"
      - "--oidc-issuer=https://token.actions.githubusercontent.com"
      - "--output-certificate=${certificate}"
      - "--output-signature=${signature}"
      - "${artifact}"
      - "--yes"
    artifacts: checksum
07070100000005000081A40000000000000000000000016896451000000346000000000000000000000000000000000000001800000000grant-0.2.9/.grant.yaml#.grant.yaml
show-packages: false
ignore-orphan-packages: false
check-non-spdx: true
format: table
rules: 
  - pattern: "*gpl*"
    name: "gpl-denied"
    mode: "deny"
    reason: "GPL licenses are not allowed per xxx-xx company policy"
    exceptions:
      - "alpine-baselayout" # We don't link against this package so we don't care about its license
      - "alpine-baselayout-data"
      - "base-files"
      - "netbase"
      - "libssl3"
  - pattern: "*BSD*"
    name: "bsd-denied"
    mode: "deny"
    reason: "BSD licenses are not allowed per xxx-xx company policy"
    exceptions:
      - "1apt"
      - "1bsdutils"
      - "1dash"
      - "1e2fsprogs"
      - "1findutils"
      - "1gpgv"
      - "1init-system-helpers"
      - "1libapt-pkg6.0"
      - "1libblkid1"
      - "1libcap2"
      - "1libcom-err2"
      - "1libdb5.3"

07070100000006000081A40000000000000000000000016896451000001489000000000000000000000000000000000000001F00000000grant-0.2.9/CODE_OF_CONDUCT.md# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
  overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
  advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
  address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[opensource@anchore.com](mailto:opensource@anchore.com).
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior,  harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
07070100000007000081A4000000000000000000000001689645100000057D000000000000000000000000000000000000001C00000000grant-0.2.9/CONTRIBUTING.md## Contributing

We welcome contributions to the project!

### Getting Started
After pulling the repository, you can get started by running the following command to install the necessary dependencies and build `grant` from source
```bash
make
```

After building the project, you can run the following command to run the newly built binary
```bash
./snapshot/<os>-build_<>os_<arch>/grant
```

Keep in mind the build artifacts are placed in the `snapshot` directory and built for each supported platform so choose the appropriate binary for your platform.

If you just want to run the project with any local changes you have made, you can run the following command:
```bash
go run cmd/grant/main.go
```

### Testing
You can run the tests for the project by running the following command:
```bash
make test
```

### Linting
You can run the linter for the project by running the following command:
```bash
make static-analysis
```

### Making a PR
Just fork the repository, make your changes on a branch, and submit a PR. We will review your changes and merge them if they are good to go.

When making a PR, please make sure to include a description of the changes you have made and the reasoning behind them. 
If you are adding a new feature, please include tests for the new feature. If you are fixing a bug, please include a test that reproduces the bug and ensure that the test passes after your changes.07070100000008000081A40000000000000000000000016896451000002C5D000000000000000000000000000000000000001400000000grant-0.2.9/LICENSE                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
07070100000009000081A40000000000000000000000016896451000000549000000000000000000000000000000000000001500000000grant-0.2.9/MakefileOWNER = anchore
PROJECT = grant

TOOL_DIR = .tool
BINNY = $(TOOL_DIR)/binny
TASK = $(TOOL_DIR)/task

.DEFAULT_GOAL := default

## Bootstrapping targets #################################
# note: we need to assume that binny and task have not already been installed
$(BINNY):
	@mkdir -p $(TOOL_DIR)
	@curl -sSfL https://get.anchore.io/binny | sh -s -- -b $(TOOL_DIR)

# note: we need to assume that binny and task have not already been installed
.PHONY: task
$(TASK) task: $(BINNY)
	@$(BINNY) install task -q

.PHONY: ci-bootstrap-go
ci-bootstrap-go:
	go mod download

.PHONY: ci-bootstrap-tools
ci-bootstrap-tools: $(BINNY)
	$(BINNY) install -vvv


# this is a bootstrapping catch-all, where if the target doesn't exist, we'll ensure the tools are installed and then try again
%:
	make $(TASK)
	$(TASK) $@

## Shim targets #################################

.PHONY: default
default: $(TASK)
	@# run the default task in the taskfile
	@$(TASK)

# for those of us that can't seem to kick the habit of typing `make ...` lets wrap the superior `task` tool
TASKS := $(shell bash -c "test -f $(TASK) && $(TASK) -l | grep '^\* ' | cut -d' ' -f2 | tr -d ':' | tr '\n' ' '" ) $(shell bash -c "test -f $(TASK) && $(TASK) -l | grep 'aliases:' | cut -d ':' -f 3 | tr '\n' ' ' | tr -d ','")

.PHONY: $(TASKS)
$(TASKS): $(TASK)
	@$(TASK) $@

help: $(TASK)
	@$(TASK) -l
0707010000000A000081A40000000000000000000000016896451000000F9E000000000000000000000000000000000000001600000000grant-0.2.9/README.md# Grant

View licenses for container images, SBOM documents, filesystems, and apply rules that help you build a license
compliance report.

![demo](https://github.com/anchore/grant/assets/32073428/981be7c0-582f-4966-a1e9-31e770aba9eb)

### Supply an image
```bash
$ grant check redis:latest
```

#### Supply an SBOM document
```bash
$ grant check alpine.spdx.json
```

### Supply multiple sources including stdin and a mix of image and sbom
```bash
$ syft -o spdx-json alpine:latest | grant check node:latest
```


## Installation
```bash
curl -sSfL https://get.anchore.io/grant | sudo sh -s -- -b /usr/local/bin
```

... or, you can specify a release version and destination directory for the installation:

```
curl -sSfL https://get.anchore.io/grant | sudo sh -s -- -b <DESTINATION_DIR> <RELEASE_VERSION>
```

## Usage

Grant can be used with any container image, sbom document, or directory to scan for licenses and check those classifierResults
against a set of rules provided by the user.

Rules take the form of a pattern to match the license against, a name to identify the rule, a mode to either allow,
deny, or ignore the license,
a reason for the rule, and a list of packages that are exceptions to the rule.
```
pattern: "*gpl*"
name: "deny-gpl"
mode: "deny"
reason: "GPL licenses are not allowed"
exceptions:
  - "alpine-base-layout" # We don't link against this package so we don't care about its license
```

Matching Rules:
- Denying licenses take precedence over allowing licenses
- License patterns are matched on a case-insensitive basis.
- If a license is has rules for both modes it is denied

Supplied patterns follow a standard globbing syntax:
```
pattern:
{ term }

term:
`*`         matches any sequence of non-separator characters
`**`        matches any sequence of characters
`?`         matches any single non-separator character
`[` [ `!` ] { character-range } `]`
character class (must be non-empty)
`{` pattern-list `}`
pattern alternatives
c           matches character c (c != `*`, `**`, `?`, `\`, `[`, `{`, `}`)
`\` c       matches character c

character-range:
c           matches character c (c != `\\`, `-`, `]`)
`\` c       matches character c
lo `-` hi   matches character c for lo <= c <= hi

pattern-list:
pattern { `,` pattern }
comma-separated (without spaces) patterns
```

By default grant is configured to deny all licenses out of the box.

Grant can be used to deny specific licenses while allowing all others.

It can also be used to allow specific licenses, denying all others.

## Output
#### Table
![table-output](https://github.com/anchore/grant/assets/32073428/59a516de-3acd-4f4a-8861-4e90eae09866)

#### JSON: TODO
![json-output](https://github.com/anchore/grant/assets/32073428/c2d89645-e323-4f99-a179-77e5a750ee6a)

## Configuration

### Example: Deny GPL

```yaml
#.grant.yaml
config: ".grant.yaml"
format: table # table, json
show-packages: false # show the packages which contain the licenses --show-packages
non-spdx: false # list only licenses that could not be matched to an SPDX identifier --non-spdx
osi-approved: false # highlight licenses that are not OSI approved --osi-approved
rules: 
    - pattern: "*gpl*"
      name: "deny-gpl"
      mode: "deny"
      reason: "GPL licenses are not allowed per xxx-xx company policy"
      exceptions:
        - "alpine-base-layout" # We don't link against this package so we don't care about its license
```

### Example: Allow Lists

In this example, all licenses are denied except BSD and MIT:

```yaml
#.grant.yaml
rules:
  - pattern: "BSD-*"
    name: "bsd-allow"
    mode: "allow"
    reason: "BSD is compatible with our project"
    exceptions:
      # Packages to disallow even if they are licensed under BSD.
      - my-package
  - pattern: "MIT"
    name: "mit-allow"
    mode: "allow"
    reason: "MIT is compatible with our project"
  # Reject the rest.
  - pattern: "*"
    name: "default-deny-all"
    mode: "deny"
    reason: "All licenses need to be explicitly allowed"
```
0707010000000B000081A4000000000000000000000001689645100000076D000000000000000000000000000000000000001700000000grant-0.2.9/RELEASE.md# Release

A release of grant comprises:
- a new semver git tag from the current tip of the main branch
- a new [github release](https://github.com/anchore/grant/releases) with a changelog and archived binary assets
- [`anchore/homebrew-grant`](https://github.com/anchore/homebrew-grant) tap updated to point to assets in the latest github release

Ideally releasing should be done often with small increments when possible. Unless a
breaking change is blocking the release, or no fixes/features have been merged, a good
target release cadence is between every 1 or 2 weeks.


## Creating a release

This release process itself should be as automated as possible, and has only a few steps:

1. **Trigger a new release with `make release`**. At this point you'll see a preview
   changelog in the terminal. If you're happy with the changelog, press `y` to continue, otherwise
   you can abort and adjust the labels on the PRs and issues to be included in the release and
   re-run the release trigger command.

1. A release admin must approve the release on the GitHub Actions [release pipeline](https://github.com/anchore/grant/actions/workflows/release.yaml) run page.
   Once approved, the release pipeline will generate all assets and publish a GitHub Release.


## Retracting a release

If a release is found to be problematic, it can be retracted with the following steps:

- Deleting the GitHub Release
- Revert the brew formula in [`anchore/homebrew-grant`](https://github.com/anchore/homebrew-grant) to point to the previous release
- Add a new `retract` entry in the go.mod for the versioned release

**Note**: do not delete release tags from the git repository since there may already be references to the release
in the go proxy, which will cause confusion when trying to reuse the tag later (the H1 hash will not match and there
will be a warning when users try to pull the new release).

0707010000000C000081A4000000000000000000000001689645100000020F000000000000000000000000000000000000001800000000grant-0.2.9/SECURITY.md# Security Policy

## Supported Versions

Currently Grant is pre v1.0.0. Any security fixes reported by github or other scanning tools that are merged will result 
in a patch version of the program being released to mitigate the vulnerability. Users are encouraged to always be updating 
to the latest version to consume these rolling fixes. 

| Version | Supported          |
| ------- | ------------------ |
| 0.x.x   | :white_check_mark: |

## Reporting a Vulnerability

[Anchore Security Team](mailto:security@anchore.com)
0707010000000D000081A4000000000000000000000001689645100000138B000000000000000000000000000000000000001A00000000grant-0.2.9/Taskfile.yamlversion: "3"
vars:
  TOOL_DIR: .tool

  OWNER: anchore
  PROJECT: grant

  TMP_DIR: .tmp
  SNAPSHOT_DIR: snapshot
  CHANGELOG: CHANGELOG.md
  NEXT_VERSION: VERSION

tasks:
  default:
    # desc: Run all validation tasks
    aliases:
      - pr-validations
      - validations
    cmds:
      - task: static-analysis
      - task: test
      - task: build

  static-analysis:
    desc: Run all static analysis tasks
    cmds:
      - task: check-go-mod-tidy
      - task: lint

  test:
    desc: Run all levels of test
    cmds:
      - task: unit

  ## Bootstrap tasks #################################
  binny:
    internal: true
    desc: Get the binny tool
    generates:
      - "{{ .TOOL_DIR }}/binny"
    status:
      - "test -f {{ .TOOL_DIR }}/binny"
    # we just need a release of binny, doesn't matter which one (binny will update itself, this is just a bootstrap step)
    cmd: "curl -sSfL https://get.anchore.io/binny | sh -s -- -b {{ .TOOL_DIR }}"
    silent: true

  tools:
    desc: Install all tools needed for CI and local development
    deps: [binny]
    generates:
      - "{{ .TOOL_DIR }}/binny"
      - "{{ .TOOL_DIR }}/grant"
      - "{{ .TOOL_DIR }}/task"
      - "{{ .TOOL_DIR }}/gosimports"
      - "{{ .TOOL_DIR }}/golangci-lint"
      - "{{ .TOOL_DIR }}/chronicle"
      - "{{ .TOOL_DIR }}/glow"
      - "{{ .TOOL_DIR }}/goreleaser"
      - "{{ .TOOL_DIR }}/bouncer"
    status:
      - "{{ .TOOL_DIR }}/binny check -v"
    cmd: "{{ .TOOL_DIR }}/binny install -v"
    silent: true


  ## Static analysis tasks #################################

  format:
    desc: Auto-format all source code
    deps: [tools]
    cmds:
      - gofmt -w -s .
      - "{{ .TOOL_DIR }}/gosimports -local github.com/anchore -w ."
      - go mod tidy

  lint-fix:
    desc: Auto-format all source code + run golangci lint fixers
    deps: [tools]
    cmds:
      - task: format
      - "{{ .TOOL_DIR }}/golangci-lint run --tests=false --fix"

  lint:
    desc: Run gofmt + golangci lint checks
    vars:
      BAD_FMT_FILES:
        sh: gofmt -l -s .
      BAD_FILE_NAMES:
        sh: "find . | grep -e ':' || true"
    deps: [tools]
    cmds:
      # ensure there are no go fmt differences
      - cmd: 'test -z "{{ .BAD_FMT_FILES }}" || (echo "files with gofmt issues: [{{ .BAD_FMT_FILES }}]"; exit 1)'
        silent: true
      # ensure there are no files with ":" in it (a known back case in the go ecosystem)
      - cmd: 'test -z "{{ .BAD_FILE_NAMES }}" || (echo "files with bad names: [{{ .BAD_FILE_NAMES }}]"; exit 1)'
        silent: true
      # run linting
      - "{{ .TOOL_DIR }}/golangci-lint run --tests=false"


  check-go-mod-tidy:
    # desc: Ensure go.mod and go.sum are up to date
    cmds:
      - .github/scripts/go-mod-tidy-check.sh && echo "go.mod and go.sum are tidy!"

  ## Testing tasks #################################

  unit:
    desc: Run all unit tests
    vars:
      TEST_PKGS:
          sh: "go list ./... | grep -v {{ .OWNER }}/{{ .PROJECT }}/test | tr '\n' ' '"

      # unit test coverage threshold (in % coverage)
      COVERAGE_THRESHOLD: 8
    cmds:
      - cmd: "mkdir -p {{ .TMP_DIR }}"
        silent: true
      - "go test -coverprofile {{ .TMP_DIR }}/unit-coverage-details.txt {{ .TEST_PKGS }}"
      - cmd: ".github/scripts/coverage.py {{ .COVERAGE_THRESHOLD }} {{ .TMP_DIR }}/unit-coverage-details.txt"
        silent: true

  ## Build-related targets #################################

  changelog:
    desc: Generate a changelog
    deps: [tools]
    generates:
      - "{{ .CHANGELOG }}"
      - "{{ .NEXT_VERSION }}"
    cmds:
      - "{{ .TOOL_DIR }}/chronicle -vv -n --version-file {{ .NEXT_VERSION }} > {{ .CHANGELOG }}"
      - "{{ .TOOL_DIR }}/glow {{ .CHANGELOG }}"

  snapshot:
    desc: Create a snapshot release
    aliases:
      - build
    deps: [tools]
    cmds:
      - cmd: "mkdir -p {{ .TMP_DIR }}"
        silent: true
      - cmd: |
          cat .goreleaser.yaml > {{ .TMP_DIR }}/goreleaser.yaml
          echo "dist: {{ .SNAPSHOT_DIR }}" >> {{ .TMP_DIR }}/goreleaser.yaml
      - cmd: "{{ .TOOL_DIR }}/goreleaser release --clean --skip=publish --skip=sign --snapshot --config {{ .TMP_DIR }}/goreleaser.yaml"


  ## Release targets #################################

  release:
    desc: Create a release
    interactive: true
    deps: [tools]
    cmds:
      - cmd: .github/scripts/trigger-release.sh
        silent: true

  ## CI-only targets #################################

  ci-check:
    # desc: "[CI only] Are you in CI?"
    cmds:
      - cmd: .github/scripts/ci-check.sh
        silent: true

  ci-validate:
    # desc: "[CI only] Run all CI validations"
    cmds:
      - task: ci-check
      - task: default

  ci-release:
    # desc: "[CI only] Create a release"
    deps: [tools]
    cmds:
      - task: ci-check
      - "{{ .TOOL_DIR }}/chronicle -vvv > CHANGELOG.md"
      - cmd: "cat CHANGELOG.md"
        silent: true
      - "{{ .TOOL_DIR }}/goreleaser release --clean --release-notes CHANGELOG.md"

0707010000000E000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001000000000grant-0.2.9/cmd0707010000000F000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001600000000grant-0.2.9/cmd/grant07070100000010000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001A00000000grant-0.2.9/cmd/grant/cli07070100000011000081A40000000000000000000000016896451000000810000000000000000000000000000000000000002100000000grant-0.2.9/cmd/grant/cli/cli.gopackage cli

import (
	"os"

	"github.com/anchore/clio"
	"github.com/anchore/go-logger"
	"github.com/anchore/grant/cmd/grant/cli/command"
	"github.com/anchore/grant/cmd/grant/cli/internal/ui"
	handler "github.com/anchore/grant/cmd/grant/cli/tui"
	"github.com/anchore/grant/internal/bus"
	"github.com/anchore/grant/internal/log"
	"github.com/anchore/grant/internal/redact"
)

// New constructs the `grant` command. It is also responsible for organizing flag
// usage and injecting the application config for each command.
// `RunE` is the earliest that the complete application configuration can be loaded.
func New(id clio.Identification) clio.Application {
	clioCfg := clio.NewSetupConfig(id).
		WithGlobalConfigFlag().   // add persistent -c <path> for reading an application config from
		WithGlobalLoggingFlags(). // add persistent -v and -q flags tied to the logging config
		WithConfigInRootHelp().   // --help on the root command renders the full application config in the help text
		WithUIConstructor(
			// select a UI based on the logging configuration and state of stdin (if stdin is a tty)
			func(cfg clio.Config) (*clio.UICollection, error) {
				noUI := ui.None(cfg.Log.Quiet)
				if !cfg.Log.AllowUI(os.Stdin) || cfg.Log.Quiet {
					return clio.NewUICollection(noUI), nil
				}

				return clio.NewUICollection(
					ui.New(cfg.Log.Quiet,
						handler.New(handler.DefaultHandlerConfig()),
					),
					noUI,
				), nil
			},
		).
		WithLoggingConfig(clio.LoggingConfig{
			Level: logger.ErrorLevel,
		}).
		WithInitializers(
			func(state *clio.State) error {
				// clio is setting up and providing the redact store, and logger to the application. Once loaded,
				// we can hoist them into the internal packages for global use.
				bus.Set(state.Bus)
				redact.Set(state.RedactStore)
				log.Set(state.Logger)

				return nil
			},
		)

	app := clio.New(*clioCfg)

	root := command.Root(app)

	root.AddCommand(
		command.Check(app),
		command.List(app),
		clio.VersionCommand(id),
	)

	// root.AddCommand(command.Inspect(app))

	return app
}
07070100000012000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000002200000000grant-0.2.9/cmd/grant/cli/command07070100000013000081A40000000000000000000000016896451000000F6C000000000000000000000000000000000000002B00000000grant-0.2.9/cmd/grant/cli/command/check.gopackage command

import (
	"fmt"
	"slices"
	"strings"

	"github.com/gobwas/glob"
	"github.com/pkg/errors"
	"github.com/spf13/cobra"

	"github.com/anchore/clio"
	"github.com/anchore/grant/cmd/grant/cli/internal"
	"github.com/anchore/grant/cmd/grant/cli/internal/check"
	"github.com/anchore/grant/cmd/grant/cli/option"
	"github.com/anchore/grant/event"
	"github.com/anchore/grant/grant"
	"github.com/anchore/grant/internal/bus"
	"github.com/anchore/grant/internal/input"
)

var ErrPolicyFailure = errors.New("check failed")

type CheckConfig struct {
	Config       string `json:"config" yaml:"config" mapstructure:"config"`
	option.Check `json:"" yaml:",inline" mapstructure:",squash"`
}

func (cfg *CheckConfig) RulesFromConfig() (rules grant.Rules, err error) {
	rules = make(grant.Rules, 0)
	for _, rule := range cfg.Rules {
		pattern := strings.ToLower(rule.Pattern) // all patterns are case insensitive
		patternGlob, err := glob.Compile(pattern)
		if err != nil {
			return rules, err
		}
		exceptions := make([]glob.Glob, 0)
		for _, exception := range rule.Exceptions {
			exception = strings.ToLower(exception)
			exceptionGlob, err := glob.Compile(exception)
			if err != nil {
				return rules, err
			}
			exceptions = append(exceptions, exceptionGlob)
		}
		rules = append(rules, grant.Rule{
			Name:               rule.Name,
			Glob:               patternGlob,
			OriginalPattern:    rule.Pattern,
			Exceptions:         exceptions,
			OriginalExceptions: rule.Exceptions,
			Mode:               grant.RuleMode(rule.Mode),
			Severity:           grant.RuleSeverity(rule.Severity),
			Reason:             rule.Reason,
		})
	}
	return rules, nil
}

func Check(app clio.Application) *cobra.Command {
	cfg := &CheckConfig{
		Check: option.DefaultCheck(),
	}

	// userInputs are the oci images, sboms, or directories/files to check
	var userInputs []string
	return app.SetupCommand(&cobra.Command{
		Use:   "check",
		Short: "Verify licenses in the SBOM conform to the configured policy",
		Args:  cobra.ArbitraryArgs,
		PreRunE: func(_ *cobra.Command, args []string) error {
			userInputs = args
			return nil
		},
		RunE: func(_ *cobra.Command, _ []string) error {
			return runCheck(cfg, userInputs)
		},
	}, cfg)
}

func runCheck(cfg *CheckConfig, userInput []string) (errs error) {
	// check if user provided source by stdin
	// note: cat sbom.json | grant check spdx.json - is supported
	// it will generate results for both stdin and spdx.json
	isStdin, _ := input.IsStdinPipeOrRedirect()
	if isStdin && !slices.Contains(userInput, "-") {
		userInput = append(userInput, "-")
	}

	rules, err := cfg.RulesFromConfig()
	if err != nil {
		return errors.Wrap(err, fmt.Sprintf("could not check licenses; could not build rules from config: %s", cfg.Config))
	}

	monitor := bus.PublishTask(
		event.Title{
			Default:      "Check licenses",
			WhileRunning: "Checking licenses",
			OnSuccess:    "Checked licenses",
		},
		"",
		len(userInput),
	)

	defer func() {
		if errs != nil {
			monitor.SetError(errs)
		} else {
			monitor.AtomicStage.Set(strings.Join(userInput, ", "))
			monitor.SetCompleted()
		}
	}()

	policy, err := grant.NewPolicy(cfg.NonSPDX, rules...)
	if err != nil {
		return errors.Wrap(err, fmt.Sprintf("could not check licenses; could not build policy from config: %s", cfg.Config))
	}

	reportConfig := check.ReportConfig{
		Policy: policy,
		Options: internal.ReportOptions{
			Format:       internal.Format(cfg.Output),
			ShowPackages: cfg.ShowPackages,
			CheckNonSPDX: cfg.NonSPDX,
			OsiApproved:  cfg.OsiApproved,
		},
		Monitor: monitor,
	}
	rep, err := check.NewReport(reportConfig, userInput...)
	if err != nil {
		return errors.Wrap(err, fmt.Sprintf("unable to create report for inputs %s", userInput))
	}

	err = rep.Render()
	if err != nil {
		return errors.Wrap(err, fmt.Sprintf("unable to render report for inputs %s", userInput))
	}
	if rep.HasFailures() {
		return ErrPolicyFailure
	}
	return nil
}
07070100000014000081A40000000000000000000000016896451000000010000000000000000000000000000000000000002D00000000grant-0.2.9/cmd/grant/cli/command/inspect.gopackage command
07070100000015000081A4000000000000000000000001689645100000086B000000000000000000000000000000000000002A00000000grant-0.2.9/cmd/grant/cli/command/list.gopackage command

import (
	"slices"
	"strings"

	"github.com/spf13/cobra"

	"github.com/anchore/clio"
	"github.com/anchore/grant/cmd/grant/cli/internal"
	"github.com/anchore/grant/cmd/grant/cli/internal/list"
	"github.com/anchore/grant/cmd/grant/cli/option"
	"github.com/anchore/grant/event"
	"github.com/anchore/grant/internal/bus"
	"github.com/anchore/grant/internal/input"
)

type ListConfig struct {
	Config      string `json:"config" yaml:"config" mapstructure:"config"`
	option.List `json:"" yaml:",inline" mapstructure:",squash"`
}

func List(app clio.Application) *cobra.Command {
	cfg := &ListConfig{
		List: option.DefaultList(),
	}

	// userInputs are the oci images, sboms, or directories/files to check
	var userInputs []string
	return app.SetupCommand(&cobra.Command{
		Use:   "list",
		Short: "List the licenses detected in the given OCI image, sbom, or directory/file",
		Args:  cobra.ArbitraryArgs,
		PreRunE: func(_ *cobra.Command, args []string) error {
			userInputs = args
			return nil
		},
		RunE: func(_ *cobra.Command, _ []string) error {
			return runList(cfg, userInputs)
		},
	}, cfg)
}

func runList(cfg *ListConfig, userInput []string) (errs error) {
	// check if user provided source by stdin
	// note: cat sbom.json | grant check spdx.json - is supported
	// it will generate results for both stdin and spdx.json
	isStdin, _ := input.IsStdinPipeOrRedirect()
	if isStdin && !slices.Contains(userInput, "-") {
		userInput = append(userInput, "-")
	}

	monitor := bus.PublishTask(
		event.Title{
			Default:      "List licenses",
			WhileRunning: "Looking up licenses",
			OnSuccess:    "Found licenses",
		},
		"",
		len(userInput),
	)

	defer func() {
		if errs != nil {
			monitor.SetError(errs)
		} else {
			monitor.AtomicStage.Set(strings.Join(userInput, ", "))
			monitor.SetCompleted()
		}
	}()

	reportConfig := list.ReportConfig{
		Options: internal.ReportOptions{
			Format:       internal.Format(cfg.Output),
			ShowPackages: cfg.ShowPackages,
			CheckNonSPDX: cfg.NonSPDX,
		},
		Monitor: monitor,
	}
	rep, err := list.NewReport(reportConfig, userInput...)
	if err != nil {
		return err
	}
	return rep.Render()
}
07070100000016000081A400000000000000000000000168964510000000B5000000000000000000000000000000000000002A00000000grant-0.2.9/cmd/grant/cli/command/root.gopackage command

import (
	"github.com/spf13/cobra"

	"github.com/anchore/clio"
)

func Root(app clio.Application) *cobra.Command {
	return app.SetupRootCommand(&cobra.Command{})
}
07070100000017000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000002300000000grant-0.2.9/cmd/grant/cli/internal07070100000018000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000002900000000grant-0.2.9/cmd/grant/cli/internal/check07070100000019000081A40000000000000000000000016896451000001D24000000000000000000000000000000000000003300000000grant-0.2.9/cmd/grant/cli/internal/check/report.gopackage check

import (
	"encoding/json"
	"errors"
	"fmt"
	"strings"
	"time"

	"github.com/gookit/color"
	list "github.com/jedib0t/go-pretty/v6/list"

	"github.com/anchore/grant/cmd/grant/cli/internal"
	"github.com/anchore/grant/event"
	"github.com/anchore/grant/grant"
	"github.com/anchore/grant/grant/evalutation"
	"github.com/anchore/grant/internal/bus"
)

// Report presents the results of a grant check command `grant alpine:latest ./foo`
// The above command will have two results.
// The first result is easy. Generate an SBOM for alpine:latest and run the policy against it.
// The second result is a little more complicated. Visit each leaf of ./foo and check for licenses, sbom, or archives.
// Results are composed of a case its evaluations. The case is the total of SBOM/Licenses generated from the user request.
// The evaluations are the individual assessments of the policy against the packages/licenses in the case.
type Report struct {
	ReportID  string
	Results   evalutation.Results
	Config    ReportConfig
	Timestamp string
	Monitor   *event.ManualStagedProgress
	errors    []error
}

type ReportConfig struct {
	Policy  grant.Policy
	Options internal.ReportOptions
	Monitor *event.ManualStagedProgress
}

// NewReport will generate a new report for the given format for the check command
// The supplied policy is applied to all user requests.
// If no policy is provided, the default policy will be used
// If no requests are provided, an empty report will be generated
// If a request is provided, but the sbom cannot be generated, the source will be ignored and an error will be returned
// Where do we render packages that had no licenses?
func NewReport(rc ReportConfig, userRequests ...string) (*Report, error) {
	if rc.Policy.IsEmpty() {
		rc.Policy = grant.DefaultPolicy()
	}

	rc.Options.Format = internal.ValidateFormat(rc.Options.Format)
	cases := grant.NewCases(userRequests...)
	ec := evalutation.EvaluationConfig{
		Policy:       rc.Policy,
		CheckNonSPDX: rc.Options.CheckNonSPDX,
		OsiApproved:  rc.Options.OsiApproved,
	}

	results := evalutation.NewResults(ec, cases...)

	return &Report{
		Results:   results,
		Config:    rc,
		Timestamp: time.Now().Format(time.RFC3339),
		Monitor:   rc.Monitor,
	}, nil
}

// Render will call Render on each result in the report and return the report
func (r *Report) Render() error {
	switch r.Config.Options.Format {
	case internal.Table:
		return r.renderCheckTree()
	case internal.JSON:
		return r.renderJSON()
	default:
		r.errors = append(r.errors, fmt.Errorf("invalid format: %s; valid formats are: %s", r.Config.Options.Format, internal.ValidFormats))
		return errors.Join(r.errors...)
	}
}

func (r *Report) HasFailures() bool {
	return r.Results.IsFailed()
}

type Response struct {
	ReportID  string       `json:"report_id" yaml:"report_id"`
	Timestamp string       `json:"timestamp" yaml:"timestamp"`
	Inputs    []string     `json:"inputs" yaml:"inputs"`
	Results   []Evaluation `json:"results" yaml:"results"`
}

type Evaluation struct {
	Input   string           `json:"input" yaml:"input"`
	License internal.License `json:"license" yaml:"license"`
	Package internal.Package `json:"package" yaml:"package"`
	Passed  bool             `json:"passed" yaml:"passed"`
	Reasons []string         `json:"reasons" yaml:"reasons"`
}

func NewEvaluation(input string, le evalutation.LicenseEvaluation) Evaluation {
	reasons := make([]string, 0)
	for _, r := range le.Reason {
		if r.RuleName == "" {
			reasons = append(reasons, r.Detail)
			continue
		}
		details := fmt.Sprintf("%s: %s", r.RuleName, r.Detail)
		reasons = append(reasons, details)
	}

	license := internal.NewLicense(le.License)
	var pkg internal.Package
	if le.Package != nil {
		pkg = internal.NewPackage(le.Package)
	}

	re := Evaluation{
		Input:   input,
		License: license,
		Package: pkg,
		Passed:  le.Pass,
		Reasons: reasons,
	}

	return re
}

func (r *Report) renderJSON() error {
	evaluations := make([]Evaluation, 0)
	for _, res := range r.Results {
		for _, e := range res.Evaluations {
			re := NewEvaluation(res.Case.UserInput, e)
			evaluations = append(evaluations, re)
		}
	}
	report := Response{
		ReportID:  r.ReportID,
		Timestamp: r.Timestamp,
		Inputs:    r.Results.UserInputs(),
		Results:   evaluations,
	}
	jsonData, err := json.Marshal(report)
	if err != nil {
		return err
	}

	bus.Report(string(jsonData))
	return nil
}

func (r *Report) renderCheckTree() error {
	var uiLists []list.Writer
	for _, res := range r.Results {
		r.Monitor.Increment()
		r.Monitor.AtomicStage.Set(res.Case.UserInput)
		resulList := newList()
		uiLists = append(uiLists, resulList)
		resulList.AppendItem(color.Primary.Sprintf("%s", res.Case.UserInput))

		for _, rule := range r.Config.Policy.Rules {
			failedEvaluations := r.Results.GetFailedEvaluations(res.Case.UserInput, rule)
			if len(failedEvaluations) == 0 {
				resulList.Indent()
				resulList.AppendItem(color.Success.Sprintf("No License Violations Found for Rule %s", rule.Name))
				resulList.UnIndent()
				continue
			}
			renderEvaluations(rule, r.Config.Options.ShowPackages, resulList, failedEvaluations)
		}
		if r.Config.Options.OsiApproved {
			osiRule := grant.Rule{
				Name: evalutation.RuleNameNotOSIApproved,
			}

			failedEvaluations := r.Results.GetFailedEvaluations(res.Case.UserInput, osiRule)
			if len(failedEvaluations) == 0 {
				resulList.Indent()
				resulList.AppendItem(color.Success.Sprintf("%s", "No OSI Violations Found"))
				resulList.UnIndent()
			} else {
				renderEvaluations(osiRule, r.Config.Options.ShowPackages, resulList, failedEvaluations)
			}
		}
		if r.Config.Options.ShowPackages {
			renderOrphanPackages(resulList, res, false) // keep primary coloring for tree
		}
	}
	r.Monitor.AtomicStage.Set(strings.Join(r.Results.UserInputs(), ", "))
	// segment the results into lists by user input
	// lists can optionally show the packages that were evaluated

	for _, l := range uiLists {
		bus.Report(l.Render())
	}
	return nil
}

func renderOrphanPackages(l list.Writer, res evalutation.Result, invert bool) {
	title := color.Secondary
	newItem := color.Light
	if invert {
		title = color.Light
		newItem = color.Secondary
	}
	// TODO: there is a bug here where binary cataloger show even when dupe os overlap
	orphans := res.Evaluations.EmptyPackages()
	if len(orphans) == 0 {
		return
	}
	l.Indent()
	l.AppendItem(title.Sprintf("packages found with no licenses"))
	l.Indent()
	for _, pkg := range orphans {
		l.AppendItem(newItem.Sprintf("%s", pkg))
	}
	l.UnIndent()
	l.UnIndent()
}

func renderEvaluations(rule grant.Rule, showPackages bool, l list.Writer, e evalutation.LicenseEvaluations) {
	l.Indent()
	l.AppendItem(color.Secondary.Sprintf("license matches for rule: %s; matched with pattern %s", rule.Name, rule.OriginalPattern))

	licenseTracker := make(map[string]struct{})
	for _, eval := range e {
		var license string
		if eval.License.SPDXExpression != "" {
			license = eval.License.SPDXExpression
		} else {
			license = eval.License.Name
		}
		if _, ok := licenseTracker[license]; !ok {
			licenseTracker[license] = struct{}{}
			l.Indent()
			l.AppendItem(color.Danger.Sprintf("%s", license))
			if showPackages {
				packages := e.Packages(license)
				l.Indent()
				for _, pkg := range packages {
					l.AppendItem(color.Light.Sprintf("%s", pkg))
				}
				l.UnIndent()
			}
			l.UnIndent()
		}
	}
	l.UnIndent()
}

func newList() list.Writer {
	l := list.NewWriter()
	return l
}
0707010000001A000081A400000000000000000000000168964510000000F1000000000000000000000000000000000000002D00000000grant-0.2.9/cmd/grant/cli/internal/config.gopackage internal

// TODO: osi approved filter
// TODO: non spdx filter
// TODO: packages no licenses
// TODO: licenses no packages

type ReportOptions struct {
	Format       Format
	ShowPackages bool
	CheckNonSPDX bool
	OsiApproved  bool
}
0707010000001B000081A400000000000000000000000168964510000007F4000000000000000000000000000000000000002D00000000grant-0.2.9/cmd/grant/cli/internal/format.gopackage internal

import (
	"github.com/google/uuid"

	"github.com/anchore/grant/grant"
)

type Format string

const (
	JSON  Format = "json"
	Table Format = "table"
	CSV   Format = "csv"
)

var ValidFormats = []Format{JSON, Table, CSV}

// ValidateFormat returns a valid format or the default format if the given format is invalid
func ValidateFormat(f Format) Format {
	switch f {
	case "json":
		return JSON
	case "table":
		return Table
	case "csv":
		return CSV
	default:
		return Table
	}
}

func NewReportID() string {
	return uuid.Must(uuid.NewRandom()).String()
}

type License struct {
	SPDXExpression string   `json:"spdx_expression" yaml:"spdx_expression"`
	Name           string   `json:"name" yaml:"name"`
	Locations      []string `json:"locations" yaml:"locations"`
	Reference      string   `json:"reference" yaml:"reference"`
	IsDeprecated   bool     `json:"is_deprecated" yaml:"is_deprecated"`
	LicenseID      string   `json:"license_id" yaml:"license_id"`
	SeeAlso        []string `json:"see_also" yaml:"see_also"`
	IsOsiApproved  bool     `json:"is_osi_approved" yaml:"is_osi_approved"`
}

func NewLicense(l grant.License) License {
	return License{
		SPDXExpression: l.SPDXExpression,
		Name:           l.Name,
		Locations:      l.Locations,
		Reference:      l.Reference,
		IsDeprecated:   l.IsDeprecatedLicenseID,
		LicenseID:      l.LicenseID,
		SeeAlso:        l.SeeAlso,
		IsOsiApproved:  l.IsOsiApproved,
	}
}

type Package struct {
	Name      string   `json:"name" yaml:"name"`
	Version   string   `json:"version" yaml:"version"`
	Type      string   `json:"type" yaml:"type"`
	Locations []string `json:"locations" yaml:"locations"`
}

func NewPackage(p *grant.Package) Package {
	if p == nil {
		return Package{}
	}
	return Package{
		Name:      p.Name,
		Version:   p.Version,
		Locations: p.Locations,
		Type:      p.Type,
	}
}

func NewPackages(pkgs ...*grant.Package) []Package {
	packages := make([]Package, 0)
	for _, p := range pkgs {
		packages = append(packages, NewPackage(p))
	}
	return packages
}
0707010000001C000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000002800000000grant-0.2.9/cmd/grant/cli/internal/list0707010000001D000081A40000000000000000000000016896451000001338000000000000000000000000000000000000003200000000grant-0.2.9/cmd/grant/cli/internal/list/report.gopackage list

import (
	"encoding/csv"
	"encoding/json"
	"errors"
	"fmt"
	"os"
	"slices"
	"time"

	"github.com/gookit/color"
	"github.com/jedib0t/go-pretty/v6/list"

	"github.com/anchore/grant/cmd/grant/cli/internal"
	"github.com/anchore/grant/event"
	"github.com/anchore/grant/grant"
	"github.com/anchore/grant/internal/bus"
)

type Report struct {
	ReportID  string
	Cases     []grant.Case
	Config    ReportConfig
	Timestamp string
	Monitor   *event.ManualStagedProgress
	errors    []error
}

type ReportConfig struct {
	Options internal.ReportOptions
	Monitor *event.ManualStagedProgress
}

// NewReport will generate a new report for the given format for the list command.
// The supplied policy is applied to all user requests.
// If no policy is provided, the default policy will be used
// If no requests are provided, an empty report will be generated
// If a request is provided, but the sbom cannot be generated, the source will be ignored and an error will be returned
// Where do we render packages that had no licenses?
func NewReport(rc ReportConfig, userRequests ...string) (*Report, error) {
	rc.Options.Format = internal.ValidateFormat(rc.Options.Format)
	cases := grant.NewCases(userRequests...)

	return &Report{
		ReportID:  internal.NewReportID(),
		Cases:     cases,
		Config:    rc,
		Timestamp: time.Now().Format(time.RFC3339),
		Monitor:   rc.Monitor,
	}, nil
}

func (r *Report) Render() error {
	switch r.Config.Options.Format {
	case internal.Table:
		return r.renderList()
	case internal.JSON:
		return r.renderJSON()
	case internal.CSV:
		return r.renderCSV()
	default:
		r.errors = append(r.errors, fmt.Errorf("invalid format: %s; valid formats are: %s", r.Config.Options.Format, internal.ValidFormats))
		return errors.Join(r.errors...)
	}
}

type Response struct {
	ReportID  string   `json:"report_id" yaml:"report_id"`
	Timestamp string   `json:"timestamp" yaml:"timestamp"`
	Inputs    []string `json:"inputs" yaml:"inputs"`
	Results   []Result `json:"results" yaml:"results"`
}

type Result struct {
	Input    string             `json:"input" yaml:"input"`
	License  internal.License   `json:"license" yaml:"license"`
	Packages []internal.Package `json:"packages" yaml:"packages"`
}

func NewResult(input string, gl grant.License, gp ...*grant.Package) Result {
	rl := internal.NewLicense(gl)
	pkgs := internal.NewPackages(gp...)
	return Result{
		Input:    input,
		License:  rl,
		Packages: pkgs,
	}
}

func (r *Report) renderCSV() error {
	response := getResponse(r)
	headers := []string{"component", "component_version", "license", "website", "type"}
	data := [][]string{
		headers,
	}

	for _, rslt := range response.Results {
		for _, pkg := range rslt.Packages {
			data = append(data, []string{
				pkg.Name,
				pkg.Version,
				rslt.License.Name,
				rslt.License.Reference,
				pkg.Type,
			})
		}
	}

	writer := csv.NewWriter(os.Stdout)
	defer writer.Flush()

	for _, record := range data {
		if err := writer.Write(record); err != nil {
			return err
		}
	}

	return writer.Error()
}

func getResponse(r *Report) Response {
	resp := Response{
		ReportID:  r.ReportID,
		Timestamp: r.Timestamp,
		Inputs:    make([]string, 0),
		Results:   make([]Result, 0),
	}

	for _, c := range r.Cases {
		resp.Inputs = append(resp.Inputs, c.UserInput)
		licensePackages, licenses, _ := c.GetLicenses()
		for key, l := range licenses {
			packages := licensePackages[key]
			result := NewResult(c.UserInput, l, packages...)
			resp.Results = append(resp.Results, result)
		}
	}
	return resp
}

func (r *Report) renderJSON() error {
	resp := getResponse(r)
	jsonData, err := json.Marshal(resp)
	if err != nil {
		return err
	}

	bus.Report(string(jsonData))
	return nil
}

func (r *Report) renderList() error {
	var uiLists []list.Writer
	for _, c := range r.Cases {
		r.Monitor.Increment()
		r.Monitor.AtomicStage.Set(c.UserInput)
		unsortedLicenses := make([]string, 0)
		resultList := list.NewWriter()
		uiLists = append(uiLists, resultList)
		resultList.AppendItem(color.Primary.Sprintf("%s", c.UserInput))
		packages, licenses, _ := c.GetLicenses()
		for _, license := range licenses {
			// Filter out SPDX licenses if requested to just show non-SPDX licenses
			if r.Config.Options.CheckNonSPDX && license.IsSPDX() {
				continue
			}
			if license.IsSPDX() {
				unsortedLicenses = append(unsortedLicenses, license.SPDXExpression)
				continue
			}
			unsortedLicenses = append(unsortedLicenses, license.Name)
		}

		// sort for list output
		slices.Sort(unsortedLicenses)

		resultList.Indent()
		for _, license := range unsortedLicenses {
			resultList.AppendItem(license)
			if r.Config.Options.ShowPackages {
				pkgs := packages[license]
				for _, pkg := range pkgs {
					resultList.Indent()
					resultList.AppendItem(pkg.Name)
					resultList.UnIndent()
				}
			}
		}
		resultList.UnIndent()
	}

	for _, l := range uiLists {
		bus.Report(l.Render())
	}
	return nil
}
0707010000001E000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000002600000000grant-0.2.9/cmd/grant/cli/internal/ui0707010000001F000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000003400000000grant-0.2.9/cmd/grant/cli/internal/ui/__snapshots__07070100000020000081ED0000000000000000000000016896451000000249000000000000000000000000000000000000005300000000grant-0.2.9/cmd/grant/cli/internal/ui/__snapshots__/post_ui_event_writer_test.snap
[Test_postUIEventWriter_write/no_events/stdout - 1]

---

[Test_postUIEventWriter_write/no_events/stderr - 1]

---

[Test_postUIEventWriter_write/all_events/stdout - 1]


<my --
-
-
report 1!!>
<report 2>

---

[Test_postUIEventWriter_write/all_events/stderr - 1]
                    
                    
<my notification 1!!
...still notifying> 
                    
                    
<notification 2>
<notification 3>

---

[Test_postUIEventWriter_write/quiet_only_shows_report/stdout - 1]
<report 1>

---

[Test_postUIEventWriter_write/quiet_only_shows_report/stderr - 1]

---
07070100000021000081A40000000000000000000000016896451000000357000000000000000000000000000000000000002F00000000grant-0.2.9/cmd/grant/cli/internal/ui/no_ui.gopackage ui

import (
	"os"

	"github.com/wagoodman/go-partybus"

	"github.com/anchore/clio"
	"github.com/anchore/grant/event"
)

var _ clio.UI = (*NoUI)(nil)

type NoUI struct {
	finalizeEvents []partybus.Event
	subscription   partybus.Unsubscribable
	quiet          bool
}

func None(quiet bool) *NoUI {
	return &NoUI{
		quiet: quiet,
	}
}

func (n *NoUI) Setup(subscription partybus.Unsubscribable) error {
	n.subscription = subscription
	return nil
}

func (n *NoUI) Handle(e partybus.Event) error {
	switch e.Type {
	case event.CLIReport, event.CLINotification:
		// keep these for when the UI is terminated to show to the screen (or perform other events)
		n.finalizeEvents = append(n.finalizeEvents, e)
	}
	return nil
}

func (n NoUI) Teardown(_ bool) error {
	return newPostUIEventWriter(os.Stdout, os.Stderr).write(n.quiet, n.finalizeEvents...)
}
07070100000022000081A400000000000000000000000168964510000009B8000000000000000000000000000000000000003E00000000grant-0.2.9/cmd/grant/cli/internal/ui/post_ui_event_writer.gopackage ui

import (
	"fmt"
	"io"
	"strings"

	"github.com/charmbracelet/lipgloss"
	"github.com/hashicorp/go-multierror"
	"github.com/wagoodman/go-partybus"

	"github.com/anchore/grant/event"
	"github.com/anchore/grant/internal/log"
)

type postUIEventWriter struct {
	handles []postUIHandle
}

type postUIHandle struct {
	respectQuiet bool
	event        partybus.EventType
	writer       io.Writer
	dispatch     eventWriter
}

type eventWriter func(io.Writer, ...partybus.Event) error

func newPostUIEventWriter(stdout, stderr io.Writer) *postUIEventWriter {
	return &postUIEventWriter{
		handles: []postUIHandle{
			{
				event:        event.CLIReport,
				respectQuiet: false,
				writer:       stdout,
				dispatch:     writeReports,
			},
			{
				event:        event.CLINotification,
				respectQuiet: true,
				writer:       stderr,
				dispatch:     writeNotifications,
			},
		},
	}
}

func (w postUIEventWriter) write(quiet bool, events ...partybus.Event) error {
	var errs error
	for _, h := range w.handles {
		if quiet && h.respectQuiet {
			continue
		}

		for _, e := range events {
			if e.Type != h.event {
				continue
			}

			if err := h.dispatch(h.writer, e); err != nil {
				errs = multierror.Append(errs, err)
			}
		}
	}
	return errs
}

func writeReports(writer io.Writer, events ...partybus.Event) error {
	var reports []string
	for _, e := range events {
		_, report, err := event.ParseCLIReport(e)
		if err != nil {
			log.WithFields("error", err).Warn("failed to gather final report")
			continue
		}

		// remove all whitespace padding from the end of the report
		reports = append(reports, strings.TrimRight(report, "\n ")+"\n")
	}

	// prevent the double new-line at the end of the report
	report := strings.Join(reports, "\n")

	if _, err := fmt.Fprint(writer, report); err != nil {
		return fmt.Errorf("failed to write final report to stdout: %w", err)
	}
	return nil
}

func writeNotifications(writer io.Writer, events ...partybus.Event) error {
	// 13 = high intensity magenta (ANSI 16 bit code)
	style := lipgloss.NewStyle().Foreground(lipgloss.Color("13"))

	for _, e := range events {
		_, notification, err := event.ParseCLINotification(e)
		if err != nil {
			log.WithFields("error", err).Warn("failed to parse notification")
			continue
		}

		if _, err := fmt.Fprintln(writer, style.Render(notification)); err != nil {
			// don't let this be fatal
			log.WithFields("error", err).Warn("failed to write final notifications")
		}
	}
	return nil
}
07070100000023000081A40000000000000000000000016896451000000657000000000000000000000000000000000000004300000000grant-0.2.9/cmd/grant/cli/internal/ui/post_ui_event_writer_test.gopackage ui

import (
	"bytes"
	"testing"

	"github.com/gkampitakis/go-snaps/snaps"
	"github.com/stretchr/testify/require"
	"github.com/wagoodman/go-partybus"

	"github.com/anchore/grant/event"
)

func Test_postUIEventWriter_write(t *testing.T) {
	tests := []struct {
		name    string
		quiet   bool
		events  []partybus.Event
		wantErr require.ErrorAssertionFunc
	}{
		{
			name: "no events",
		},
		{
			name: "all events",
			events: []partybus.Event{
				{
					Type:  event.CLINotification,
					Value: "\n\n<my notification 1!!\n...still notifying>\n\n",
				},
				{
					Type:  event.CLINotification,
					Value: "<notification 2>",
				},
				{
					Type:  event.CLINotification,
					Value: "<notification 3>",
				},
				{
					Type:  event.CLIReport,
					Value: "\n\n<my --\n-\n-\nreport 1!!>\n\n",
				},
				{
					Type:  event.CLIReport,
					Value: "<report 2>",
				},
			},
		},
		{
			name:  "quiet only shows report",
			quiet: true,
			events: []partybus.Event{

				{
					Type:  event.CLINotification,
					Value: "<notification 1>",
				},
				{
					Type:  event.CLIReport,
					Value: "<report 1>",
				},
			},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if tt.wantErr == nil {
				tt.wantErr = require.NoError
			}

			stdout := &bytes.Buffer{}
			stderr := &bytes.Buffer{}
			w := newPostUIEventWriter(stdout, stderr)

			tt.wantErr(t, w.write(tt.quiet, tt.events...))

			t.Run("stdout", func(t *testing.T) {
				snaps.MatchSnapshot(t, stdout.String())
			})

			t.Run("stderr", func(t *testing.T) {
				snaps.MatchSnapshot(t, stderr.String())
			})
		})
	}
}
07070100000024000081A4000000000000000000000001689645100000150C000000000000000000000000000000000000002C00000000grant-0.2.9/cmd/grant/cli/internal/ui/ui.gopackage ui

import (
	"fmt"
	"os"
	"sync"
	"time"

	tea "github.com/charmbracelet/bubbletea"
	"github.com/wagoodman/go-partybus"

	"github.com/anchore/bubbly"
	"github.com/anchore/bubbly/bubbles/frame"
	"github.com/anchore/clio"
	"github.com/anchore/go-logger"
	"github.com/anchore/grant/event"
	"github.com/anchore/grant/internal/bus"
	"github.com/anchore/grant/internal/log"
)

var _ interface {
	tea.Model
	partybus.Responder
	clio.UI
} = (*UI)(nil)

type UI struct {
	program        *tea.Program
	running        *sync.WaitGroup
	quiet          bool
	subscription   partybus.Unsubscribable
	finalizeEvents []partybus.Event

	handler *bubbly.HandlerCollection
	frame   tea.Model
}

func New(quiet bool, handlers ...bubbly.EventHandler) *UI {
	return &UI{
		handler: bubbly.NewHandlerCollection(handlers...),
		frame:   frame.New(),
		running: &sync.WaitGroup{},
		quiet:   quiet,
	}
}

func (m *UI) Setup(subscription partybus.Unsubscribable) error {
	// we still want to collect log messages, however, we also the logger shouldn't write to the screen directly
	if logWrapper, ok := log.Get().(logger.Controller); ok {
		logWrapper.SetOutput(m.frame.(*frame.Frame).Footer())
	}

	m.subscription = subscription
	m.program = tea.NewProgram(m, tea.WithOutput(os.Stderr), tea.WithInput(os.Stdin), tea.WithoutSignalHandler())
	m.running.Add(1)

	go func() {
		defer m.running.Done()
		if _, err := m.program.Run(); err != nil {
			log.Errorf("unable to start UI: %+v", err)
			bus.ExitWithInterrupt()
		}
	}()

	return nil
}

func (m *UI) Handle(e partybus.Event) error {
	if m.program != nil {
		m.program.Send(e)
	}
	return nil
}

func (m *UI) Teardown(force bool) error {
	if !force {
		m.handler.Wait()
		m.program.Quit()
		// typically in all cases we would want to wait for the UI to finish. However there are still error cases
		// that are not accounted for, resulting in hangs. For now, we'll just wait for the UI to finish in the
		// happy path only. There will always be an indication of the problem to the user via reporting the error
		// string from the worker (outside of the UI after teardown).
		m.running.Wait()
	} else {
		_ = runWithTimeout(250*time.Millisecond, func() error {
			m.handler.Wait()
			return nil
		})

		// it may be tempting to use Kill() however it has been found that this can cause the terminal to be left in
		// a bad state (where Ctrl+C and other control characters no longer works for future processes in that terminal).
		m.program.Quit()

		_ = runWithTimeout(250*time.Millisecond, func() error {
			m.running.Wait()
			return nil
		})
	}

	// TODO: allow for writing out the full log output to the screen (only a partial log is shown currently)
	// this needs coordination to know what the last frame event is to change the state accordingly (which isn't possible now)

	return newPostUIEventWriter(os.Stdout, os.Stderr).write(m.quiet, m.finalizeEvents...)
}

// bubbletea.Model functions

func (m UI) Init() tea.Cmd {
	return m.frame.Init()
}

func (m UI) RespondsTo() []partybus.EventType {
	return append([]partybus.EventType{
		event.CLIReport,
		event.CLINotification,
	}, m.handler.RespondsTo()...)
}

func (m *UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
	// note: we need a pointer receiver such that the same instance of UI used in Teardown is referenced (to keep finalize events)

	var cmds []tea.Cmd

	// allow for non-partybus UI updates (such as window size events). Note: these must not affect existing models,
	// that is the responsibility of the frame object on this UI object. The handler is a factory of models
	// which the frame is responsible for the lifecycle of. This update allows for injecting the initial state
	// of the world when creating those models.
	m.handler.OnMessage(msg)

	switch msg := msg.(type) {
	case tea.KeyMsg:
		switch msg.String() {
		// today we treat esc and ctrl+c the same, but in the future when the worker has a graceful way to
		// cancel in-flight work via a context, we can wire up esc to this path with bus.Exit()
		case "esc", "ctrl+c":
			bus.ExitWithInterrupt()
			return m, tea.Quit
		}

	case partybus.Event:
		log.WithFields("component", "ui").Tracef("event: %q", msg.Type)

		switch msg.Type {
		case event.CLIReport, event.CLINotification:
			// keep these for when the UI is terminated to show to the screen (or perform other events)
			m.finalizeEvents = append(m.finalizeEvents, msg)

			// why not return tea.Quit here for exit events? because there may be UI components that still need the update-render loop.
			// for this reason we'll let the event loop call Teardown() which will explicitly wait for these components
			return m, nil
		}

		handlerModels, _ := m.handler.Handle(msg)
		for _, newModel := range handlerModels {
			if newModel == nil {
				continue
			}
			cmds = append(cmds, newModel.Init())
			m.frame.(*frame.Frame).AppendModel(newModel)
		}
		// intentionally fallthrough to update the frame model
	}

	frameModel, cmd := m.frame.Update(msg)
	m.frame = frameModel
	cmds = append(cmds, cmd)

	return m, tea.Batch(cmds...)
}

func (m UI) View() string {
	return m.frame.View()
}

func runWithTimeout(timeout time.Duration, fn func() error) (err error) {
	c := make(chan struct{}, 1)
	go func() {
		err = fn()
		c <- struct{}{}
	}()
	select {
	case <-c:
	case <-time.After(timeout):
		return fmt.Errorf("timed out after %v", timeout)
	}
	return err
}
07070100000025000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000002100000000grant-0.2.9/cmd/grant/cli/option07070100000026000081A400000000000000000000000168964510000002A1000000000000000000000000000000000000002A00000000grant-0.2.9/cmd/grant/cli/option/check.gopackage option

import (
	"github.com/anchore/clio"
)

type Check struct {
	List        `json:",inline" yaml:",inline" mapstructure:",squash"`
	Quiet       bool   `json:"quiet" yaml:"quiet" mapstructure:"quiet"`
	OsiApproved bool   `json:"osi-approved" yaml:"osi-approved" mapstructure:"osi-approved"`
	Rules       []Rule `json:"rules" yaml:"rules" mapstructure:"rules"`
}

func DefaultCheck() Check {
	return Check{
		List:        DefaultList(),
		Quiet:       false,
		OsiApproved: false,
		Rules:       []Rule{defaultDenyAll},
	}
}

func (o *Check) AddFlags(flags clio.FlagSet) {
	flags.BoolVarP(&o.OsiApproved, "osi-approved", "", "only allow OSI approved licenses")
}
07070100000027000081A4000000000000000000000001689645100000032B000000000000000000000000000000000000002900000000grant-0.2.9/cmd/grant/cli/option/list.gopackage option

import "github.com/anchore/clio"

type List struct {
	Output       string `json:"output" yaml:"output" mapstructure:"output"`
	ShowPackages bool   `json:"show-packages" yaml:"show-packages" mapstructure:"show-packages"`
	NonSPDX      bool   `json:"non-spdx" yaml:"non-spdx" mapstructure:"non-spdx"`
}

func DefaultList() List {
	return List{
		Output:       "table",
		ShowPackages: false,
		NonSPDX:      false,
	}
}

func (o *List) AddFlags(flags clio.FlagSet) {
	flags.BoolVarP(&o.ShowPackages, "show-packages", "", "expand the license lists to show packages that contained the detected license")
	flags.BoolVarP(&o.NonSPDX, "non-spdx", "", "show licenses that could not be matched to the SPDX license list")
	flags.StringVarP(&o.Output, "output", "o", "output format (table, json, yaml)")
}
07070100000028000081A40000000000000000000000016896451000000276000000000000000000000000000000000000002900000000grant-0.2.9/cmd/grant/cli/option/rule.gopackage option

type Rule struct {
	Name       string   `json:"name" yaml:"name" mapstructure:"name"`
	Reason     string   `json:"reason" yaml:"reason" mapstructure:"reason"`
	Pattern    string   `json:"pattern" yaml:"pattern" mapstructure:"pattern"`
	Severity   string   `json:"severity" yaml:"severity" mapstructure:"severity"`
	Mode       string   `json:"mode" yaml:"mode" mapstructure:"mode"`
	Exceptions []string `json:"exceptions" yaml:"exceptions" mapstructure:"exceptions"`
}

var defaultDenyAll = Rule{
	Name:    "default-deny-all",
	Reason:  "grant by default will deny all licenses",
	Mode:    "deny",
	Pattern: "*",
}
07070100000029000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001E00000000grant-0.2.9/cmd/grant/cli/tui0707010000002A000081A40000000000000000000000016896451000000378000000000000000000000000000000000000003500000000grant-0.2.9/cmd/grant/cli/tui/handle_task_started.gopackage tui

import (
	tea "github.com/charmbracelet/bubbletea"
	"github.com/wagoodman/go-partybus"

	"github.com/anchore/bubbly/bubbles/taskprogress"
	"github.com/anchore/grant/event"
)

func (m *Handler) handleTaskStarted(e partybus.Event) ([]tea.Model, tea.Cmd) {
	cmd, prog, err := event.ParseTaskStarted(e)
	if err != nil {
		// log.Warnf("unable to parse event: %+v", err)
		return nil, nil
	}

	tsk := taskprogress.New(
		m.Running,
		taskprogress.WithStagedProgressable(prog),
	)

	tsk.HideProgressOnSuccess = true
	tsk.HideOnSuccess = true
	tsk.TitleWidth = len(cmd.Title.WhileRunning)
	tsk.HintEndCaps = nil
	tsk.TitleOptions = taskprogress.Title{
		Default: cmd.Title.Default,
		Running: cmd.Title.WhileRunning,
		Success: cmd.Title.OnSuccess,
		Failed:  cmd.Title.OnFail,
	}
	tsk.Context = []string{cmd.Context}
	tsk.WindowSize = m.WindowSize

	return []tea.Model{tsk}, nil
}
0707010000002B000081A4000000000000000000000001689645100000043C000000000000000000000000000000000000002900000000grant-0.2.9/cmd/grant/cli/tui/handler.gopackage tui

import (
	"sync"

	tea "github.com/charmbracelet/bubbletea"
	"github.com/wagoodman/go-partybus"

	"github.com/anchore/bubbly"
	"github.com/anchore/grant/event"
)

var _ interface {
	bubbly.EventHandler
	bubbly.MessageListener
	bubbly.HandleWaiter
} = (*Handler)(nil)

type HandlerConfig struct {
	TitleWidth int
}

type Handler struct {
	WindowSize tea.WindowSizeMsg
	Running    *sync.WaitGroup
	Config     HandlerConfig

	bubbly.EventHandler
}

func DefaultHandlerConfig() HandlerConfig {
	return HandlerConfig{
		TitleWidth: 30,
	}
}

func New(cfg HandlerConfig) *Handler {
	d := bubbly.NewEventDispatcher()

	h := &Handler{
		EventHandler: d,
		Running:      &sync.WaitGroup{},
		Config:       cfg,
	}

	// register all supported event types with the respective handler functions
	d.AddHandlers(map[partybus.EventType]bubbly.EventHandlerFn{
		event.TaskStartedEvent: h.handleTaskStarted,
	})

	return h
}

func (m *Handler) OnMessage(msg tea.Msg) {
	if msg, ok := msg.(tea.WindowSizeMsg); ok {
		m.WindowSize = msg
	}
}

func (m *Handler) Wait() {
	m.Running.Wait()
}
0707010000002C000081A400000000000000000000000168964510000002C2000000000000000000000000000000000000001E00000000grant-0.2.9/cmd/grant/main.gopackage main

import (
	"github.com/anchore/clio"
	"github.com/anchore/grant/cmd/grant/cli"
)

// applicationName is the non-capitalized name of the application (do not change this)
const (
	applicationName = "grant"
	notProvided     = "[not provided]"
)

// all variables here are provided as build-time arguments, with clear default values
var (
	version        = notProvided
	buildDate      = notProvided
	gitCommit      = notProvided
	gitDescription = notProvided
)

func main() {
	app := cli.New(
		clio.Identification{
			Name:           applicationName,
			Version:        version,
			BuildDate:      buildDate,
			GitCommit:      gitCommit,
			GitDescription: gitDescription,
		},
	)

	app.Run()
}
0707010000002D000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001100000000grant-0.2.9/docs0707010000002E000081A4000000000000000000000001689645100000000E000000000000000000000000000000000000002100000000grant-0.2.9/docs/CONTRIBUTING.md# Contributing0707010000002F000081A40000000000000000000000016896451000001793000000000000000000000000000000000000001B00000000grant-0.2.9/docs/DESIGN.md## Summary

Grant is a license compliance tool that reads and audits license from container images, SBOM documents, and directory scans.
It generates a pass or fail check depending on if the read licenses adhear to the user's supplied rulesjk

### Syft Updates Needed to Support Grant

- [Google String Classifier License](https://github.com/google/licenseclassifier/tree/main/stringclassifier)

Syft's core elements of files and packages should be enhanced to include more information for grant's processing:

For more details on this redesign see [Syft Licesnse Revamp](https://github.com/anchore/syft/issues/1577).

It's important licenses be included in both core types. 

For image scans packages are most important. Syft can read a package managers declared license and then use the `String Classifier` to conclude that the declared license exists and is accurate.

For direcotry scans files will be the most important. Directory scans have no concept of owned files from a package manager. Files should be read and licenses concluded based on the string classifer.

#### Grant Notes on data shape
- Pay attention to syft compatibility when shape changes
- Our decode implicitly knows all previous versions (check this)
- cyclonedx format needs to be examined for compatibility (possibly show warning)

### Stories:

As a CI operator, I would like my image's SBOM to be searched for permitted/denied licenses
so that I may gate software based on my organizations license compliance.

I will provide a config of either allow list or deny list license.
These license will be in the format of Identifiers found in the spdx license list:
	- [spdx license list](https://spdx.org/licenses/)
	
I want grant to fail with a status code 1 and informative message when my SBOM contains licenses not permitted by my organization.

### Questions

- How do I want to see unowned files that are Forbidden for an image scan?
- I've been given an SBOM and it does not illustrate the source (directory or OCI image). Are all license equal?


### Command CLI Design
`SOME-INPUT = sbom, dir:., registry:alpine:latest`

List all the license for a given input

##### Grant List && Grant SPDX

This shows all the licenses as identifiers from the SPDX license list with the packages and ID as children
```
grant license list <SOME-INPUT>
MIT
	ID p1 declared xxxxx
	ID p2 concluded xxxx

MIT-Modern-Varient
	ID f1 concluded xxx

NPL-1.0
	ID p1 declared xxxx
```

List the latest version of the spdx license list
```
grant spdx list <SOME_SPDX_ID>

BSD Zero Clause License			0BSD		
Attribution Assurance License	AAL		
Abstyles License				Abstyles		
Adobe Systems Incorporated...	Adobe-2006		
Adobe Glyph List License	    Adobe-Glyph		
Amazon Digital Services License	ADSL		
Academic Free License v1.1	    AFL-1.1
Academic Free License v1.2		AFL-1.2
Academic Free License v2.0		AFL-2.0
Academic Free License v2.1		AFL-2.1
Academic Free License v3.0		AFL-3.0


grant spdx list --deprecated <-- show deprecated
...
```

#### Notes
// Latest SPDX license list <--- Might be incompatible
// Compare my organization to an older license list

#### SPDX Sub commmands for setting/using the correct list and getting license text
```
grant spdx version set <VERSION-NUMBER> // sets version list
grant spdx version //lists current license list version
grant spdx get <SPDX-LICENSE-ID> // full contents?
```

// describe resource or just some ID from the list output?
```
grant describe package <package_name:version, package_id>
grant describe license <license_name> <-- Show me all the packages for a license
grant describe file <file_name, file_id>
grant describe <SOME-ID>
```

// compliance and query
```
grant check <SOME-SBOM> --config <SOME_GRANT_CONFIG>
grant search <SOME-QUERY> <--
- Deprecated licenses
- SPDX Complex Expressions
- License Confidence Query
- Concluded vs Declared
- I just want to see all GPL
- Diffs between declared and concluded (inconsistencies - p1 declare MIT, p1 found ADOBE)
- All source files that have declarations (divided by ecosystem or laguage?)
- direct dependencies
```

// Third Party Inputs
Third party?---> deps.dev as input directly****

// Syft Not grabbing all of the packages transitively (MOAR LICENSES)
// Syft pre/post (We want pre build syft SBOM to do the transitive dependencies)

// Go build cache --> Syft Sbom --> Grant (Better golang licenses)


#### Notes
License Declared vs License Concluded (Looking at the text vs reading the package data)

Pure syft downstream tool

Sometimes this is by package owned files
Sometimes this is by parsing all files
Sometimes this is by parsing all unowned files

Core model of syft
- update license shape to include tags
- Does it exist on package struct or on its metadata
- update file cataloger to open and conclude licenses

#### Third party things
- Thirdparty license directory for distro... <-- These should be associated with the package

#### SPDX License Expressions
License expressions... Probably advanced level:

https://spdx.org/licenses/
https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions/

Sometimes found in package metadata where people want to express 
the presence of multiple license

Debian has some shared license location examples

How to handle all licenses in a compound file?

#### SPDX License Identifiers:
https://github.com/anchore/syft/issues/565
https://spdx.dev/ids/

Are packages limited to one concluded and one declared?

Combinations
- Declared can have a concluded
- If not declated we can still find concluded via owned files
- If declared if might not be able to conclude (Found Nothing?)

Image:
- Owned vs unknowned is imporant

Dir:
- Nothing is owned so the file cataloger does the work

Files should only be concluded

Go over all files?
- What's the hueristic for this?
- only visit `LICENSE` named files?
- check runtime for large SBOM file reads

Does Concluded comes from resolving the file itself as contents of a license?
Does Declared or Concluded comes from reading SPDX IDS from the header of a file?
07070100000030000081A400000000000000000000000168964510000008A9000000000000000000000000000000000000001F00000000grant-0.2.9/docs/DEVELOPING.md# Developing

## Getting started

In order to test and develop in this repo you will need the following dependencies installed:
- Golang
- Docker
- make

After cloning the following step can help you get setup:
1. run `make tools` to download tools, create the `/.tmp` dir, and download helper utilities.
2. run `make` to view the selection of developer commands in the Makefile
3. run `make build` to build the release snapshot binaries and packages
4. for an even quicker start you can run `go run cmd/grant/main.go` to print the syft help.
    - this command `go run cmd/grant/main.go check alpine:latest` will compile and run grant against the alpine:latest image
5. view the README or grant help output for more output options

The main make tasks for common static analysis and testing are `lint`, `format`, `lint-fix`, `unit`

See `make help` for all the current make tasks.

## Architecture

At a high level, this is the package structure of grant:
```
./cmd/grant/
│   ├── cli/
│   │   ├── cli.go          // where all commands are wired up
│   │   ├── command/        // all command implementations
│   │   ├── internal/       // all internal command implementations
│   │   ├── option/         // all command flags and configuration options
│   │   └── tui/            // all handlers for events that are shown on the UI
│   └── main.go             // entrypoint for the application
└── grant/                  // the "core" grant library
```

## Testing

### Levels of testing

- `unit`: The default level of test which is distributed throughout the repo are unit tests. Any `_test.go` file that
  does not reside somewhere within the `/test` directory is a unit test. Other forms of testing should be organized in
  the `/test` directory. These tests should focus on correctness of functionality in depth. % test coverage metrics
  only considers unit tests and no other forms of testing.

- `integration`: TODO

- `cli`: located with in `test/cli`, TODO

- `acceptance`: located within `test/compare` and `test/install`, these are smoke-like tests that ensure that application  
  packaging and installation works as expected. TODO07070100000031000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001200000000grant-0.2.9/event07070100000032000081A4000000000000000000000001689645100000035E000000000000000000000000000000000000001C00000000grant-0.2.9/event/events.gopackage event

import "github.com/wagoodman/go-partybus"

const (
	typePrefix    = "grant"
	cliTypePrefix = typePrefix + "-cli"

	// Events from the grant library

	// TaskStartedEvent is a generic, monitorable partybus event that occurs when a task has begun
	TaskStartedEvent partybus.EventType = typePrefix + "-task"
	// Events exclusively for the CLI

	// CLICheckCmdStarted is a partybus event that occurs when the check cli command has begun
	CLICheckCmdStarted partybus.EventType = cliTypePrefix + "-check-cmd-started"

	// CLIReport is a partybus event that occurs when the cli is ready to generate a report
	CLIReport partybus.EventType = cliTypePrefix + "-report"

	// CLINotification is a partybus event that occurs when auxiliary information is ready for presentation to stderr
	CLINotification partybus.EventType = cliTypePrefix + "-notification"
)
07070100000033000081A40000000000000000000000016896451000000738000000000000000000000000000000000000001D00000000grant-0.2.9/event/parsers.gopackage event

import (
	"fmt"

	"github.com/wagoodman/go-partybus"
	"github.com/wagoodman/go-progress"
)

type ErrBadPayload struct {
	Type  partybus.EventType
	Field string
	Value interface{}
}

func (e *ErrBadPayload) Error() string {
	return fmt.Sprintf("event='%s' has bad event payload field='%v': '%+v'", string(e.Type), e.Field, e.Value)
}

func newPayloadErr(t partybus.EventType, field string, value interface{}) error {
	return &ErrBadPayload{
		Type:  t,
		Field: field,
		Value: value,
	}
}

func checkEventType(actual, expected partybus.EventType) error {
	if actual != expected {
		return newPayloadErr(expected, "Type", actual)
	}
	return nil
}

func ParseTaskStarted(e partybus.Event) (*Task, progress.StagedProgressable, error) {
	if err := checkEventType(e.Type, TaskStartedEvent); err != nil {
		return nil, nil, err
	}

	cmd, ok := e.Source.(Task)
	if !ok {
		return nil, nil, newPayloadErr(e.Type, "Source", e.Source)
	}

	p, ok := e.Value.(progress.StagedProgressable)
	if !ok {
		return nil, nil, newPayloadErr(e.Type, "Value", e.Value)
	}

	return &cmd, p, nil
}

func ParseCLIReport(e partybus.Event) (string, string, error) {
	if err := checkEventType(e.Type, CLIReport); err != nil {
		return "", "", err
	}

	context, ok := e.Source.(string)
	if !ok {
		// this is optional
		context = ""
	}

	report, ok := e.Value.(string)
	if !ok {
		return "", "", newPayloadErr(e.Type, "Value", e.Value)
	}

	return context, report, nil
}

func ParseCLINotification(e partybus.Event) (string, string, error) {
	if err := checkEventType(e.Type, CLINotification); err != nil {
		return "", "", err
	}

	context, ok := e.Source.(string)
	if !ok {
		// this is optional
		context = ""
	}

	notification, ok := e.Value.(string)
	if !ok {
		return "", "", newPayloadErr(e.Type, "Value", e.Value)
	}

	return context, notification, nil
}
07070100000034000081A40000000000000000000000016896451000000128000000000000000000000000000000000000001A00000000grant-0.2.9/event/task.gopackage event

import "github.com/wagoodman/go-progress"

type Task struct {
	Title   Title
	Context string
}

type Title struct {
	Default      string
	WhileRunning string
	OnSuccess    string
	OnFail       string
}

type ManualStagedProgress struct {
	*progress.AtomicStage
	*progress.Manual
}
07070100000035000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001500000000grant-0.2.9/fixtures07070100000036000081A4000000000000000000000001689645100000EBC0000000000000000000000000000000000000002A00000000grant-0.2.9/fixtures/alpine.tagvalue.spdxSPDXVersion: SPDX-2.3
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: alpine
DocumentNamespace: https://anchore.com/syft/image/alpine-2e0e5850-a787-4602-8c28-b01e6e6084d6
LicenseListVersion: 3.22
Creator: Organization: Anchore, Inc
Creator: Tool: syft-0.97.0
Created: 2023-11-27T21:58:11Z

##### Unpackaged files

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-4a6a0840.rsa.pub-20cf9f534085e945
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-4a6a0840.rsa.pub-226fc2b8b6074102
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5243ef4b.rsa.pub-5d6524ee4773578a
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5243ef4b.rsa.pub-bbeee289b81a6de1
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-524d27bb.rsa.pub-e8cbb99b9dbeb702
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5261cecb.rsa.pub-87948a20075367f4
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5261cecb.rsa.pub-b39e246556a04c03
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58199dcc.rsa.pub-360e05c12ed554b6
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58cbb476.rsa.pub-d01a44792268e5f6
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58e4f17d.rsa.pub-c48d48e07e4c25b9
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5e69ca50.rsa.pub-90c0673ef43c9544
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-60ac2099.rsa.pub-f6a9952fe04a43cb
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-6165ee59.rsa.pub-2fa33bb12e442749
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-6165ee59.rsa.pub-307958a4bdf894b4
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-61666e3f.rsa.pub-8e66c869e0661398
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-61666e3f.rsa.pub-f5e77bd57361cd38
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616a9724.rsa.pub-0993a63e07e545a9
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616abc23.rsa.pub-84b5a3118c077c5a
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616ac3bc.rsa.pub-a434518c6ae434c2
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616adfeb.rsa.pub-c7135dd21091c6e8
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616ae350.rsa.pub-8fda3ed0d1961b6e
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub
SPDXID: SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616db30d.rsa.pub-6d2a56af87faa2c1
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /bin/busybox
SPDXID: SPDXRef-File-bin-busybox-e202ef7be7af94bd
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/busybox-paths.d/busybox
SPDXID: SPDXRef-File-etc-busybox-paths.d-busybox-a705ce53d9d4474d
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/crontabs/root
SPDXID: SPDXRef-File-etc-crontabs-root-9850dad7b8733f02
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/fstab
SPDXID: SPDXRef-File-etc-fstab-506f85b9b76b9930
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/group
SPDXID: SPDXRef-File-etc-group-2ac3006bd085faf9
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/hostname
SPDXID: SPDXRef-File-etc-hostname-41cef59949d5f5c8
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/hosts
SPDXID: SPDXRef-File-etc-hosts-2d9a8fa5e934baa8
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/inittab
SPDXID: SPDXRef-File-etc-inittab-f7231334aef4225c
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/logrotate.d/acpid
SPDXID: SPDXRef-File-etc-logrotate.d-acpid-9375f7051f97fba1
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/modprobe.d/aliases.conf
SPDXID: SPDXRef-File-etc-modprobe.d-aliases.conf-0159b9221b8998e2
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/modprobe.d/blacklist.conf
SPDXID: SPDXRef-File-etc-modprobe.d-blacklist.conf-8dca6592d27d8e79
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/modprobe.d/i386.conf
SPDXID: SPDXRef-File-etc-modprobe.d-i386.conf-18a59d24c6ecd1a2
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/modprobe.d/kms.conf
SPDXID: SPDXRef-File-etc-modprobe.d-kms.conf-1629ecb847e16269
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/modules
SPDXID: SPDXRef-File-etc-modules-1d478710c75b2a14
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/motd
SPDXID: SPDXRef-File-etc-motd-ab0a5b2efc0d83b6
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/network/if-up.d/dad
SPDXID: SPDXRef-File-etc-network-if-up.d-dad-0028f6f9cd570ecc
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/nsswitch.conf
SPDXID: SPDXRef-File-etc-nsswitch.conf-d357372a90ca7132
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/passwd
SPDXID: SPDXRef-File-etc-passwd-8d8f419d8f464088
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/profile
SPDXID: SPDXRef-File-etc-profile-588a0d6834114aba
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/profile.d/20locale.sh
SPDXID: SPDXRef-File-etc-profile.d-20locale.sh-32bb1cb0e72dea3f
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/profile.d/README
SPDXID: SPDXRef-File-etc-profile.d-README-be0ca5be9d9e0df6
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/profile.d/color_prompt.sh.disabled
SPDXID: SPDXRef-File-etc-profile.d-color-prompt.sh.disabled-a3ad33156b1b3289
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/protocols
SPDXID: SPDXRef-File-etc-protocols-b012ec88417e7d37
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/securetty
SPDXID: SPDXRef-File-etc-securetty-6da069df002af5fa
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/services
SPDXID: SPDXRef-File-etc-services-72c8d02c8efd8324
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/shadow
SPDXID: SPDXRef-File-etc-shadow-3c9a7deb1d0266b7
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/shells
SPDXID: SPDXRef-File-etc-shells-271c29cce586f3fc
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/ssl/certs/ca-certificates.crt
SPDXID: SPDXRef-File-etc-ssl-certs-ca-certificates.crt-4dfa0b7cc6ad42d7
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/ssl/ct_log_list.cnf
SPDXID: SPDXRef-File-etc-ssl-ct-log-list.cnf-c00cb9333b24c15d
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/ssl/ct_log_list.cnf.dist
SPDXID: SPDXRef-File-etc-ssl-ct-log-list.cnf.dist-54893d0879f9fc83
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/ssl/misc/CA.pl
SPDXID: SPDXRef-File-etc-ssl-misc-CA.pl-78284be2bba966f4
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/ssl/misc/tsget.pl
SPDXID: SPDXRef-File-etc-ssl-misc-tsget.pl-bfa68bd5a9a3a6b3
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/ssl/openssl.cnf
SPDXID: SPDXRef-File-etc-ssl-openssl.cnf-f8817538017cf529
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/ssl/openssl.cnf.dist
SPDXID: SPDXRef-File-etc-ssl-openssl.cnf.dist-e596e3053e9ec56f
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/sysctl.conf
SPDXID: SPDXRef-File-etc-sysctl.conf-734e42619a3909c3
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /etc/udhcpd.conf
SPDXID: SPDXRef-File-etc-udhcpd.conf-96c57c4a578011fc
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /lib/apk/db/installed
SPDXID: SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /lib/ld-musl-x86_64.so.1
SPDXID: SPDXRef-File-lib-ld-musl-x86-64.so.1-5ad847e8604b23e1
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /lib/libapk.so.2.14.0
SPDXID: SPDXRef-File-lib-libapk.so.2.14.0-129245a9da03e559
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /lib/libcrypto.so.3
SPDXID: SPDXRef-File-lib-libcrypto.so.3-cb26d83cd4c10f96
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /lib/libssl.so.3
SPDXID: SPDXRef-File-lib-libssl.so.3-7eb6eb3999549e5f
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /lib/libz.so.1.2.13
SPDXID: SPDXRef-File-lib-libz.so.1.2.13-0b003b776e515a4d
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /lib/sysctl.d/00-alpine.conf
SPDXID: SPDXRef-File-lib-sysctl.d-00-alpine.conf-a778fbf3d8e12100
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /sbin/apk
SPDXID: SPDXRef-File-sbin-apk-9b57c4594cbb1250
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /sbin/ldconfig
SPDXID: SPDXRef-File-sbin-ldconfig-f9eb672d705c4ffb
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/bin/getconf
SPDXID: SPDXRef-File-usr-bin-getconf-7cadf888d599b703
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/bin/getent
SPDXID: SPDXRef-File-usr-bin-getent-9c2b285b89b30224
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/bin/iconv
SPDXID: SPDXRef-File-usr-bin-iconv-7b57b994c8fad373
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/bin/ldd
SPDXID: SPDXRef-File-usr-bin-ldd-f96cd15718733827
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/bin/scanelf
SPDXID: SPDXRef-File-usr-bin-scanelf-fe66356749c377eb
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/bin/ssl_client
SPDXID: SPDXRef-File-usr-bin-ssl-client-193d485e3137505e
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/lib/engines-3/afalg.so
SPDXID: SPDXRef-File-usr-lib-engines-3-afalg.so-5aa1f569f30b12cf
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/lib/engines-3/capi.so
SPDXID: SPDXRef-File-usr-lib-engines-3-capi.so-9de259d9b03018b7
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/lib/engines-3/loader_attic.so
SPDXID: SPDXRef-File-usr-lib-engines-3-loader-attic.so-d359b4b95c6101c5
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/lib/engines-3/padlock.so
SPDXID: SPDXRef-File-usr-lib-engines-3-padlock.so-07d4d8d187bef761
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/lib/ossl-modules/legacy.so
SPDXID: SPDXRef-File-usr-lib-ossl-modules-legacy.so-8792d9f748c697b8
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

FileName: /usr/share/udhcpc/default.script
SPDXID: SPDXRef-File-usr-share-udhcpc-default.script-e751aa77624bdf12
FileChecksum: SHA1: 0000000000000000000000000000000000000000
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:cc2447e1835a40530975ab80bb1f872fbab0f2a0faecf2ab16fbbb89b3589438

##### Package: alpine

PackageName: alpine
SPDXID: SPDXRef-DocumentRoot-Image-alpine
PackageVersion: sha256:48d9183eb12a05c99bcc0bf44a003607b8e941e1d4f41f9ad12bdcc4b5672f86
PackageSupplier: NOASSERTION
PackageDownloadLocation: NOASSERTION
PrimaryPackagePurpose: CONTAINER
FilesAnalyzed: false
PackageChecksum: SHA256: 48d9183eb12a05c99bcc0bf44a003607b8e941e1d4f41f9ad12bdcc4b5672f86
ExternalRef: PACKAGE-MANAGER purl pkg:oci/alpine@sha256:48d9183eb12a05c99bcc0bf44a003607b8e941e1d4f41f9ad12bdcc4b5672f86?arch=amd64&tag=latest

##### Package: alpine-baselayout

PackageName: alpine-baselayout
SPDXID: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63
PackageVersion: 3.4.3-r1
PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageDownloadLocation: https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: GPL-2.0-only
PackageCopyrightText: NOASSERTION
PackageDescription: Alpine base dir structure and init scripts
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout:alpine-baselayout:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout:alpine_baselayout:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout:alpine-baselayout:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout:alpine_baselayout:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine-baselayout:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine_baselayout:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/alpine-baselayout@3.4.3-r1?arch=x86_64&distro=alpine-3.18.4

##### Package: alpine-baselayout-data

PackageName: alpine-baselayout-data
SPDXID: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c
PackageVersion: 3.4.3-r1
PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageDownloadLocation: https://git.alpinelinux.org/cgit/aports/tree/main/alpine-baselayout
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: GPL-2.0-only
PackageCopyrightText: NOASSERTION
PackageDescription: Alpine base dir structure and init scripts
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout-data:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout-data:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout_data:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout_data:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-baselayout:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_baselayout:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine-baselayout-data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine_baselayout_data:3.4.3-r1:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/alpine-baselayout-data@3.4.3-r1?arch=x86_64&upstream=alpine-baselayout&distro=alpine-3.18.4

##### Package: alpine-keys

PackageName: alpine-keys
SPDXID: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8
PackageVersion: 2.4-r1
PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageDownloadLocation: https://alpinelinux.org
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: MIT
PackageCopyrightText: NOASSERTION
PackageDescription: Public keys for Alpine Linux packages
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-keys:alpine-keys:2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine-keys:alpine_keys:2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_keys:alpine-keys:2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine_keys:alpine_keys:2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine-keys:2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:alpine:alpine_keys:2.4-r1:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/alpine-keys@2.4-r1?arch=x86_64&distro=alpine-3.18.4

##### Package: apk-tools

PackageName: apk-tools
SPDXID: SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e
PackageVersion: 2.14.0-r2
PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageDownloadLocation: https://gitlab.alpinelinux.org/alpine/apk-tools
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: GPL-2.0-only
PackageCopyrightText: NOASSERTION
PackageDescription: Alpine Package Keeper - package manager for alpine
ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk-tools:apk-tools:2.14.0-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk-tools:apk_tools:2.14.0-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk_tools:apk-tools:2.14.0-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk_tools:apk_tools:2.14.0-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk:apk-tools:2.14.0-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:apk:apk_tools:2.14.0-r2:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/apk-tools@2.14.0-r2?arch=x86_64&distro=alpine-3.18.4

##### Package: busybox-binsh

PackageName: busybox-binsh
SPDXID: SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca
PackageVersion: 1.36.1-r2
PackageSupplier: Person: Sören Tempel <soeren+alpine@soeren-tempel.net>
PackageOriginator: Person: Sören Tempel <soeren+alpine@soeren-tempel.net>
PackageDownloadLocation: https://busybox.net/
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: GPL-2.0-only
PackageCopyrightText: NOASSERTION
PackageDescription: busybox ash /bin/sh
ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox-binsh:busybox-binsh:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox-binsh:busybox_binsh:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox_binsh:busybox-binsh:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox_binsh:busybox_binsh:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox:busybox-binsh:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox:busybox_binsh:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/busybox-binsh@1.36.1-r2?arch=x86_64&upstream=busybox&distro=alpine-3.18.4

##### Package: busybox

PackageName: busybox
SPDXID: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5
PackageVersion: 1.36.1-r2
PackageSupplier: Person: Sören Tempel <soeren+alpine@soeren-tempel.net>
PackageOriginator: Person: Sören Tempel <soeren+alpine@soeren-tempel.net>
PackageDownloadLocation: https://busybox.net/
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: GPL-2.0-only
PackageCopyrightText: NOASSERTION
PackageDescription: Size optimized toolbox of many common UNIX utilities
ExternalRef: SECURITY cpe23Type cpe:2.3:a:busybox:busybox:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/busybox@1.36.1-r2?arch=x86_64&distro=alpine-3.18.4

##### Package: ca-certificates-bundle

PackageName: ca-certificates-bundle
SPDXID: SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55
PackageVersion: 20230506-r0
PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageDownloadLocation: https://www.mozilla.org/en-US/about/governance/policies/security-group/certs/
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: (MPL-2.0 AND MIT)
PackageCopyrightText: NOASSERTION
PackageDescription: Pre generated bundle of Mozilla certificates
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca-certificates-bundle:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca-certificates-bundle:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca_certificates_bundle:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca_certificates_bundle:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca-certificates:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca-certificates:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca_certificates:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca_certificates:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:mozilla:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:mozilla:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca:ca-certificates-bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ca:ca_certificates_bundle:20230506-r0:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/ca-certificates-bundle@20230506-r0?arch=x86_64&upstream=ca-certificates&distro=alpine-3.18.4

##### Package: libc-utils

PackageName: libc-utils
SPDXID: SPDXRef-Package-apk-libc-utils-caef79f1fe0b500a
PackageVersion: 0.7.2-r5
PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageDownloadLocation: https://alpinelinux.org
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: (BSD-2-Clause AND BSD-3-Clause)
PackageCopyrightText: NOASSERTION
PackageDescription: Meta package to pull in correct libc
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc-utils:libc-utils:0.7.2-r5:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc-utils:libc_utils:0.7.2-r5:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc_utils:libc-utils:0.7.2-r5:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc_utils:libc_utils:0.7.2-r5:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc:libc-utils:0.7.2-r5:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libc:libc_utils:0.7.2-r5:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/libc-utils@0.7.2-r5?arch=x86_64&upstream=libc-dev&distro=alpine-3.18.4

##### Package: libcrypto3

PackageName: libcrypto3
SPDXID: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9
PackageVersion: 3.1.3-r0
PackageSupplier: Person: Ariadne Conill <ariadne@dereferenced.org>
PackageOriginator: Person: Ariadne Conill <ariadne@dereferenced.org>
PackageDownloadLocation: https://www.openssl.org/
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: Apache-2.0
PackageCopyrightText: NOASSERTION
PackageDescription: Crypto library from openssl
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libcrypto3:libcrypto3:3.1.3-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libcrypto3:libcrypto:3.1.3-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libcrypto:libcrypto3:3.1.3-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libcrypto:libcrypto:3.1.3-r0:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/libcrypto3@3.1.3-r0?arch=x86_64&upstream=openssl&distro=alpine-3.18.4

##### Package: libssl3

PackageName: libssl3
SPDXID: SPDXRef-Package-apk-libssl3-68a3488610dc68e4
PackageVersion: 3.1.3-r0
PackageSupplier: Person: Ariadne Conill <ariadne@dereferenced.org>
PackageOriginator: Person: Ariadne Conill <ariadne@dereferenced.org>
PackageDownloadLocation: https://www.openssl.org/
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: Apache-2.0
PackageCopyrightText: NOASSERTION
PackageDescription: SSL shared libraries
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libssl3:libssl3:3.1.3-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libssl3:libssl:3.1.3-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libssl:libssl3:3.1.3-r0:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:libssl:libssl:3.1.3-r0:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/libssl3@3.1.3-r0?arch=x86_64&upstream=openssl&distro=alpine-3.18.4

##### Package: musl

PackageName: musl
SPDXID: SPDXRef-Package-apk-musl-cb940afce7c7e0d3
PackageVersion: 1.2.4-r1
PackageSupplier: Person: Timo Teräs <timo.teras@iki.fi>
PackageOriginator: Person: Timo Teräs <timo.teras@iki.fi>
PackageDownloadLocation: https://musl.libc.org/
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: MIT
PackageCopyrightText: NOASSERTION
PackageDescription: the musl c library (libc) implementation
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-libc:musl:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl_libc:musl:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl:musl:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/musl@1.2.4-r1?arch=x86_64&distro=alpine-3.18.4

##### Package: musl-utils

PackageName: musl-utils
SPDXID: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6
PackageVersion: 1.2.4-r1
PackageSupplier: Person: Timo Teräs <timo.teras@iki.fi>
PackageOriginator: Person: Timo Teräs <timo.teras@iki.fi>
PackageDownloadLocation: https://musl.libc.org/
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: (MIT AND BSD-2-Clause AND GPL-2.0-or-later)
PackageCopyrightText: NOASSERTION
PackageDescription: the musl c library (libc) implementation
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-utils:musl-utils:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-utils:musl_utils:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl_utils:musl-utils:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl_utils:musl_utils:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-libc:musl-utils:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl-libc:musl_utils:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl:musl-utils:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:musl:musl_utils:1.2.4-r1:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/musl-utils@1.2.4-r1?arch=x86_64&upstream=musl&distro=alpine-3.18.4

##### Package: scanelf

PackageName: scanelf
SPDXID: SPDXRef-Package-apk-scanelf-701300eef0967970
PackageVersion: 1.3.7-r1
PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageDownloadLocation: https://wiki.gentoo.org/wiki/Hardened/PaX_Utilities
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: GPL-2.0-only
PackageCopyrightText: NOASSERTION
PackageDescription: Scan ELF binaries for stuff
ExternalRef: SECURITY cpe23Type cpe:2.3:a:scanelf:scanelf:1.3.7-r1:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/scanelf@1.3.7-r1?arch=x86_64&upstream=pax-utils&distro=alpine-3.18.4

##### Package: ssl_client

PackageName: ssl_client
SPDXID: SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f
PackageVersion: 1.36.1-r2
PackageSupplier: Person: Sören Tempel <soeren+alpine@soeren-tempel.net>
PackageOriginator: Person: Sören Tempel <soeren+alpine@soeren-tempel.net>
PackageDownloadLocation: https://busybox.net/
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: GPL-2.0-only
PackageCopyrightText: NOASSERTION
PackageDescription: EXternal ssl_client for busybox wget
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl-client:ssl-client:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl-client:ssl_client:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl_client:ssl-client:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl_client:ssl_client:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl:ssl-client:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: SECURITY cpe23Type cpe:2.3:a:ssl:ssl_client:1.36.1-r2:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/ssl_client@1.36.1-r2?arch=x86_64&upstream=busybox&distro=alpine-3.18.4

##### Package: zlib

PackageName: zlib
SPDXID: SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc
PackageVersion: 1.2.13-r1
PackageSupplier: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageOriginator: Person: Natanael Copa <ncopa@alpinelinux.org>
PackageDownloadLocation: https://zlib.net/
FilesAnalyzed: false
PackageSourceInfo: acquired package info from APK DB: /lib/apk/db/installed
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: Zlib
PackageCopyrightText: NOASSERTION
PackageDescription: A compression/decompression Library
ExternalRef: SECURITY cpe23Type cpe:2.3:a:zlib:zlib:1.2.13-r1:*:*:*:*:*:*:*
ExternalRef: PACKAGE-MANAGER purl pkg:apk/alpine/zlib@1.2.13-r1?arch=x86_64&distro=alpine-3.18.4

##### Relationships

Relationship: SPDXRef-Package-apk-libssl3-68a3488610dc68e4 CONTAINS SPDXRef-File-lib-libssl.so.3-7eb6eb3999549e5f
Relationship: SPDXRef-Package-apk-libssl3-68a3488610dc68e4 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-libssl3-68a3488610dc68e4 DEPENDENCY_OF SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f
Relationship: SPDXRef-Package-apk-libssl3-68a3488610dc68e4 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e
Relationship: SPDXRef-Package-apk-scanelf-701300eef0967970 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-scanelf-701300eef0967970 DEPENDENCY_OF SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6
Relationship: SPDXRef-Package-apk-scanelf-701300eef0967970 CONTAINS SPDXRef-File-usr-bin-scanelf-fe66356749c377eb
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-modules-1d478710c75b2a14
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-shells-271c29cce586f3fc
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-group-2ac3006bd085faf9
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-hosts-2d9a8fa5e934baa8
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-shadow-3c9a7deb1d0266b7
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-hostname-41cef59949d5f5c8
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-fstab-506f85b9b76b9930
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-profile-588a0d6834114aba
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-services-72c8d02c8efd8324
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-sysctl.conf-734e42619a3909c3
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-passwd-8d8f419d8f464088
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-protocols-b012ec88417e7d37
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c DEPENDENCY_OF SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-nsswitch.conf-d357372a90ca7132
Relationship: SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c CONTAINS SPDXRef-File-etc-inittab-f7231334aef4225c
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-engines-3-padlock.so-07d4d8d187bef761
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-ct-log-list.cnf.dist-54893d0879f9fc83
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-engines-3-afalg.so-5aa1f569f30b12cf
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 DEPENDENCY_OF SPDXRef-Package-apk-libssl3-68a3488610dc68e4
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-misc-CA.pl-78284be2bba966f4
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-ossl-modules-legacy.so-8792d9f748c697b8
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-engines-3-capi.so-9de259d9b03018b7
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 DEPENDENCY_OF SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-misc-tsget.pl-bfa68bd5a9a3a6b3
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-ct-log-list.cnf-c00cb9333b24c15d
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-lib-libcrypto.so.3-cb26d83cd4c10f96
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-usr-lib-engines-3-loader-attic.so-d359b4b95c6101c5
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-openssl.cnf.dist-e596e3053e9ec56f
Relationship: SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9 CONTAINS SPDXRef-File-etc-ssl-openssl.cnf-f8817538017cf529
Relationship: SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca DEPENDENCY_OF SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63
Relationship: SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca CONTAINS SPDXRef-File-bin-busybox-e202ef7be7af94bd
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-modprobe.d-aliases.conf-0159b9221b8998e2
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-modprobe.d-kms.conf-1629ecb847e16269
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-modprobe.d-i386.conf-18a59d24c6ecd1a2
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-profile.d-20locale.sh-32bb1cb0e72dea3f
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-modprobe.d-blacklist.conf-8dca6592d27d8e79
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-crontabs-root-9850dad7b8733f02
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-profile.d-color-prompt.sh.disabled-a3ad33156b1b3289
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-lib-sysctl.d-00-alpine.conf-a778fbf3d8e12100
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-motd-ab0a5b2efc0d83b6
Relationship: SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63 CONTAINS SPDXRef-File-etc-profile.d-README-be0ca5be9d9e0df6
Relationship: SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f CONTAINS SPDXRef-File-usr-bin-ssl-client-193d485e3137505e
Relationship: SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616a9724.rsa.pub-0993a63e07e545a9
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-4a6a0840.rsa.pub-20cf9f534085e945
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-4a6a0840.rsa.pub-226fc2b8b6074102
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-6165ee59.rsa.pub-2fa33bb12e442749
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-6165ee59.rsa.pub-307958a4bdf894b4
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58199dcc.rsa.pub-360e05c12ed554b6
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5243ef4b.rsa.pub-5d6524ee4773578a
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616db30d.rsa.pub-6d2a56af87faa2c1
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616abc23.rsa.pub-84b5a3118c077c5a
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5261cecb.rsa.pub-87948a20075367f4
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-61666e3f.rsa.pub-8e66c869e0661398
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616ae350.rsa.pub-8fda3ed0d1961b6e
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5e69ca50.rsa.pub-90c0673ef43c9544
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616ac3bc.rsa.pub-a434518c6ae434c2
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5261cecb.rsa.pub-b39e246556a04c03
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-5243ef4b.rsa.pub-bbeee289b81a6de1
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58e4f17d.rsa.pub-c48d48e07e4c25b9
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-616adfeb.rsa.pub-c7135dd21091c6e8
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-58cbb476.rsa.pub-d01a44792268e5f6
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-524d27bb.rsa.pub-e8cbb99b9dbeb702
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-61666e3f.rsa.pub-f5e77bd57361cd38
Relationship: SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8 CONTAINS SPDXRef-File-...alpine-devel-lists.alpinelinux.org-60ac2099.rsa.pub-f6a9952fe04a43cb
Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-network-if-up.d-dad-0028f6f9cd570ecc
Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-securetty-6da069df002af5fa
Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-logrotate.d-acpid-9375f7051f97fba1
Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-udhcpd.conf-96c57c4a578011fc
Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-etc-busybox-paths.d-busybox-a705ce53d9d4474d
Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 DEPENDENCY_OF SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca
Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-bin-busybox-e202ef7be7af94bd
Relationship: SPDXRef-Package-apk-busybox-c4df3b964f3b98b5 CONTAINS SPDXRef-File-usr-share-udhcpc-default.script-e751aa77624bdf12
Relationship: SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc CONTAINS SPDXRef-File-lib-libz.so.1.2.13-0b003b776e515a4d
Relationship: SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e
Relationship: SPDXRef-Package-apk-libc-utils-caef79f1fe0b500a OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 CONTAINS SPDXRef-File-lib-ld-musl-x86-64.so.1-5ad847e8604b23e1
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-libssl3-68a3488610dc68e4
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-scanelf-701300eef0967970
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-busybox-c4df3b964f3b98b5
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e
Relationship: SPDXRef-Package-apk-musl-cb940afce7c7e0d3 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e
Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-usr-bin-iconv-7b57b994c8fad373
Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-usr-bin-getconf-7cadf888d599b703
Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-usr-bin-getent-9c2b285b89b30224
Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 DEPENDENCY_OF SPDXRef-Package-apk-libc-utils-caef79f1fe0b500a
Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-usr-bin-ldd-f96cd15718733827
Relationship: SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6 CONTAINS SPDXRef-File-sbin-ldconfig-f9eb672d705c4ffb
Relationship: SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e CONTAINS SPDXRef-File-lib-libapk.so.2.14.0-129245a9da03e559
Relationship: SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e CONTAINS SPDXRef-File-sbin-apk-9b57c4594cbb1250
Relationship: SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55 CONTAINS SPDXRef-File-etc-ssl-certs-ca-certificates.crt-4dfa0b7cc6ad42d7
Relationship: SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55 OTHER SPDXRef-File-lib-apk-db-installed-a01260b4bb11b576
RelationshipComment: evident-by: indicates the package's existence is evident by the given file
Relationship: SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55 DEPENDENCY_OF SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-alpine-baselayout-baca676b3df82a63
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-alpine-baselayout-data-85e34641ddeca26c
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-alpine-keys-c3e1269ff75aa1d8
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-apk-tools-e54b9e6921a9482e
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-busybox-c4df3b964f3b98b5
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-busybox-binsh-b8384340b5c5b8ca
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-ca-certificates-bundle-e6d1b63d5a046c55
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-libc-utils-caef79f1fe0b500a
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-libcrypto3-99fa7f052e54ddb9
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-libssl3-68a3488610dc68e4
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-musl-cb940afce7c7e0d3
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-musl-utils-d4ae8261cf0671f6
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-scanelf-701300eef0967970
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-ssl-client-bdbab9ee97709e2f
Relationship: SPDXRef-DocumentRoot-Image-alpine CONTAINS SPDXRef-Package-apk-zlib-c8e7fc9f117e52bc
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-DocumentRoot-Image-alpine
07070100000037000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000002400000000grant-0.2.9/fixtures/archive-builds07070100000038000081A4000000000000000000000001689645100000005B000000000000000000000000000000000000002F00000000grant-0.2.9/fixtures/archive-builds/.gitignore/packages/*

# maven when running in a volume may spit out directories like this
**/\?/
\?/07070100000039000081A400000000000000000000000168964510000001F9000000000000000000000000000000000000002D00000000grant-0.2.9/fixtures/archive-builds/MakefilePKGSDIR=packages

ifndef PKGSDIR
    $(error PKGSDIR is not set)
endif

clean: clean-examples
	rm -f $(PKGSDIR)/*

jars: $(PKGSDIR)/example-java-app-maven-0.1.0.jar

archives: $(PKGSDIR)/example-java-app-maven-0.1.0.zip

$(PKGSDIR)/example-java-app-maven-0.1.0.zip: $(PKGSDIR)/example-java-app-maven-0.1.0.jar
	zip $(PKGSDIR)/example-java-app-maven-0.1.0.zip $(PKGSDIR)/example-java-app-maven-0.1.0.jar

# Maven...
$(PKGSDIR)/example-java-app-maven-0.1.0.jar:
	./build-example-java-app-maven.sh $(PKGSDIR)0707010000003A000081ED00000000000000000000000168964510000001DD000000000000000000000000000000000000004400000000grant-0.2.9/fixtures/archive-builds/build-example-java-app-maven.sh#!/usr/bin/env bash
set -uxe

PKGSDIR=$1
CTRID=$(docker create -u "$(id -u):$(id -g)" -e MAVEN_CONFIG=/tmp/.m2 -v /example-java-app -w /example-java-app maven:3.8.6-openjdk-18 mvn -Duser.home=/tmp -DskipTests package)

function cleanup() {
  docker rm "${CTRID}"
}

trap cleanup EXIT
set +e

docker cp "$(pwd)/example-java-app" "${CTRID}:/"
docker start -a "${CTRID}"
mkdir -p "$PKGSDIR"
docker cp "${CTRID}:/example-java-app/target/example-java-app-maven-0.1.0.jar" "$PKGSDIR"0707010000003B000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000003500000000grant-0.2.9/fixtures/archive-builds/example-java-app0707010000003C000081A4000000000000000000000001689645100000006F000000000000000000000000000000000000004000000000grant-0.2.9/fixtures/archive-builds/example-java-app/.gitignore# maven build creates this when in a container volume
/?/
/.gradle/
/build/
target/
dependency-reduced-pom.xml
0707010000003D000081A400000000000000000000000168964510000004CA000000000000000000000000000000000000004200000000grant-0.2.9/fixtures/archive-builds/example-java-app/build.gradleplugins {
    id 'java'
    id 'eclipse'
    id 'application'
}

mainClassName = 'hello.HelloWorld'

dependencyLocking {
    lockAllConfigurations()
}
// tag::repositories[]
repositories {
    mavenCentral()
}
// end::repositories[]

// tag::dependencies[]
sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    implementation "joda-time:joda-time:2.2"
    testImplementation "junit:junit:4.12"
}
// end::dependencies[]

// tag::jar[]
jar {
    archivesBaseName = 'example-java-app-gradle'
    version =  '0.1.0'
    manifest {
        attributes(
        'Main-Class': 'hello.HelloWorld'
        )
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}
// end::jar[]

// tag::wrapper[]
// end::wrapper[]

// to invoke: gradle resolveAndLockAll --write-locks
tasks.register('resolveAndLockAll') {
    notCompatibleWithConfigurationCache("Filters configurations at execution time")
    doFirst {
        assert gradle.startParameter.writeDependencyLocks
    }
    doLast {
        configurations.findAll {
            // Add any custom filtering on the configurations to be resolved
            it.canBeResolved
        }.each { it.resolve() }
    }
}
0707010000003E000081A400000000000000000000000168964510000001C2000000000000000000000000000000000000004500000000grant-0.2.9/fixtures/archive-builds/example-java-app/gradle.lockfile# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
joda-time:joda-time:2.2=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath
junit:junit:4.12=testCompileClasspath,testRuntimeClasspath
org.hamcrest:hamcrest-core:1.3=testCompileClasspath,testRuntimeClasspath
empty=annotationProcessor,testAnnotationProcessor
0707010000003F000081A4000000000000000000000001689645100000062E000000000000000000000000000000000000003D00000000grant-0.2.9/fixtures/archive-builds/example-java-app/pom.xml<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.anchore</groupId>
	<artifactId>example-java-app-maven</artifactId>
	<packaging>jar</packaging>
	<version>0.1.0</version>

	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>

	<dependencies>
		<!-- tag::joda[] -->
		<dependency>
			<groupId>joda-time</groupId>
			<artifactId>joda-time</artifactId>
			<version>2.9.2</version>
		</dependency>
		<!-- end::joda[] -->
		<!-- tag::junit[] -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<!-- end::junit[] -->
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-shade-plugin</artifactId>
				<version>2.1</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>shade</goal>
						</goals>
						<configuration>
							<transformers>
								<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
									<mainClass>hello.HelloWorld</mainClass>
								</transformer>
							</transformers>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

</project>
07070100000040000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000003900000000grant-0.2.9/fixtures/archive-builds/example-java-app/src07070100000041000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000003E00000000grant-0.2.9/fixtures/archive-builds/example-java-app/src/main07070100000042000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000004300000000grant-0.2.9/fixtures/archive-builds/example-java-app/src/main/java07070100000043000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000004900000000grant-0.2.9/fixtures/archive-builds/example-java-app/src/main/java/hello07070100000044000081A40000000000000000000000016896451000000061000000000000000000000000000000000000005600000000grant-0.2.9/fixtures/archive-builds/example-java-app/src/main/java/hello/Greeter.javapackage hello;

public class Greeter {
	public String sayHello() {
		return "Hello world!";
	}
}
07070100000045000081A40000000000000000000000016896451000000136000000000000000000000000000000000000005900000000grant-0.2.9/fixtures/archive-builds/example-java-app/src/main/java/hello/HelloWorld.javapackage hello;

import org.joda.time.LocalTime;

public class HelloWorld {
	public static void main(String[] args) {
		LocalTime currentTime = new LocalTime();
		System.out.println("The current local time is: " + currentTime);

		Greeter greeter = new Greeter();
		System.out.println(greeter.sayHello());
	}
}
07070100000046000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001E00000000grant-0.2.9/fixtures/licenses07070100000047000081A4000000000000000000000001689645100000042B000000000000000000000000000000000000002200000000grant-0.2.9/fixtures/licenses/MITCopyright <YEAR> <COPYRIGHT HOLDER>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.07070100000048000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001E00000000grant-0.2.9/fixtures/multiple07070100000049000081A4000000000000000000000001689645100000863E000000000000000000000000000000000000002200000000grant-0.2.9/fixtures/multiple/gplGNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007

Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Preamble

The GNU General Public License is a free, copyleft license for software and other kinds of works.

The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.

To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.

For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.

Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.

Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS

0. Definitions.
"This License" refers to version 3 of the GNU General Public License.

"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.

"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations.

To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work.

A "covered work" means either the unmodified Program or a work based on the Program.

To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.

1. Source Code.
The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work.
A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.

The Corresponding Source for a work in source code form is that same work.

2. Basic Permissions.
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.

3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.

4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.

5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices".
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.

6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.

A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.

"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.

If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).

The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.

Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.

7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.

Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:

a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.

If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.

Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

8. Termination.
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).
However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.

9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work classifierResults from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

11. Patents.
A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.

Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.

In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.

If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.

If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.

A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.

Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.

12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.

If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.

Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.

15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:

<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box".

You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <https://www.gnu.org/licenses/>.

The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <https: //www.gnu.org/licenses/why-not-lgpl.html>.0707010000004A000081A4000000000000000000000001689645100000371F000000000000000000000000000000000000001300000000grant-0.2.9/go.modmodule github.com/anchore/grant

go 1.24.2

require (
	github.com/anchore/bubbly v0.0.0-20231115205105-6542675d79fe
	github.com/anchore/clio v0.0.0-20250319180342-2cfe4b0cb716
	github.com/anchore/go-collections v0.0.0-20240216171411-9321230ce537
	github.com/anchore/go-logger v0.0.0-20250318195838-07ae343dd722
	github.com/anchore/stereoscope v0.1.8
	github.com/anchore/syft v1.30.0
	github.com/charmbracelet/bubbletea v1.3.6
	github.com/charmbracelet/lipgloss v1.1.0
	github.com/github/go-spdx/v2 v2.3.3
	github.com/gkampitakis/go-snaps v0.5.14
	github.com/gobwas/glob v0.2.3
	github.com/google/go-cmp v0.7.0
	github.com/google/licenseclassifier/v2 v2.0.0
	github.com/google/uuid v1.6.0
	github.com/gookit/color v1.5.4
	github.com/hashicorp/go-multierror v1.1.1
	github.com/jedib0t/go-pretty/v6 v6.6.8
	github.com/mitchellh/go-homedir v1.1.0
	github.com/pkg/errors v0.9.1
	github.com/spf13/cobra v1.9.1
	github.com/stretchr/testify v1.10.0
	github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651
	github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0
)

require (
	cloud.google.com/go v0.116.0 // indirect
	cloud.google.com/go/auth v0.9.9 // indirect
	cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect
	cloud.google.com/go/compute/metadata v0.7.0 // indirect
	cloud.google.com/go/iam v1.2.2 // indirect
	cloud.google.com/go/storage v1.43.0 // indirect
	dario.cat/mergo v1.0.1 // indirect
	github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
	github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 // indirect
	github.com/BurntSushi/toml v1.5.0 // indirect
	github.com/CycloneDX/cyclonedx-go v0.9.2 // indirect
	github.com/DataDog/zstd v1.5.5 // indirect
	github.com/Masterminds/goutils v1.1.1 // indirect
	github.com/Masterminds/semver/v3 v3.4.0 // indirect
	github.com/Masterminds/sprig/v3 v3.3.0 // indirect
	github.com/Microsoft/go-winio v0.6.2 // indirect
	github.com/Microsoft/hcsshim v0.11.7 // indirect
	github.com/OneOfOne/xxhash v1.2.8 // indirect
	github.com/ProtonMail/go-crypto v1.2.0 // indirect
	github.com/STARRY-S/zip v0.2.1 // indirect
	github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect
	github.com/acobaugh/osrelease v0.1.0 // indirect
	github.com/adrg/xdg v0.5.3 // indirect
	github.com/agext/levenshtein v1.2.1 // indirect
	github.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51 // indirect
	github.com/anchore/fangs v0.0.0-20250319222917-446a1e748ec2 // indirect
	github.com/anchore/go-homedir v0.0.0-20250319154043-c29668562e4d // indirect
	github.com/anchore/go-lzo v0.1.0 // indirect
	github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb // indirect
	github.com/anchore/go-rpmdb v0.0.0-20250516171929-f77691e1faec // indirect
	github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect
	github.com/anchore/go-sync v0.0.0-20250326131806-4eda43a485b6 // indirect
	github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b // indirect
	github.com/anchore/packageurl-go v0.1.1-0.20250220190351-d62adb6e1115 // indirect
	github.com/andybalholm/brotli v1.1.2-0.20250424173009-453214e765f3 // indirect
	github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
	github.com/aquasecurity/go-pep440-version v0.0.1 // indirect
	github.com/aquasecurity/go-version v0.0.1 // indirect
	github.com/aws/aws-sdk-go v1.44.122 // indirect
	github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
	github.com/becheran/wildmatch-go v1.0.0 // indirect
	github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
	github.com/bitnami/go-version v0.0.0-20250131085805-b1f57a8634ef // indirect
	github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb // indirect
	github.com/bmatcuk/doublestar/v4 v4.9.1 // indirect
	github.com/bodgit/plumbing v1.3.0 // indirect
	github.com/bodgit/sevenzip v1.6.0 // indirect
	github.com/bodgit/windows v1.0.1 // indirect
	github.com/charmbracelet/bubbles v0.21.0 // indirect
	github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
	github.com/charmbracelet/harmonica v0.2.0 // indirect
	github.com/charmbracelet/x/ansi v0.9.3 // indirect
	github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
	github.com/charmbracelet/x/term v0.2.1 // indirect
	github.com/cloudflare/circl v1.6.1 // indirect
	github.com/containerd/cgroups v1.1.0 // indirect
	github.com/containerd/containerd v1.7.27 // indirect
	github.com/containerd/containerd/api v1.8.0 // indirect
	github.com/containerd/continuity v0.4.4 // indirect
	github.com/containerd/errdefs v1.0.0 // indirect
	github.com/containerd/errdefs/pkg v0.3.0 // indirect
	github.com/containerd/fifo v1.1.0 // indirect
	github.com/containerd/log v0.1.0 // indirect
	github.com/containerd/platforms v0.2.1 // indirect
	github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect
	github.com/containerd/ttrpc v1.2.7 // indirect
	github.com/containerd/typeurl/v2 v2.2.0 // indirect
	github.com/cyphar/filepath-securejoin v0.4.1 // indirect
	github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
	github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da // indirect
	github.com/diskfs/go-diskfs v1.6.1-0.20250601133945-2af1c7ece24c // indirect
	github.com/distribution/reference v0.6.0 // indirect
	github.com/docker/cli v28.3.2+incompatible // indirect
	github.com/docker/distribution v2.8.3+incompatible // indirect
	github.com/docker/docker v28.3.3+incompatible // indirect
	github.com/docker/docker-credential-helpers v0.9.3 // indirect
	github.com/docker/go-connections v0.5.0 // indirect
	github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect
	github.com/docker/go-units v0.5.0 // indirect
	github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
	github.com/dustin/go-humanize v1.0.1 // indirect
	github.com/elliotchance/phpserialize v1.4.0 // indirect
	github.com/emirpasic/gods v1.18.1 // indirect
	github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
	github.com/facebookincubator/nvdtools v0.1.5 // indirect
	github.com/fatih/color v1.17.0 // indirect
	github.com/felixge/fgprof v0.9.5 // indirect
	github.com/felixge/httpsnoop v1.0.4 // indirect
	github.com/fsnotify/fsnotify v1.8.0 // indirect
	github.com/gabriel-vasile/mimetype v1.4.9 // indirect
	github.com/gkampitakis/ciinfo v0.3.2 // indirect
	github.com/gkampitakis/go-diff v1.3.2 // indirect
	github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
	github.com/go-git/go-billy/v5 v5.6.2 // indirect
	github.com/go-git/go-git/v5 v5.16.2 // indirect
	github.com/go-logr/logr v1.4.3 // indirect
	github.com/go-logr/stdr v1.2.2 // indirect
	github.com/go-restruct/restruct v1.2.0-alpha // indirect
	github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
	github.com/goccy/go-yaml v1.18.0 // indirect
	github.com/gogo/protobuf v1.3.2 // indirect
	github.com/gohugoio/hashstructure v0.5.0 // indirect
	github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
	github.com/golang/snappy v0.0.4 // indirect
	github.com/google/go-containerregistry v0.20.6 // indirect
	github.com/google/licensecheck v0.3.1 // indirect
	github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e // indirect
	github.com/google/s2a-go v0.1.8 // indirect
	github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
	github.com/googleapis/gax-go/v2 v2.13.0 // indirect
	github.com/hashicorp/errwrap v1.1.0 // indirect
	github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
	github.com/hashicorp/go-getter v1.7.8 // indirect
	github.com/hashicorp/go-safetemp v1.0.0 // indirect
	github.com/hashicorp/go-version v1.6.0 // indirect
	github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
	github.com/hashicorp/hcl/v2 v2.24.0 // indirect
	github.com/huandu/xstrings v1.5.0 // indirect
	github.com/iancoleman/strcase v0.3.0 // indirect
	github.com/inconshreveable/mousetrap v1.1.0 // indirect
	github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
	github.com/jinzhu/copier v0.4.0 // indirect
	github.com/jmespath/go-jmespath v0.4.0 // indirect
	github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953 // indirect
	github.com/kevinburke/ssh_config v1.2.0 // indirect
	github.com/klauspost/compress v1.18.0 // indirect
	github.com/klauspost/pgzip v1.2.6 // indirect
	github.com/kr/pretty v0.3.1 // indirect
	github.com/kr/text v0.2.0 // indirect
	github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
	github.com/maruel/natural v1.1.1 // indirect
	github.com/mattn/go-colorable v0.1.13 // indirect
	github.com/mattn/go-isatty v0.0.20 // indirect
	github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 // indirect
	github.com/mattn/go-runewidth v0.0.16 // indirect
	github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
	github.com/mholt/archives v0.1.3 // indirect
	github.com/mikelolasagasti/xz v1.0.1 // indirect
	github.com/minio/minlz v1.0.0 // indirect
	github.com/mitchellh/copystructure v1.2.0 // indirect
	github.com/mitchellh/go-testing-interface v1.14.1 // indirect
	github.com/mitchellh/go-wordwrap v1.0.1 // indirect
	github.com/mitchellh/reflectwalk v1.0.2 // indirect
	github.com/moby/docker-image-spec v1.3.1 // indirect
	github.com/moby/locker v1.0.1 // indirect
	github.com/moby/sys/mountinfo v0.7.2 // indirect
	github.com/moby/sys/sequential v0.6.0 // indirect
	github.com/moby/sys/signal v0.7.0 // indirect
	github.com/moby/sys/user v0.3.0 // indirect
	github.com/moby/sys/userns v0.1.0 // indirect
	github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
	github.com/muesli/cancelreader v0.2.2 // indirect
	github.com/muesli/termenv v0.16.0 // indirect
	github.com/nix-community/go-nix v0.0.0-20250101154619-4bdde671e0a1 // indirect
	github.com/nwaples/rardecode v1.1.3 // indirect
	github.com/nwaples/rardecode/v2 v2.1.0 // indirect
	github.com/olekukonko/errors v1.1.0 // indirect
	github.com/olekukonko/ll v0.0.9 // indirect
	github.com/olekukonko/tablewriter v1.0.9 // indirect
	github.com/opencontainers/go-digest v1.0.0 // indirect
	github.com/opencontainers/image-spec v1.1.1 // indirect
	github.com/opencontainers/runtime-spec v1.1.0 // indirect
	github.com/opencontainers/selinux v1.11.0 // indirect
	github.com/pborman/indent v1.2.1 // indirect
	github.com/pelletier/go-toml v1.9.5 // indirect
	github.com/pelletier/go-toml/v2 v2.2.3 // indirect
	github.com/pierrec/lz4/v4 v4.1.22 // indirect
	github.com/pjbgf/sha1cd v0.3.2 // indirect
	github.com/pkg/profile v1.7.0 // indirect
	github.com/pkg/xattr v0.4.9 // indirect
	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
	github.com/rivo/uniseg v0.4.7 // indirect
	github.com/rogpeppe/go-internal v1.14.1 // indirect
	github.com/rust-secure-code/go-rustaudit v0.0.0-20250226111315-e20ec32e963c // indirect
	github.com/sagikazarmark/locafero v0.7.0 // indirect
	github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d // indirect
	github.com/sassoftware/go-rpmutils v0.4.0 // indirect
	github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e // indirect
	github.com/sergi/go-diff v1.4.0 // indirect
	github.com/shopspring/decimal v1.4.0 // indirect
	github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af // indirect
	github.com/skeema/knownhosts v1.3.1 // indirect
	github.com/sorairolake/lzip-go v0.3.5 // indirect
	github.com/sourcegraph/conc v0.3.0 // indirect
	github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb // indirect
	github.com/spdx/tools-golang v0.5.5 // indirect
	github.com/spf13/afero v1.14.0 // indirect
	github.com/spf13/cast v1.7.1 // indirect
	github.com/spf13/pflag v1.0.6 // indirect
	github.com/spf13/viper v1.20.0 // indirect
	github.com/subosito/gotenv v1.6.0 // indirect
	github.com/sylabs/sif/v2 v2.21.1 // indirect
	github.com/sylabs/squashfs v1.0.6 // indirect
	github.com/therootcompany/xz v1.0.1 // indirect
	github.com/tidwall/gjson v1.18.0 // indirect
	github.com/tidwall/match v1.1.1 // indirect
	github.com/tidwall/pretty v1.2.1 // indirect
	github.com/tidwall/sjson v1.2.5 // indirect
	github.com/ulikunitz/xz v0.5.12 // indirect
	github.com/vbatts/go-mtree v0.5.4 // indirect
	github.com/vbatts/tar-split v0.12.1 // indirect
	github.com/vifraa/gopom v1.0.0 // indirect
	github.com/xanzy/ssh-agent v0.3.3 // indirect
	github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
	github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
	github.com/zclconf/go-cty v1.16.3 // indirect
	go.opencensus.io v0.24.0 // indirect
	go.opentelemetry.io/auto/sdk v1.1.0 // indirect
	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
	go.opentelemetry.io/otel v1.36.0 // indirect
	go.opentelemetry.io/otel/metric v1.36.0 // indirect
	go.opentelemetry.io/otel/trace v1.36.0 // indirect
	go.uber.org/atomic v1.9.0 // indirect
	go.uber.org/multierr v1.9.0 // indirect
	go4.org v0.0.0-20230225012048-214862532bf5 // indirect
	golang.org/x/crypto v0.41.0 // indirect
	golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect
	golang.org/x/mod v0.27.0 // indirect
	golang.org/x/net v0.43.0 // indirect
	golang.org/x/oauth2 v0.30.0 // indirect
	golang.org/x/sync v0.16.0 // indirect
	golang.org/x/sys v0.35.0 // indirect
	golang.org/x/term v0.34.0 // indirect
	golang.org/x/text v0.28.0 // indirect
	golang.org/x/time v0.7.0 // indirect
	golang.org/x/tools v0.35.0 // indirect
	golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
	google.golang.org/api v0.203.0 // indirect
	google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect
	google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f // indirect
	google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 // indirect
	google.golang.org/grpc v1.67.3 // indirect
	google.golang.org/protobuf v1.36.4 // indirect
	gopkg.in/warnings.v0 v0.1.2 // indirect
	gopkg.in/yaml.v3 v3.0.1 // indirect
)
0707010000004B000081A40000000000000000000000016896451000038C1F000000000000000000000000000000000000001300000000grant-0.2.9/go.sumcloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI=
cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk=
cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY=
cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg=
cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8=
cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0=
cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY=
cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM=
cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY=
cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ=
cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI=
cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4=
cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc=
cloud.google.com/go v0.98.0/go.mod h1:ua6Ush4NALrHk5QXDWnjvZHN93OuF0HfuEPq9I1X0cM=
cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA=
cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U=
cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM=
cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I=
cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY=
cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE=
cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U=
cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4=
cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw=
cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E=
cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o=
cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE=
cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM=
cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ=
cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw=
cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY=
cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg=
cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ=
cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k=
cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw=
cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI=
cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4=
cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M=
cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE=
cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE=
cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk=
cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc=
cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8=
cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc=
cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04=
cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8=
cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY=
cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM=
cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc=
cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU=
cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI=
cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8=
cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno=
cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak=
cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84=
cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A=
cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E=
cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4=
cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0=
cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY=
cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k=
cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ=
cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk=
cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0=
cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc=
cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI=
cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ=
cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI=
cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08=
cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o=
cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s=
cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0=
cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ=
cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY=
cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo=
cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg=
cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw=
cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY=
cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw=
cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI=
cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo=
cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0=
cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E=
cloud.google.com/go/auth v0.9.9 h1:BmtbpNQozo8ZwW2t7QJjnrQtdganSdmqeIBxHxNkEZQ=
cloud.google.com/go/auth v0.9.9/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI=
cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY=
cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc=
cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0=
cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8=
cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8=
cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM=
cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU=
cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc=
cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI=
cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss=
cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE=
cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE=
cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g=
cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4=
cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8=
cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM=
cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA=
cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw=
cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc=
cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E=
cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac=
cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q=
cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU=
cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY=
cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s=
cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI=
cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y=
cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss=
cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc=
cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM=
cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI=
cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0=
cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk=
cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q=
cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg=
cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590=
cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8=
cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk=
cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk=
cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE=
cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU=
cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U=
cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA=
cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M=
cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg=
cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s=
cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM=
cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk=
cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA=
cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY=
cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI=
cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4=
cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI=
cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y=
cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs=
cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=
cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM=
cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M=
cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s=
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU=
cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU=
cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE=
cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo=
cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA=
cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs=
cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU=
cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE=
cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU=
cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM=
cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA=
cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU=
cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo=
cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY=
cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck=
cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w=
cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg=
cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo=
cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4=
cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM=
cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA=
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI=
cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s=
cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs=
cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc=
cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE=
cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM=
cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M=
cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0=
cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8=
cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM=
cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ=
cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE=
cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo=
cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE=
cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0=
cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA=
cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE=
cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38=
cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w=
cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8=
cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I=
cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ=
cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM=
cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA=
cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A=
cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ=
cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs=
cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s=
cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI=
cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4=
cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo=
cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA=
cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM=
cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c=
cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo=
cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ=
cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g=
cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4=
cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs=
cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww=
cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c=
cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s=
cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI=
cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ=
cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4=
cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0=
cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8=
cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek=
cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0=
cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM=
cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4=
cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE=
cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM=
cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q=
cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4=
cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU=
cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU=
cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k=
cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4=
cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM=
cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs=
cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y=
cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg=
cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE=
cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk=
cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w=
cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc=
cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY=
cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU=
cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI=
cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8=
cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M=
cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc=
cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw=
cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw=
cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY=
cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w=
cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI=
cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs=
cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg=
cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY=
cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE=
cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk=
cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg=
cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY=
cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08=
cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw=
cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA=
cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c=
cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM=
cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA=
cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w=
cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM=
cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0=
cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60=
cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo=
cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg=
cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o=
cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A=
cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw=
cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0=
cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0=
cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E=
cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw=
cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA=
cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI=
cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y=
cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc=
cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM=
cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o=
cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo=
cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c=
cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc=
cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc=
cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg=
cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE=
cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY=
cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY=
cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0=
cloud.google.com/go/iam v1.2.2 h1:ozUSofHUGf/F4tCNy/mu9tHLTaxZFLOUiKzjcgWHGIA=
cloud.google.com/go/iam v1.2.2/go.mod h1:0Ys8ccaZHdI1dEUilwzqng/6ps2YB6vRsjIe00/+6JY=
cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc=
cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A=
cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk=
cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo=
cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74=
cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM=
cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY=
cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4=
cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs=
cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g=
cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o=
cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE=
cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA=
cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg=
cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0=
cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg=
cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w=
cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24=
cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI=
cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic=
cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI=
cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE=
cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8=
cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY=
cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8=
cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08=
cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo=
cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw=
cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M=
cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE=
cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc=
cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo=
cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc=
cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI=
cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE=
cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM=
cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA=
cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI=
cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw=
cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY=
cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4=
cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w=
cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I=
cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE=
cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM=
cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA=
cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY=
cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM=
cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY=
cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s=
cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8=
cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI=
cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo=
cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk=
cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4=
cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w=
cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw=
cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA=
cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o=
cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM=
cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8=
cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E=
cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM=
cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8=
cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4=
cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY=
cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ=
cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU=
cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k=
cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU=
cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY=
cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34=
cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA=
cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0=
cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE=
cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ=
cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4=
cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs=
cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI=
cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA=
cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk=
cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ=
cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE=
cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc=
cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc=
cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs=
cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg=
cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo=
cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw=
cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw=
cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E=
cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU=
cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70=
cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo=
cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs=
cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0=
cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA=
cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk=
cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg=
cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE=
cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw=
cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc=
cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0=
cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI=
cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg=
cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI=
cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0=
cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8=
cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4=
cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg=
cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k=
cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM=
cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4=
cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o=
cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk=
cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo=
cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE=
cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U=
cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA=
cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c=
cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg=
cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4=
cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac=
cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg=
cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c=
cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs=
cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70=
cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ=
cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y=
cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A=
cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA=
cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM=
cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ=
cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA=
cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0=
cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots=
cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo=
cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI=
cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU=
cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg=
cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA=
cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4=
cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY=
cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc=
cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y=
cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14=
cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do=
cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo=
cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM=
cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg=
cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s=
cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI=
cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk=
cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44=
cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc=
cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc=
cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA=
cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4=
cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4=
cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU=
cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4=
cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0=
cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU=
cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q=
cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA=
cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8=
cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0=
cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU=
cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc=
cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk=
cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk=
cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0=
cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag=
cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU=
cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s=
cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA=
cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc=
cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk=
cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs=
cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg=
cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4=
cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U=
cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY=
cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s=
cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco=
cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo=
cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc=
cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4=
cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E=
cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU=
cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec=
cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA=
cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4=
cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw=
cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A=
cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos=
cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk=
cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M=
cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM=
cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ=
cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0=
cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco=
cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0=
cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo=
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc=
cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y=
cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4=
cloud.google.com/go/storage v1.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs=
cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0=
cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w=
cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I=
cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4=
cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw=
cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw=
cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g=
cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM=
cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA=
cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c=
cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8=
cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4=
cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc=
cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ=
cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg=
cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM=
cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28=
cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y=
cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA=
cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk=
cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs=
cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg=
cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0=
cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos=
cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos=
cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk=
cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw=
cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg=
cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk=
cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ=
cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ=
cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU=
cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4=
cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M=
cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU=
cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU=
cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0=
cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo=
cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo=
cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY=
cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E=
cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY=
cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0=
cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE=
cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g=
cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc=
cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY=
cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208=
cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8=
cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY=
cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w=
cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8=
cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes=
cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE=
cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc=
cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A=
cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg=
cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo=
cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ=
cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng=
cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M=
cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA=
cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw=
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8=
git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 h1:59MxjQVfjXsBpLy+dbd2/ELV5ofnUkUZBvWSC85sheA=
github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/CycloneDX/cyclonedx-go v0.9.2 h1:688QHn2X/5nRezKe2ueIVCt+NRqf7fl3AVQk+vaFcIo=
github.com/CycloneDX/cyclonedx-go v0.9.2/go.mod h1:vcK6pKgO1WanCdd61qx4bFnSsDJQ6SbM2ZuMIgq86Jg=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs=
github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0=
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Microsoft/hcsshim v0.11.7 h1:vl/nj3Bar/CvJSYo7gIQPyRWc9f3c6IeSNavBTSZNZQ=
github.com/Microsoft/hcsshim v0.11.7/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8=
github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
github.com/ProtonMail/go-crypto v1.2.0 h1:+PhXXn4SPGd+qk76TlEePBfOfivE0zkWFenhGhFLzWs=
github.com/ProtonMail/go-crypto v1.2.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE=
github.com/STARRY-S/zip v0.2.1 h1:pWBd4tuSGm3wtpoqRZZ2EAwOmcHK6XFf7bU9qcJXyFg=
github.com/STARRY-S/zip v0.2.1/go.mod h1:xNvshLODWtC4EJ702g7cTYn13G53o1+X9BWnPFpcWV4=
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8=
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo=
github.com/acobaugh/osrelease v0.1.0 h1:Yb59HQDGGNhCj4suHaFQQfBps5wyoKLSSX/J/+UifRE=
github.com/acobaugh/osrelease v0.1.0/go.mod h1:4bFEs0MtgHNHBrmHCt67gNisnabCRAlzdVasCEGHTWY=
github.com/adrg/xdg v0.5.3 h1:xRnxJXne7+oWDatRhR1JLnvuccuIeCoBu2rtuLqQB78=
github.com/adrg/xdg v0.5.3/go.mod h1:nlTsY+NNiCBGCK2tpm09vRqfVzrc2fLmXGpBLF0zlTQ=
github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8=
github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY=
github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
github.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51 h1:yhk+P8lF3ZiROjmaVRao9WGTRo4b/wYjoKEiAHWrKwc=
github.com/anchore/archiver/v3 v3.5.3-0.20241210171143-5b1d8d1c7c51/go.mod h1:nwuGSd7aZp0rtYt79YggCGafz1RYsclE7pi3fhLwvuw=
github.com/anchore/bubbly v0.0.0-20231115205105-6542675d79fe h1:rwiy/2r9T+u3QC+NfgeOQYCIW17K2eRkCBrdhZQZRXw=
github.com/anchore/bubbly v0.0.0-20231115205105-6542675d79fe/go.mod h1:nekzxXIKkGtOPbvT5NqW3MSMChe24hBhW82aBI+35T0=
github.com/anchore/clio v0.0.0-20250319180342-2cfe4b0cb716 h1:2sIdYJlQESEnyk3Y0WD2vXWW5eD2iMz9Ev8fj1Z8LNA=
github.com/anchore/clio v0.0.0-20250319180342-2cfe4b0cb716/go.mod h1:Utb9i4kwiCWvqAIxZaJeMIXFO9uOgQXlvH2BfbfO/zI=
github.com/anchore/fangs v0.0.0-20250319222917-446a1e748ec2 h1:GC2QaO0YsmjpsZ4rtVKv9DnproIxqqn+qkskpc+i8MA=
github.com/anchore/fangs v0.0.0-20250319222917-446a1e748ec2/go.mod h1:XUbUECwVKuD3qYRUj+QZIOHjyyXua2gFmVjKA40iHXA=
github.com/anchore/go-collections v0.0.0-20240216171411-9321230ce537 h1:GjNGuwK5jWjJMyVppBjYS54eOiiSNv4Ba869k4wh72Q=
github.com/anchore/go-collections v0.0.0-20240216171411-9321230ce537/go.mod h1:1aiktV46ATCkuVg0O573ZrH56BUawTECPETbZyBcqT8=
github.com/anchore/go-homedir v0.0.0-20250319154043-c29668562e4d h1:gT69osH9AsdpOfqxbRwtxcNnSZ1zg4aKy2BevO3ZBdc=
github.com/anchore/go-homedir v0.0.0-20250319154043-c29668562e4d/go.mod h1:PhSnuFYknwPZkOWKB1jXBNToChBA+l0FjwOxtViIc50=
github.com/anchore/go-logger v0.0.0-20250318195838-07ae343dd722 h1:2SqmFgE7h+Ql4VyBzhjLkRF/3gDrcpUBj8LjvvO6OOM=
github.com/anchore/go-logger v0.0.0-20250318195838-07ae343dd722/go.mod h1:oFuE8YuTCM+spgMXhePGzk3asS94yO9biUfDzVTFqNw=
github.com/anchore/go-lzo v0.1.0 h1:NgAacnzqPeGH49Ky19QKLBZEuFRqtTG9cdaucc3Vncs=
github.com/anchore/go-lzo v0.1.0/go.mod h1:3kLx0bve2oN1iDwgM1U5zGku1Tfbdb0No5qp1eL1fIk=
github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb h1:iDMnx6LIjtjZ46C0akqveX83WFzhpTD3eqOthawb5vU=
github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb/go.mod h1:DmTY2Mfcv38hsHbG78xMiTDdxFtkHpgYNVDPsF2TgHk=
github.com/anchore/go-rpmdb v0.0.0-20250516171929-f77691e1faec h1:SjjPMOXTzpuU1ZME4XeoHyek+dry3/C7I8gzaCo02eg=
github.com/anchore/go-rpmdb v0.0.0-20250516171929-f77691e1faec/go.mod h1:eQVa6QFGzKy0qMcnW2pez0XBczvgwSjw9vA23qifEyU=
github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc=
github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA=
github.com/anchore/go-sync v0.0.0-20250326131806-4eda43a485b6 h1:Ha+LSCVuXYSYGi7wIkJK6G8g6jI3LH7y6LbyEVyp4Io=
github.com/anchore/go-sync v0.0.0-20250326131806-4eda43a485b6/go.mod h1:+9oM3XUy8iea/vWj9FhZ9bQGUBN8JpPxxJm5Wbcx9XM=
github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04 h1:VzprUTpc0vW0nnNKJfJieyH/TZ9UYAnTZs5/gHTdAe8=
github.com/anchore/go-testutils v0.0.0-20200925183923-d5f45b0d3c04/go.mod h1:6dK64g27Qi1qGQZ67gFmBFvEHScy0/C8qhQhNe5B5pQ=
github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b h1:e1bmaoJfZVsCYMrIZBpFxwV26CbsuoEh5muXD5I1Ods=
github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b/go.mod h1:Bkc+JYWjMCF8OyZ340IMSIi2Ebf3uwByOk6ho4wne1E=
github.com/anchore/packageurl-go v0.1.1-0.20250220190351-d62adb6e1115 h1:ZyRCmiEjnoGJZ1+Ah0ZZ/mKKqNhGcUZBl0s7PTTDzvY=
github.com/anchore/packageurl-go v0.1.1-0.20250220190351-d62adb6e1115/go.mod h1:KoYIv7tdP5+CC9VGkeZV4/vGCKsY55VvoG+5dadg4YI=
github.com/anchore/stereoscope v0.1.8 h1:K1NRFUqGy6z/jp4ADHNXZWbZ+xd6fPr0Kn4gYp1zm1c=
github.com/anchore/stereoscope v0.1.8/go.mod h1:VA9zyFcUzN7GIFsXfe8lj3Z6Ocs4CP5QZqbmFc1I7ag=
github.com/anchore/syft v1.30.0 h1:gphJZugA2hbmneNxSetdZkfXTsaiWNb0JUdS6pWcU+w=
github.com/anchore/syft v1.30.0/go.mod h1:9Tv69IfPRmp5LD0htsEKR7i8AfOM/8QFGaC+hRdUo2o=
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/andybalholm/brotli v1.1.2-0.20250424173009-453214e765f3 h1:8PmGpDEZl9yDpcdEr6Odf23feCxK3LNUNMxjXg41pZQ=
github.com/andybalholm/brotli v1.1.2-0.20250424173009-453214e765f3/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0=
github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI=
github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU=
github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
github.com/aquasecurity/go-pep440-version v0.0.1 h1:8VKKQtH2aV61+0hovZS3T//rUF+6GDn18paFTVS0h0M=
github.com/aquasecurity/go-pep440-version v0.0.1/go.mod h1:3naPe+Bp6wi3n4l5iBFCZgS0JG8vY6FT0H4NGhFJ+i4=
github.com/aquasecurity/go-version v0.0.1 h1:4cNl516agK0TCn5F7mmYN+xVs1E3S45LkgZk3cbaW2E=
github.com/aquasecurity/go-version v0.0.1/go.mod h1:s1UU6/v2hctXcOa3OLwfj5d9yoXHa3ahf+ipSwEvGT0=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo=
github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/becheran/wildmatch-go v1.0.0 h1:mE3dGGkTmpKtT4Z+88t8RStG40yN9T+kFEGj2PZFSzA=
github.com/becheran/wildmatch-go v1.0.0/go.mod h1:gbMvj0NtVdJ15Mg/mH9uxk2R1QCistMyU7d9KFzroX4=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bitnami/go-version v0.0.0-20250131085805-b1f57a8634ef h1:TSFnfbbu2oAOuWbeDDTtwXWE6z+PmpgbSsMBeV7l0ww=
github.com/bitnami/go-version v0.0.0-20250131085805-b1f57a8634ef/go.mod h1:9iglf1GG4oNRJ39bZ5AZrjgAFD2RwQbXw6Qf7Cs47wo=
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4=
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI=
github.com/bmatcuk/doublestar/v4 v4.9.1 h1:X8jg9rRZmJd4yRy7ZeNDRnM+T3ZfHv15JiBJ/avrEXE=
github.com/bmatcuk/doublestar/v4 v4.9.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
github.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU=
github.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs=
github.com/bodgit/sevenzip v1.6.0 h1:a4R0Wu6/P1o1pP/3VV++aEOcyeBxeO/xE2Y9NSTrr6A=
github.com/bodgit/sevenzip v1.6.0/go.mod h1:zOBh9nJUof7tcrlqJFv1koWRrhz3LbDbUNngkuZxLMc=
github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M=
github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0=
github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw=
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charmbracelet/bubbles v0.21.0 h1:9TdC97SdRVg/1aaXNVWfFH3nnLAwOXr8Fn6u6mfQdFs=
github.com/charmbracelet/bubbles v0.21.0/go.mod h1:HF+v6QUR4HkEpz62dx7ym2xc71/KBHg+zKwJtMw+qtg=
github.com/charmbracelet/bubbletea v1.3.6 h1:VkHIxPJQeDt0aFJIsVxw8BQdh/F/L2KKZGsK6et5taU=
github.com/charmbracelet/bubbletea v1.3.6/go.mod h1:oQD9VCRQFF8KplacJLo28/jofOI2ToOfGYeFgBBxHOc=
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ=
github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
github.com/charmbracelet/x/ansi v0.9.3 h1:BXt5DHS/MKF+LjuK4huWrC6NCvHtexww7dMayh6GXd0=
github.com/charmbracelet/x/ansi v0.9.3/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE=
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs=
github.com/chromedp/chromedp v0.9.2/go.mod h1:LkSXJKONWTCHAfQasKFUZI+mxqS4tZqhmtGzzhLsnLs=
github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0=
github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
github.com/containerd/containerd v1.7.27 h1:yFyEyojddO3MIGVER2xJLWoCIn+Up4GaHFquP7hsFII=
github.com/containerd/containerd v1.7.27/go.mod h1:xZmPnl75Vc+BLGt4MIfu6bp+fy03gdHAn9bz+FreFR0=
github.com/containerd/containerd/api v1.8.0 h1:hVTNJKR8fMc/2Tiw60ZRijntNMd1U+JVMyTRdsD2bS0=
github.com/containerd/containerd/api v1.8.0/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc=
github.com/containerd/continuity v0.4.4 h1:/fNVfTJ7wIl/YPMHjf+5H32uFhl63JucB34PlCpMKII=
github.com/containerd/continuity v0.4.4/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE=
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY=
github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A=
github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw=
github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8=
github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU=
github.com/containerd/ttrpc v1.2.7 h1:qIrroQvuOL9HQ1X6KHe2ohc7p+HP/0VE6XPU7elJRqQ=
github.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o=
github.com/containerd/typeurl/v2 v2.2.0 h1:6NBDbQzr7I5LHgp34xAXYF5DOTQDn05X58lsPEmzLso=
github.com/containerd/typeurl/v2 v2.2.0/go.mod h1:8XOOxnyatxSWuG8OfsZXVnAF4iZfedjS/8UHSPJnX4g=
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da h1:ZOjWpVsFZ06eIhnh4mkaceTiVoktdU67+M7KDHJ268M=
github.com/deitch/magic v0.0.0-20230404182410-1ff89d7342da/go.mod h1:B3tI9iGHi4imdLi4Asdha1Sc6feLMTfPLXh9IUYmysk=
github.com/dgrijalva/jwt-go/v4 v4.0.0-preview1/go.mod h1:+hnT3ywWDTAFrW5aE+u2Sa/wT555ZqwoCS+pk3p6ry4=
github.com/diskfs/go-diskfs v1.6.1-0.20250601133945-2af1c7ece24c h1:Vg+RNk+3Kwbe3wUYsgXsk43+7oyOJ5tRDzOrcpV40yQ=
github.com/diskfs/go-diskfs v1.6.1-0.20250601133945-2af1c7ece24c/go.mod h1:LhQyXqOugWFRahYUSw47NyZJPezFzB9UELwhpszLP/k=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/djherbis/times v1.6.0 h1:w2ctJ92J8fBvWPxugmXIv7Nz7Q3iDMKNx9v5ocVH20c=
github.com/djherbis/times v1.6.0/go.mod h1:gOHeRAz2h+VJNZ5Gmc/o7iD9k4wW7NMVqieYCY99oc0=
github.com/docker/cli v28.3.2+incompatible h1:mOt9fcLE7zaACbxW1GeS65RI67wIJrTnqS3hP2huFsY=
github.com/docker/cli v28.3.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI=
github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8=
github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8=
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o=
github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE=
github.com/elliotchance/phpserialize v1.4.0 h1:cAp/9+KSnEbUC8oYCE32n2n84BeW8HOY3HMDI8hG2OY=
github.com/elliotchance/phpserialize v1.4.0/go.mod h1:gt7XX9+ETUcLXbtTKEuyrqW3lcLUAeS/AnGZ2e49TZs=
github.com/elliotwutingfeng/asciiset v0.0.0-20230602022725-51bbb787efab h1:h1UgjJdAAhj+uPL68n7XASS6bU+07ZX1WJvVS2eyoeY=
github.com/elliotwutingfeng/asciiset v0.0.0-20230602022725-51bbb787efab/go.mod h1:GLo/8fDswSAniFG+BFIaiSPcK610jyzgEhWYPQwuQdw=
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ=
github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0=
github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ=
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34=
github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws=
github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo=
github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w=
github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
github.com/facebookincubator/flog v0.0.0-20190930132826-d2511d0ce33c/go.mod h1:QGzNH9ujQ2ZUr/CjDGZGWeDAVStrWNjHeEcjJL96Nuk=
github.com/facebookincubator/nvdtools v0.1.5 h1:jbmDT1nd6+k+rlvKhnkgMokrCAzHoASWE5LtHbX2qFQ=
github.com/facebookincubator/nvdtools v0.1.5/go.mod h1:Kh55SAWnjckS96TBSrXI99KrEKH4iB0OJby3N8GRJO4=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
github.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA=
github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI=
github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw=
github.com/felixge/fgprof v0.9.5 h1:8+vR6yu2vvSKn08urWyEuxx75NWPEvybbkBirEpsbVY=
github.com/felixge/fgprof v0.9.5/go.mod h1:yKl+ERSa++RYOs32d8K6WEXCB4uXdLls4ZaZPpayhMM=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY=
github.com/gabriel-vasile/mimetype v1.4.9/go.mod h1:WnSQhFKJuBlRyLiKohA/2DtIlPFAbguNaG7QCHcyGok=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/github/go-spdx/v2 v2.3.3 h1:QI7evnHWEfWkT54eJwkoV/f3a0xD3gLlnVmT5wQG6LE=
github.com/github/go-spdx/v2 v2.3.3/go.mod h1:2ZxKsOhvBp+OYBDlsGnUMcchLeo2mrpEBn2L1C+U3IQ=
github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs=
github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo=
github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M=
github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk=
github.com/gkampitakis/go-snaps v0.5.14 h1:3fAqdB6BCPKHDMHAKRwtPUwYexKtGrNuw8HX/T/4neo=
github.com/gkampitakis/go-snaps v0.5.14/go.mod h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc=
github.com/glebarez/go-sqlite v1.20.3 h1:89BkqGOXR9oRmG58ZrzgoY/Fhy5x0M+/WV48U5zVrZ4=
github.com/glebarez/go-sqlite v1.20.3/go.mod h1:u3N6D/wftiAzIOJtZl6BmedqxmmkDfH3q+ihjqxC9u0=
github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g=
github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks=
github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=
github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=
github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM=
github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
github.com/go-git/go-git/v5 v5.16.2 h1:fT6ZIOjE5iEnkzKyxTHK1W4HGAsPhqEqiSAssSO77hM=
github.com/go-git/go-git/v5 v5.16.2/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8=
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U=
github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk=
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=
github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M=
github.com/go-restruct/restruct v1.2.0-alpha h1:2Lp474S/9660+SJjpVxoKuWX09JsXHSrdV7Nv3/gkvc=
github.com/go-restruct/restruct v1.2.0-alpha/go.mod h1:KqrpKpn4M8OLznErihXTGLlsXFGeLxHUrLRRI/1YjGk=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U=
github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM=
github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw=
github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY=
github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw=
github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/gohugoio/hashstructure v0.5.0 h1:G2fjSBU36RdwEJBWJ+919ERvOVqAg9tfcYp47K9swqg=
github.com/gohugoio/hashstructure v0.5.0/go.mod h1:Ser0TniXuu/eauYmrwM4o64EBvySxNzITEOLlm4igec=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ=
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/go-containerregistry v0.20.6 h1:cvWX87UxxLgaH76b4hIvya6Dzz9qHB31qAwjAohdSTU=
github.com/google/go-containerregistry v0.20.6/go.mod h1:T0x8MuoAoKX/873bkeSfLD2FAkwCDf9/HZgsFJ02E2Y=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/licensecheck v0.3.1 h1:QoxgoDkaeC4nFrtGN1jV7IPmDCHFNIVh54e5hSt6sPs=
github.com/google/licensecheck v0.3.1/go.mod h1:ORkR35t/JjW+emNKtfJDII0zlciG9JgbT7SmsohlHmY=
github.com/google/licenseclassifier/v2 v2.0.0 h1:1Y57HHILNf4m0ABuMVb6xk4vAJYEUO0gDxNpog0pyeA=
github.com/google/licenseclassifier/v2 v2.0.0/go.mod h1:cOjbdH0kyC9R22sdQbYsFkto4NGCAc+ZSwbeThazEtM=
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc=
github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs=
github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM=
github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg=
github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k=
github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw=
github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA=
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM=
github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY=
github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8=
github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI=
github.com/googleapis/gax-go/v2 v2.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s=
github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A=
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g=
github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg=
github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0=
github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w=
github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg=
github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M=
github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
github.com/hashicorp/go-getter v1.7.8 h1:mshVHx1Fto0/MydBekWan5zUipGq7jO0novchgMmSiY=
github.com/hashicorp/go-getter v1.7.8/go.mod h1:2c6CboOEb9jG6YvmC9xdD+tyAFsrUaJPedwXDGr0TM4=
github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQxvE=
github.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=
github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc=
github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4=
github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI=
github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
github.com/jedib0t/go-pretty/v6 v6.6.8 h1:JnnzQeRz2bACBobIaa/r+nqjvws4yEhcmaZ4n1QzsEc=
github.com/jedib0t/go-pretty/v6 v6.6.8/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU=
github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953 h1:WdAeg/imY2JFPc/9CST4bZ80nNJbiBFCAdSZCSgrS5Y=
github.com/kastenhq/goversion v0.0.0-20230811215019-93b2f8823953/go.mod h1:6o+UrvuZWc4UTyBhQf0LGjW9Ld7qJxLz/OqvSOWWlEc=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE=
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU=
github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs=
github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w=
github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA=
github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o=
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE=
github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo=
github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75 h1:P8UmIzZMYDR+NGImiFvErt6VWfIRPuGM+vyjiEdkmIw=
github.com/mattn/go-localereader v0.0.2-0.20220822084749-2491eb6c1c75/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/mholt/archives v0.1.3 h1:aEAaOtNra78G+TvV5ohmXrJOAzf++dIlYeDW3N9q458=
github.com/mholt/archives v0.1.3/go.mod h1:LUCGp++/IbV/I0Xq4SzcIR6uwgeh2yjnQWamjRQfLTU=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
github.com/mikelolasagasti/xz v1.0.1 h1:Q2F2jX0RYJUG3+WsM+FJknv+6eVjsjXNDV0KJXZzkD0=
github.com/mikelolasagasti/xz v1.0.1/go.mod h1:muAirjiOUxPRXwm9HdDtB3uoRPrGnL85XHtokL9Hcgc=
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
github.com/minio/minlz v1.0.0 h1:Kj7aJZ1//LlTP1DM8Jm7lNKvvJS2m74gyyXXn3+uJWQ=
github.com/minio/minlz v1.0.0/go.mod h1:qT0aEB35q79LLornSzeDH75LBf3aH1MV+jB5w9Wasec=
github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw=
github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs=
github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg=
github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4=
github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU=
github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko=
github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI=
github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg=
github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo=
github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs=
github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g=
github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28=
github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI=
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo=
github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA=
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4=
github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
github.com/nix-community/go-nix v0.0.0-20250101154619-4bdde671e0a1 h1:kpt9ZfKcm+EDG4s40hMwE//d5SBgDjUOrITReV2u4aA=
github.com/nix-community/go-nix v0.0.0-20250101154619-4bdde671e0a1/go.mod h1:qgCw4bBKZX8qMgGeEZzGFVT3notl42dBjNqO2jut0M0=
github.com/nsf/jsondiff v0.0.0-20210926074059-1e845ec5d249 h1:NHrXEjTNQY7P0Zfx1aMrNhpgxHmow66XQtm0aQLY0AE=
github.com/nsf/jsondiff v0.0.0-20210926074059-1e845ec5d249/go.mod h1:mpRZBD8SJ55OIICQ3iWH0Yz3cjzA61JdqMLoWXeB2+8=
github.com/nwaples/rardecode v1.1.3 h1:cWCaZwfM5H7nAD6PyEdcVnczzV8i/JtotnyW/dD9lEc=
github.com/nwaples/rardecode v1.1.3/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
github.com/nwaples/rardecode/v2 v2.1.0 h1:JQl9ZoBPDy+nIZGb1mx8+anfHp/LV3NE2MjMiv0ct/U=
github.com/nwaples/rardecode/v2 v2.1.0/go.mod h1:7uz379lSxPe6j9nvzxUZ+n7mnJNgjsRNb6IbvGVHRmw=
github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM=
github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y=
github.com/olekukonko/ll v0.0.9 h1:Y+1YqDfVkqMWuEQMclsF9HUR5+a82+dxJuL1HHSRpxI=
github.com/olekukonko/ll v0.0.9/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g=
github.com/olekukonko/tablewriter v1.0.9 h1:XGwRsYLC2bY7bNd93Dk51bcPZksWZmLYuaTHR0FqfL8=
github.com/olekukonko/tablewriter v1.0.9/go.mod h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo=
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg=
github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU=
github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec=
github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pborman/indent v1.2.1 h1:lFiviAbISHv3Rf0jcuh489bi06hj98JsVMtIDZQb9yM=
github.com/pborman/indent v1.2.1/go.mod h1:FitS+t35kIYtB5xWTZAPhnmrxcciEEOdbyrrpz5K6Vw=
github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY=
github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI=
github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4=
github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA=
github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo=
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg=
github.com/pkg/xattr v0.4.9 h1:5883YPCtkSd8LFbs13nXplj9g9tlrwoJRjgpgMu1/fE=
github.com/pkg/xattr v0.4.9/go.mod h1:di8WF84zAKk8jzR1UBTEWh9AUlIZZ7M/JNt8e9B6ktU=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg=
github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/rust-secure-code/go-rustaudit v0.0.0-20250226111315-e20ec32e963c h1:8gOLsYwaY2JwlTMT4brS5/9XJdrdIbmk2obvQ748CC0=
github.com/rust-secure-code/go-rustaudit v0.0.0-20250226111315-e20ec32e963c/go.mod h1:kwM/7r/rVluTE8qJbHAffduuqmSv4knVQT2IajGvSiA=
github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w=
github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk=
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig=
github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo=
github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k=
github.com/sahilm/fuzzy v0.1.1 h1:ceu5RHF8DGgoi+/dR5PsECjCDH1BE3Fnmpo7aVXOdRA=
github.com/sahilm/fuzzy v0.1.1/go.mod h1:VFvziUEIMCrT6A6tw2RFIXPXXmzXbOsSHF0DOI8ZK9Y=
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d h1:hrujxIzL1woJ7AwssoOcM/tq5JjjG2yYOc8odClEiXA=
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU=
github.com/sanity-io/litter v1.5.8 h1:uM/2lKrWdGbRXDrIq08Lh9XtVYoeGtcQxk9rtQ7+rYg=
github.com/sanity-io/litter v1.5.8/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U=
github.com/sassoftware/go-rpmutils v0.4.0 h1:ojND82NYBxgwrV+mX1CWsd5QJvvEZTKddtCdFLPWhpg=
github.com/sassoftware/go-rpmutils v0.4.0/go.mod h1:3goNWi7PGAT3/dlql2lv3+MSN5jNYPjT5mVcQcIsYzI=
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e h1:7q6NSFZDeGfvvtIRwBrU/aegEYJYmvev0cHAwo17zZQ=
github.com/scylladb/go-set v1.0.3-0.20200225121959-cc7b2070d91e/go.mod h1:DkpGd78rljTxKAnTDPFqXSGxvETQnJyuSOQwsHycqfs=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/sebdah/goldie/v2 v2.5.5 h1:rx1mwF95RxZ3/83sdS4Yp7t2C5TCokvWP4TBRbAyEWY=
github.com/sebdah/goldie/v2 v2.5.5/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=
github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af h1:Sp5TG9f7K39yfB+If0vjp97vuT74F72r8hfRpP8jLU0=
github.com/sirupsen/logrus v1.9.4-0.20230606125235-dd1b4c2e81af/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8=
github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY=
github.com/sorairolake/lzip-go v0.3.5 h1:ms5Xri9o1JBIWvOFAorYtUNik6HI3HgBTkISiqu0Cwg=
github.com/sorairolake/lzip-go v0.3.5/go.mod h1:N0KYq5iWrMXI0ZEXKXaS9hCyOjZUQdBDEIbXfoUwbdk=
github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb h1:bLo8hvc8XFm9J47r690TUKBzcjSWdJDxmjXJZ+/f92U=
github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb/go.mod h1:uKWaldnbMnjsSAXRurWqqrdyZen1R7kxl8TkmWk2OyM=
github.com/spdx/tools-golang v0.5.5 h1:61c0KLfAcNqAjlg6UNMdkwpMernhw3zVRwDZ2x9XOmk=
github.com/spdx/tools-golang v0.5.5/go.mod h1:MVIsXx8ZZzaRWNQpUDhC4Dud34edUYJYecciXgrw5vE=
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y=
github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA=
github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo=
github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4=
github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM=
github.com/spf13/viper v1.20.0 h1:zrxIyR3RQIOsarIrgL8+sAvALXul9jeEPa06Y0Ph6vY=
github.com/spf13/viper v1.20.0/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/sylabs/sif/v2 v2.21.1 h1:GZ0b5//AFAqJEChd8wHV/uSKx/l1iuGYwjR8nx+4wPI=
github.com/sylabs/sif/v2 v2.21.1/go.mod h1:YoqEGQnb5x/ItV653bawXHZJOXQaEWpGwHsSD3YePJI=
github.com/sylabs/squashfs v1.0.6 h1:PvJcDzxr+vIm2kH56mEMbaOzvGu79gK7P7IX+R7BDZI=
github.com/sylabs/squashfs v1.0.6/go.mod h1:DlDeUawVXLWAsSRa085Eo0ZenGzAB32JdAUFaB0LZfE=
github.com/terminalstatic/go-xsd-validate v0.1.6 h1:TenYeQ3eY631qNi1/cTmLH/s2slHPRKTTHT+XSHkepo=
github.com/terminalstatic/go-xsd-validate v0.1.6/go.mod h1:18lsvYFofBflqCrvo1umpABZ99+GneNTw2kEEc8UPJw=
github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw=
github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY=
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
github.com/vbatts/go-mtree v0.5.4 h1:OMAb8jaCyiFA7zXj0Zc/oARcxBDBoeu2LizjB8BVJl0=
github.com/vbatts/go-mtree v0.5.4/go.mod h1:5GqJbVhm9BBiCc4K5uc/c42FPgXulHaQs4sFUEfIWMo=
github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo=
github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
github.com/vifraa/gopom v1.0.0 h1:L9XlKbyvid8PAIK8nr0lihMApJQg/12OBvMA28BcWh0=
github.com/vifraa/gopom v1.0.0/go.mod h1:oPa1dcrGrtlO37WPDBm5SqHAT+wTgF8An1Q71Z6Vv4o=
github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 h1:jIVmlAFIqV3d+DOxazTR9v+zgj8+VYuQBzPgBZvWBHA=
github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651/go.mod h1:b26F2tHLqaoRQf8DywqzVaV1MQ9yvjb0OMcNl7Nxu20=
github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0 h1:0KGbf+0SMg+UFy4e1A/CPVvXn21f1qtWdeJwxZFoQG8=
github.com/wagoodman/go-progress v0.0.0-20230925121702-07e42b3cdba0/go.mod h1:jLXFoL31zFaHKAAyZUh+sxiTDFe1L1ZHrcK2T1itVKA=
github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk=
github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo=
github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM=
github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs=
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc=
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg=
go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0=
go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE=
go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs=
go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs=
go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY=
go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis=
go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4=
go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w=
go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I=
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI=
go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ=
go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
go4.org v0.0.0-20230225012048-214862532bf5 h1:nifaUDeh+rPaBCMPMQHZmvJf+QdpLFnuQPwx+LxVmtc=
go4.org v0.0.0-20230225012048-214862532bf5/go.mod h1:F57wTi5Lrj6WLyswp5EYV1ncrEbFGHD4hhz6S1ZYeaU=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE=
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8=
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ=
golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8=
golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec=
golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220408201424-a24fb2fb8a0f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0=
golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU=
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0=
gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0=
gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA=
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY=
gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg=
google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE=
google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8=
google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU=
google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94=
google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo=
google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4=
google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw=
google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU=
google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=
google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI=
google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU=
google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I=
google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw=
google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=
google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g=
google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA=
google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8=
google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs=
google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=
google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA=
google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw=
google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg=
google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o=
google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g=
google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI=
google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08=
google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70=
google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo=
google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0=
google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=
google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=
google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY=
google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI=
google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0=
google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg=
google.golang.org/api v0.203.0 h1:SrEeuwU3S11Wlscsn+LA1kb/Y5xT8uggJSkIhD08NAU=
google.golang.org/api v0.203.0/go.mod h1:BuOVyCSYEPwJb3npWvDnNmFI92f3GeRnHNkETneT3SI=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24=
google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k=
google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48=
google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w=
google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY=
google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc=
google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI=
google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E=
google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE=
google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc=
google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo=
google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw=
google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=
google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI=
google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U=
google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM=
google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo=
google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg=
google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE=
google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM=
google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA=
google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw=
google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw=
google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA=
google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=
google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=
google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak=
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk=
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc=
google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f h1:M65LEviCfuZTfrfzwwEoxVtgvfkFkBUbFnRbxCXuXhU=
google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f/go.mod h1:Yo94eF2nj7igQt+TiJ49KxjIH8ndLYPZMIRSiRcEbg0=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8=
google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE=
google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34=
google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU=
google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww=
google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY=
google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw=
google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=
google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s=
google.golang.org/grpc v1.67.3 h1:OgPcDAFKHnH8X3O4WcO4XUc8GRDeKsKReqbQtiCj7N8=
google.golang.org/grpc v1.67.3/go.mod h1:YGaHCc6Oap+FzBJTZLBzkGSYt/cvGPFTPxkn7QfSU8s=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk=
modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI=
modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc=
modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw=
modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ=
modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ=
modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws=
modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo=
modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ=
modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM=
modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA=
modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A=
modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU=
modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU=
modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA=
modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0=
modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s=
modernc.org/libc v1.66.3 h1:cfCbjTUcdsKyyZZfEUKfoHcP3S0Wkvz3jgSzByEWVCQ=
modernc.org/libc v1.66.3/go.mod h1:XD9zO8kt59cANKvHPXpx7yS2ELPheAey0vjIuZOhOU8=
modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E=
modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=
modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw=
modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw=
modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU=
modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=
modernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw=
modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0=
modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4=
modernc.org/sqlite v1.38.2 h1:Aclu7+tgjgcQVShZqim41Bbw9Cho0y/7WzYptXqkEek=
modernc.org/sqlite v1.38.2/go.mod h1:cPTJYSlgg3Sfg046yBShXENNtPrWrDX8bsbAQBzgQ5E=
modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw=
modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw=
modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw=
modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
0707010000004C000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001200000000grant-0.2.9/grant0707010000004D000081A40000000000000000000000016896451000002DAC000000000000000000000000000000000000001A00000000grant-0.2.9/grant/case.gopackage grant

import (
	"bytes"
	"context"
	"fmt"
	"io"
	"io/fs"
	golog "log"
	"os"
	"path/filepath"
	"strings"

	"github.com/google/licenseclassifier/v2/tools/identify_license/backend"
	"github.com/google/licenseclassifier/v2/tools/identify_license/results"

	"github.com/anchore/go-collections"
	"github.com/anchore/grant/internal/log"
	"github.com/anchore/grant/internal/spdxlicense"
	"github.com/anchore/stereoscope"
	"github.com/anchore/syft/syft"
	"github.com/anchore/syft/syft/cataloging/pkgcataloging"
	"github.com/anchore/syft/syft/format"
	"github.com/anchore/syft/syft/pkg/cataloger/golang"
	"github.com/anchore/syft/syft/pkg/cataloger/java"
	"github.com/anchore/syft/syft/pkg/cataloger/javascript"
	"github.com/anchore/syft/syft/sbom"
	"github.com/anchore/syft/syft/source"
	"github.com/anchore/syft/syft/source/sourceproviders"
)

// Case is a collection of SBOMs and Licenses that are evaluated for a given UserInput
type Case struct {
	// SBOMS is a list of SBOMs that were generated for the user input
	SBOMS []sbom.SBOM

	// Licenses is a list of licenses that were generated for the user input
	Licenses []License

	// UserInput is the string that was supplied by the user to build the case
	UserInput string
}

func NewCases(userInputs ...string) []Case {
	cases := make([]Case, 0)
	ch, err := NewCaseHandler()
	if err != nil {
		log.Errorf("unable to create case handler: %+v", err)
		return cases
	}

	defer ch.Close()
	for _, userInput := range userInputs {
		c, err := ch.determineRequestCase(userInput)
		if err != nil {
			log.Errorf("unable to determine case for %s: %+v", userInput, err)
			continue
		}
		c.UserInput = userInput
		cases = append(cases, c)
	}
	return cases
}

type Pair struct {
	License License
	Package *Package
}

func (c Case) GetLicenses() (map[string][]*Package, map[string]License, []Package) {
	licensePackages := make(map[string][]*Package)
	licenses := make(map[string]License)
	packagesNoLicenses := make([]Package, 0)
	for _, sb := range c.SBOMS {
		for pkg := range sb.Artifacts.Packages.Enumerate() {
			grantPkg := ConvertSyftPackage(pkg)
			// TODO: how do we express packages without licenses in list
			if len(grantPkg.Licenses) == 0 {
				packagesNoLicenses = append(packagesNoLicenses, *grantPkg)
				continue
			}
			buildLicenseMaps(licensePackages, licenses, grantPkg)
		}
	}

	return licensePackages, licenses, packagesNoLicenses
}

func buildLicenseMaps(licensePackages map[string][]*Package, licenses map[string]License, pkg *Package) {
	for _, license := range pkg.Licenses {
		if license.IsSPDX() {
			if _, ok := licenses[license.SPDXExpression]; !ok {
				licenses[license.SPDXExpression] = license
			}
			if _, ok := licensePackages[license.SPDXExpression]; !ok {
				licensePackages[license.SPDXExpression] = make([]*Package, 0)
			}
			licensePackages[license.SPDXExpression] = append(licensePackages[license.SPDXExpression], pkg)
			continue
		}

		// NonSPDX License
		if _, ok := licenses[license.Name]; !ok {
			licenses[license.Name] = license
		}
		if _, ok := licensePackages[license.Name]; !ok {
			licensePackages[license.Name] = make([]*Package, 0)
		}
		licensePackages[license.Name] = append(licensePackages[license.Name], pkg)
	}
}

type CaseHandler struct {
	Backend *backend.ClassifierBackend
}

func NewCaseHandler() (*CaseHandler, error) {
	be, err := backend.New()
	if err != nil {
		return &CaseHandler{}, err
	}
	return &CaseHandler{
		Backend: be,
	}, nil
}

func (ch *CaseHandler) Close() {
	ch.Backend.Close()
}

// A valid userRequest can be:
// - a path to an SBOM file
// - a path to a license
// - a path to a directory
// - a path to an archive
// - a path to a directory (with any of the above)
// - a container image (ubuntu:latest)
func (ch *CaseHandler) determineRequestCase(userRequest string) (c Case, err error) {
	switch {
	case isStdin(userRequest):
		return handleStdin()
	case isFile(userRequest):
		return ch.handleFile(userRequest)
	case isDirectory(userRequest):
		return ch.handleDir(userRequest)
	default:
		return handleContainer(userRequest)
	}
}

func handleStdin() (c Case, err error) {
	stdReader, err := decodeStdin(os.Stdin)
	if err != nil {
		return c, err
	}

	sb, _, _, err := format.NewDecoderCollection(format.Decoders()...).Decode(stdReader)
	if err != nil {
		return c, fmt.Errorf("unable to determine SBOM or licenses for stdin: %w", err)
	}
	if sb != nil {
		return Case{
			SBOMS:     []sbom.SBOM{*sb},
			Licenses:  make([]License, 0),
			UserInput: sb.Source.Name,
		}, nil
	}
	return c, fmt.Errorf("unable to determine SBOM or licenses for stdin")
}

func decodeStdin(r io.Reader) (io.ReadSeeker, error) {
	b, err := io.ReadAll(r)
	if err != nil {
		return nil, fmt.Errorf("failed reading stdin: %w", err)
	}

	reader := bytes.NewReader(b)
	_, err = reader.Seek(0, io.SeekStart)
	if err != nil {
		return nil, fmt.Errorf("failed to parse stdin: %w", err)
	}

	return reader, nil
}

func (ch *CaseHandler) handleFile(path string) (c Case, err error) {
	// let's see if it's an archive (isArchive)
	if isArchive(path) {
		sb, err := generateSyftSBOM(path)
		if err != nil {
			// We bail here since we can't generate an SBOM for the archive
			return c, err
		}

		// if there are licenses in the archive, syft should be enhanced to include them in the SBOM
		// this overlap is a little weird, but grant should be able to take license files as input
		return Case{
			SBOMS:     []sbom.SBOM{sb},
			Licenses:  make([]License, 0),
			UserInput: path,
		}, nil
	}

	// let's see if it's an SBOM
	sbomBytes, err := getReadSeeker(path)
	if err != nil {
		// We bail here since we can't get a reader for the file
		return c, err
	}

	sb, _, _, err := format.NewDecoderCollection(format.Decoders()...).Decode(sbomBytes)
	if err != nil {
		log.Debugf("unable to determine SBOM or licenses for %s: %+v", path, err)
		// we want to log the error, but we don't want to return yet
	}
	if sb != nil {
		return Case{
			SBOMS:    []sbom.SBOM{*sb},
			Licenses: make([]License, 0),
		}, nil
	}
	licenses, err := ch.handleLicenseFile(path)
	if err != nil {
		return c, fmt.Errorf("unable to determine SBOM or licenses for %s: %w", path, err)
	}

	return Case{
		SBOMS:     make([]sbom.SBOM, 0),
		Licenses:  licenses,
		UserInput: path,
	}, nil
}

func (ch *CaseHandler) handleLicenseFile(path string) ([]License, error) {
	// alright we couldn't get an SBOM, let's see if the bytes are just a LICENSE (google license classifier)

	// google license classifier is noisy, so we'll silence it for now
	golog.SetOutput(io.Discard)
	if errs := ch.Backend.ClassifyLicensesWithContext(
		context.Background(),
		1000,
		[]string{path},
		false,
	); errs != nil {
		ch.Close()
		for _, err := range errs {
			log.Errorf("unable to classify license: %+v", err)
		}
		return nil, fmt.Errorf("unable to classify license: %+v", errs)
	}
	// re-enable logging for the rest of the application
	golog.SetOutput(os.Stdout)

	classifierResults := ch.Backend.GetResults()
	if len(classifierResults) == 0 {
		return nil, fmt.Errorf("no classifierResults from license classifier")
	}

	licenses := grantLicenseFromClassifierResults(classifierResults)
	return licenses, nil
}

func (ch *CaseHandler) handleDir(root string) (c Case, err error) {
	dirCase := Case{
		SBOMS:    make([]sbom.SBOM, 0),
		Licenses: make([]License, 0),
	}

	// the closure that will be used to visit each file node
	visit := func(s string, d fs.DirEntry, err error) error {
		if err != nil {
			return err
		}
		if !d.IsDir() {
			// This isn't broken, the license classifier just returned two licenses
			r, err := ch.handleFile(s)
			if err != nil {
				// TODO: some log for the error here?
				return nil
			}
			dirCase.SBOMS = append(dirCase.SBOMS, r.SBOMS...)
			dirCase.Licenses = append(dirCase.Licenses, r.Licenses...)
		}
		return nil
	}

	err = filepath.WalkDir(root, visit)
	if err != nil {
		return c, err
	}
	return dirCase, nil
}

func handleContainer(image string) (c Case, err error) {
	sb, err := generateSyftSBOM(image)
	if err != nil {
		// We bail here since we can't generate an SBOM for the image
		return c, err
	}

	return Case{
		SBOMS:    []sbom.SBOM{sb},
		Licenses: make([]License, 0),
	}, nil
}

func getReadSeeker(path string) (io.ReadSeeker, error) {
	file, err := os.Open(path)
	if err != nil {
		return nil, fmt.Errorf("unable to open file: %w", err)
	}
	return file, nil
}

func grantLicenseFromClassifierResults(r results.LicenseTypes) []License {
	licenses := make([]License, 0)
	for _, license := range r {
		// TODO: sometimes the license classifier gives us more information than just the name.
		// How do we want to handle this or include it in the grant.License?

		if license.MatchType == "License" {
			spdxLicense, err := spdxlicense.GetLicenseByID(license.Name)
			if err != nil {
				licenses = append(licenses, License{
					LicenseID: license.Name,
					Name:      license.Name,
				})
			} else {
				licenses = append(licenses, License{
					SPDXExpression:        spdxLicense.LicenseID,
					Reference:             spdxLicense.Reference,
					IsDeprecatedLicenseID: spdxLicense.IsDeprecatedLicenseID,
					DetailsURL:            spdxLicense.DetailsURL,
					ReferenceNumber:       spdxLicense.ReferenceNumber,
					LicenseID:             spdxLicense.LicenseID,
					SeeAlso:               spdxLicense.SeeAlso,
					IsOsiApproved:         spdxLicense.IsOsiApproved,
				})
			}
		}
	}
	return licenses
}

// TODO: is the default syft config good enough here?
// we definitely need at least all the non default license magic turned on
func generateSyftSBOM(userInput string) (sb sbom.SBOM, err error) {
	src, err := getSource(userInput)
	if err != nil {
		return sb, err
	}
	sb = getSBOM(src)
	return sb, nil
}

func getSource(userInput string) (source.Source, error) {
	allSourceTags := collections.TaggedValueSet[source.Provider]{}.Join(sourceproviders.All("", nil)...).Tags()

	var sources []string
	schemeSource, newUserInput := stereoscope.ExtractSchemeSource(userInput, allSourceTags...)
	if schemeSource != "" {
		sources = []string{schemeSource}
		userInput = newUserInput
	}

	return syft.GetSource(context.Background(), userInput, syft.DefaultGetSourceConfig().WithSources(sources...))
}

func getSBOM(src source.Source) sbom.SBOM {
	createSBOMConfig := syft.DefaultCreateSBOMConfig()
	createSBOMConfig.WithPackagesConfig(
		pkgcataloging.DefaultConfig().
			WithJavaArchiveConfig(java.DefaultArchiveCatalogerConfig().WithUseNetwork(true)).
			WithJavascriptConfig(javascript.DefaultCatalogerConfig().WithSearchRemoteLicenses(true)).
			WithGolangConfig(golang.DefaultCatalogerConfig().
				WithSearchLocalModCacheLicenses(true).
				WithSearchRemoteLicenses(true)))
	s, err := syft.CreateSBOM(context.Background(), src, nil)
	if err != nil {
		panic(err)
	}

	return *s
}

func isDirectory(path string) bool {
	fileInfo, err := os.Stat(path)
	if err != nil {
		// log.Errorf("unable to stat directory %s: %+v", path, err)
		return false
	}
	return fileInfo.IsDir()
}

func isArchive(path string) bool {
	extension := filepath.Ext(path)
	archiveExtensions := []string{".zip", ".tar", ".gz", ".rar", ".7z"}

	for _, archiveExtension := range archiveExtensions {
		if strings.EqualFold(extension, archiveExtension) {
			return true
		}
	}

	return false
}

func isFile(path string) bool {
	fileInfo, err := os.Stat(path)
	if err != nil {
		// log.Errorf("unable to stat file %s: %+v", path, err)
		return false
	}
	return !fileInfo.IsDir()
}

// this is appended to the list of user requests if the user provides stdin
// and doesn't provide a "-" in the list of user requests
func isStdin(path string) bool {
	return strings.EqualFold(path, "-")
}
0707010000004E000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001E00000000grant-0.2.9/grant/evalutation0707010000004F000081A40000000000000000000000016896451000001501000000000000000000000000000000000000003900000000grant-0.2.9/grant/evalutation/license_evaluation_test.gopackage evalutation

import (
	"testing"

	"github.com/gobwas/glob"
	"github.com/google/go-cmp/cmp"

	"github.com/anchore/grant/grant"
)

func Test_NewLicenseEvaluations(t *testing.T) {
	tests := []struct {
		name        string
		config      EvaluationConfig
		caseFixture string
		wantFailed  bool
	}{
		{
			name:        "NewLicenseEvaluations returns a slice of LicenseEvaluation that fail for the DefaultPolicy",
			config:      DefaultEvaluationConfig(),
			caseFixture: "../../fixtures/multiple",
			wantFailed:  true,
		},
	}

	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			grantCases := fixtureCase(tc.caseFixture)
			for _, c := range grantCases {
				caseEvaluations := NewLicenseEvaluations(tc.config, c)
				if len(caseEvaluations) == 0 {
					t.Fatal("could not build license evaluations")
				}
				//if len(caseEvaluations.Licenses()) == 0 {
				//	t.Fatal("could not build list of licenses from evaluations")
				//}
				if tc.wantFailed && !caseEvaluations.IsFailed() {
					t.Fatal("expected license evaluations to fail for default config")
				}
			}
		})
	}
}

func fixtureCase(fixturePath string) []grant.Case {
	return grant.NewCases(fixturePath)
}

func Test_checkLicense(t *testing.T) {
	tests := []struct {
		name    string
		config  EvaluationConfig
		license grant.License
		wants   struct {
			Pass    bool
			Reasons []Reason
		}
	}{
		{
			name:    "should reject denied licenses when SPDX expressions and CheckNON SPDX is False",
			license: grant.License{ID: "MIT", SPDXExpression: "MIT", LicenseID: "MIT"},
			// Only allow OSI licenses.
			config: EvaluationConfig{CheckNonSPDX: false, Policy: grant.DefaultPolicy().SetMatchNonSPDX(false)},
			wants: struct {
				Pass    bool
				Reasons []Reason
			}{
				Pass: false,
				Reasons: []Reason{{
					Detail:   ReasonLicenseDeniedPolicy,
					RuleName: "default-deny-all",
				}},
			},
		},
		{
			name:    "should reject denied licenses when CheckNonSPDX is also true",
			license: grant.License{Name: "foobar"},
			// Only allow OSI licenses.
			config: EvaluationConfig{CheckNonSPDX: true, Policy: grant.DefaultPolicy().SetMatchNonSPDX(true)},
			wants: struct {
				Pass    bool
				Reasons []Reason
			}{
				Pass: false,
				Reasons: []Reason{{
					Detail:   ReasonLicenseDeniedPolicy,
					RuleName: "default-deny-all",
				}},
			},
		},
		{
			name: "non-OSI approved licenses should be denied when EvaluationConfig.OsiApproved is true",
			license: grant.License{
				IsOsiApproved:  false,
				LicenseID:      "AGPL-1.0-only",
				SPDXExpression: "AGPL-1.0-only",
			},
			// Only allow OSI licenses.
			config: EvaluationConfig{OsiApproved: true},
			wants: struct {
				Pass    bool
				Reasons []Reason
			}{
				Pass: false,
				Reasons: []Reason{{
					Detail:   ReasonLicenseDeniedOSI,
					RuleName: RuleNameNotOSIApproved,
				}},
			},
		},
		{
			name: "non-OSI approved licenses should be allowed when it's not an SPDX expression",
			license: grant.License{
				IsOsiApproved: false,
				// Non-SPDX license
				Name: "AGPL-1.0-only",
			},
			// Only allow OSI licenses.
			config: EvaluationConfig{OsiApproved: true},
			wants: struct {
				Pass    bool
				Reasons []Reason
			}{
				Pass:    true,
				Reasons: []Reason{{Detail: ReasonLicenseAllowed}},
			},
		},
		{
			name: "non-OSI approved licenses should be allowed when EvaluationConfig.OsiApproved is false",
			license: grant.License{
				IsOsiApproved:  false,
				LicenseID:      "AGPL-1.0-only",
				SPDXExpression: "AGPL-1.0-only",
			},
			config: EvaluationConfig{},
			wants: struct {
				Pass    bool
				Reasons []Reason
			}{
				Pass:    true,
				Reasons: []Reason{{Detail: ReasonLicenseAllowed}},
			},
		},
		{
			// Verifies rules are evaluated from first to last.
			name:    "A 'Deny' rule preceding a 'Deny' rule should always take precedence",
			license: grant.License{LicenseID: "BSD-3-Clause", SPDXExpression: "BSD-3-Clause"},
			config: EvaluationConfig{
				Policy: grant.Policy{
					Rules: []grant.Rule{
						{
							Name:       "allow-bsd-licenses",
							Glob:       glob.MustCompile("bsd-*"),
							Exceptions: []glob.Glob{},
							Mode:       grant.Allow,
							Reason:     "BSD licenses are allowed",
						},
						{
							Name:       "deny-all",
							Glob:       glob.MustCompile("*"),
							Exceptions: []glob.Glob{},
							Mode:       grant.Deny,
							Reason:     "No 'Allow' rule matched, unknown licenses are not allowed.",
						},
					},
				},
			},
			wants: struct {
				Pass    bool
				Reasons []Reason
			}{
				Pass: true,
				Reasons: []Reason{{
					Detail:   ReasonLicenseAllowed,
					RuleName: "allow-bsd-licenses",
				}},
			},
		},
	}

	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			result := checkLicense(tc.config, &grant.Package{}, tc.license)
			if tc.wants.Pass != result.Pass {
				t.Errorf("Expected Pass to be %t, got %t", tc.wants.Pass, result.Pass)
			}
			if diff := cmp.Diff(tc.license, result.License); diff != "" {
				t.Errorf("Mismatched 'License' field (-want +got):\n%s", diff)
			}
			if diff := cmp.Diff(tc.config.Policy, result.Policy); diff != "" {
				t.Errorf("Mismatched 'Policy' field (-want +got):\n%s", diff)
			}
			if diff := cmp.Diff(tc.wants.Reasons, result.Reason); diff != "" {
				t.Errorf("Mismatched 'Reasons' field (-want +got):\n%s", diff)
			}
		})
	}
}
07070100000050000081A40000000000000000000000016896451000001859000000000000000000000000000000000000003500000000grant-0.2.9/grant/evalutation/license_evalutation.gopackage evalutation

import (
	"sort"

	"github.com/anchore/grant/grant"
	"github.com/anchore/syft/syft/sbom"
)

func NewLicenseEvaluations(ec EvaluationConfig, c grant.Case) LicenseEvaluations {
	evaluations := make([]LicenseEvaluation, 0)
	for _, sb := range c.SBOMS {
		evaluations = checkSBOM(ec, sb)
	}

	for _, l := range c.Licenses {
		le := checkLicense(ec, nil, l)
		evaluations = append(evaluations, le)
	}

	return evaluations
}

func checkSBOM(ec EvaluationConfig, sb sbom.SBOM) LicenseEvaluations {
	evaluations := make([]LicenseEvaluation, 0)
	for pkg := range sb.Artifacts.Packages.Enumerate() {
		// since we use syft as a library to generate the sbom we need to convert its packages/licenses to grant types
		grantPkg := grant.ConvertSyftPackage(pkg)
		if len(grantPkg.Licenses) == 0 {
			// We need to include an evaluation that shows this package has no licenses
			le := NewLicenseEvaluation(grant.License{}, grantPkg, ec.Policy, []Reason{{
				Detail: ReasonNoLicenseFound,
			}}, true)
			evaluations = append(evaluations, le)
			continue
		}

		for _, l := range grantPkg.Licenses {
			le := checkLicense(ec, grantPkg, l)
			evaluations = append(evaluations, le)
		}
	}
	return evaluations
}

func checkLicense(ec EvaluationConfig, pkg *grant.Package, l grant.License) LicenseEvaluation {
	if ec.OsiApproved && l.IsSPDX() {
		if !l.IsOsiApproved {
			return NewLicenseEvaluation(l, pkg, ec.Policy, []Reason{{
				Detail:   ReasonLicenseDeniedOSI,
				RuleName: RuleNameNotOSIApproved,
			}}, false)
		}
	}

	isDenied, matchedRule := ec.Policy.IsDenied(l, pkg)

	// By default, we allow unmatched rules.
	detail := ReasonLicenseAllowed
	ruleName := ""

	if isDenied {
		detail = ReasonLicenseDeniedPolicy
	}
	if matchedRule != nil {
		ruleName = matchedRule.Name
	}

	return NewLicenseEvaluation(l, pkg, ec.Policy, []Reason{{
		Detail:   detail,
		RuleName: ruleName,
	}}, !isDenied)
}

type LicenseEvaluations []LicenseEvaluation

func (le LicenseEvaluations) Packages(license string) []string {
	packages := make([]string, 0)
	// get the set of unique packages from the list...
	packageMap := make(map[string]struct{})
	for _, e := range le {
		if e.Package != nil && (e.License.LicenseID == license || e.License.Name == license) {
			if _, ok := packageMap[e.Package.Name]; !ok {
				packageMap[e.Package.Name] = struct{}{}
				packages = append(packages, e.Package.Name)
			}
		}
	}
	sort.Strings(packages)
	return packages
}

func (le LicenseEvaluations) EmptyPackages() []string {
	packages := make([]string, 0)
	// get the set of unique packages from the list...
	packageMap := make(map[string]struct{})
	for _, e := range le {
		if e.Package != nil && e.License.LicenseID == "" && e.License.Name == "" {
			if _, ok := packageMap[e.Package.Name]; !ok {
				packageMap[e.Package.Name] = struct{}{}
				packages = append(packages, e.Package.Name)
			}
		}
	}
	sort.Strings(packages)
	return packages
}

func (le LicenseEvaluations) Licenses(pkg string) []grant.License {
	licenses := make([]grant.License, 0)
	licenseMap := make(map[string]struct{})
	// get the set of unique licenses from the list for the given package...
	for _, e := range le {
		if e.Package != nil && e.Package.Name == pkg {
			if _, ok := licenseMap[e.License.LicenseID]; !ok && e.License.SPDXExpression != "" {
				licenseMap[e.License.LicenseID] = struct{}{}
				licenses = append(licenses, e.License)
			}
			if _, ok := licenseMap[e.License.Name]; !ok && e.License.Name != "" {
				licenseMap[e.License.Name] = struct{}{}
				licenses = append(licenses, e.License)
			}
		}
	}
	return licenses
}

func (le LicenseEvaluations) GetLicenses() []string {
	licenses := make([]string, 0)
	licenseMap := make(map[string]struct{})
	// get the set of unique licenses from the list for the given package...
	for _, e := range le {
		if _, ok := licenseMap[e.License.LicenseID]; !ok && e.License.LicenseID != "" {
			licenseMap[e.License.LicenseID] = struct{}{}
			licenses = append(licenses, e.License.LicenseID)
		}
		if _, ok := licenseMap[e.License.Name]; !ok && e.License.Name != "" {
			licenseMap[e.License.Name] = struct{}{}
			licenses = append(licenses, e.License.Name)
		}
	}
	licenses = removeDuplicates(licenses)
	sort.Strings(licenses)
	return licenses
}

func removeDuplicates(elements []string) []string {
	encountered := map[string]bool{}
	result := []string{}
	for _, element := range elements {
		if !encountered[element] {
			encountered[element] = true
			result = append(result, element)
		}
	}
	return result
}

func (le LicenseEvaluations) Failed(r grant.Rule) LicenseEvaluations {
	var failed LicenseEvaluations
	for _, e := range le {
		if !e.Pass && e.RuleApplied(r) {
			failed = append(failed, e)
		}
	}
	sort.Sort(failed)
	return failed
}

func (le LicenseEvaluations) IsFailed() bool {
	for _, e := range le {
		if !e.Pass {
			return true
		}
	}
	return false
}

type LicenseEvaluation struct {
	// inputs into evaluation...
	License grant.License  // the license that we evaluated
	Package *grant.Package // any artifact license is evaluated with

	// what's used to evaluate...
	Policy grant.Policy // what the determination was made against

	// the output of an evaluation...
	Reason []Reason // reasons that the evaluation value the way it is
	Pass   bool     // The final evaluation
}

func (le LicenseEvaluation) RuleApplied(r grant.Rule) bool {
	for _, reason := range le.Reason {
		if reason.RuleName == r.Name {
			return true
		}
	}
	return false
}

func NewLicenseEvaluation(license grant.License, pkg *grant.Package, policy grant.Policy, reasons []Reason, pass bool) LicenseEvaluation {
	return LicenseEvaluation{
		License: license,
		Package: pkg,
		Policy:  policy,
		Reason:  reasons,
		Pass:    pass,
	}
}

func (le LicenseEvaluations) Len() int { return len(le) }
func (le LicenseEvaluations) Less(i, j int) bool {
	var compareI, compareJ string
	if le[i].License.LicenseID != "" {
		compareI = le[i].License.LicenseID
	} else {
		compareI = le[i].License.Name
	}
	if le[j].License.LicenseID != "" {
		compareJ = le[j].License.LicenseID
	} else {
		compareJ = le[j].License.Name
	}
	return compareI < compareJ
}
func (le LicenseEvaluations) Swap(i, j int) { le[i], le[j] = le[j], le[i] }
07070100000051000081A40000000000000000000000016896451000000231000000000000000000000000000000000000003C00000000grant-0.2.9/grant/evalutation/license_evalutation_config.gopackage evalutation

import "github.com/anchore/grant/grant"

type EvaluationConfig struct {
	// Policy is the policy to evaluate against
	// if non is supplied, the default policy is used (grant.DefaultPolicy())
	Policy grant.Policy
	// CheckNonSPDX is true if non-SPDX licenses should be checked
	CheckNonSPDX bool
	// OsiApproved is true if only OSI approved licenses are the only ones allowed
	OsiApproved bool
}

func DefaultEvaluationConfig() EvaluationConfig {
	return EvaluationConfig{
		Policy:       grant.DefaultPolicy(),
		CheckNonSPDX: false,
	}
}
07070100000052000081A400000000000000000000000168964510000001CE000000000000000000000000000000000000002800000000grant-0.2.9/grant/evalutation/reason.gopackage evalutation

type Reason struct {
	Detail   string
	RuleName string
}

var (
	RuleNameNotOSIApproved = "not OSI"
)

var (
	ReasonNoLicenseFound      = "no license found"
	ReasonLicenseDeniedPolicy = "license denied by policy"
	ReasonLicenseAllowed      = "license allowed by policy"
	ReasonLicenseDeniedOSI    = "license not OSI approved"
)

func NewReason(detail, ruleName string) Reason {
	return Reason{
		Detail:   detail,
		RuleName: ruleName,
	}
}
07070100000053000081A4000000000000000000000001689645100000071E000000000000000000000000000000000000002800000000grant-0.2.9/grant/evalutation/result.gopackage evalutation

import (
	"github.com/anchore/grant/grant"
)

// Result is the result of a policy evaluation
// It combines the supplied case with the evaluation results
type Result struct {
	Case        grant.Case
	Evaluations LicenseEvaluations
	Pass        bool
}

type Results []Result

func NewResults(ec EvaluationConfig, cases ...grant.Case) (r Results) {
	r = make(Results, 0)
	for _, c := range cases {
		e := NewLicenseEvaluations(ec, c)
		res := Result{
			Case:        c,
			Evaluations: e,
			Pass:        !e.IsFailed(),
		}
		r = append(r, res)
	}
	return r
}

func (rs Results) IsFailed() bool {
	for _, r := range rs {
		if r.Evaluations.IsFailed() {
			return true
		}
	}
	return false
}

func (rs Results) UserInputs() []string {
	inputs := make([]string, 0)
	for _, r := range rs {
		inputs = append(inputs, r.Case.UserInput)
	}
	return inputs
}

// GetFailedEvaluations returns a map of user input to slice of failed license evaluations for that input
func (rs Results) GetFailedEvaluations(userInput string, rule grant.Rule) LicenseEvaluations {
	failed := make(LicenseEvaluations, 0)
	for _, r := range rs {
		if r.Case.UserInput == userInput && !r.Pass {
			failed = append(failed, r.Evaluations.Failed(rule)...)
		}
	}

	return failed
}

type ResultSummary struct {
	CompliantPackages int `json:"compliant_packages" yaml:"compliant_packages"`
	PackageViolations int `json:"package_violations" yaml:"package_violations"`
	IgnoredPackages   int `json:"ignored_packages" yaml:"ignored_packages"`
	LicenseViolations int `json:"license_violations" yaml:"license_violations"`
	CompliantLicenses int `json:"compliant_licenses" yaml:"compliant_licenses"`
	IgnoredLicenses   int `json:"ignored_licenses" yaml:"ignored_licenses"`
}

func (rs Results) Summary() ResultSummary {
	return ResultSummary{}
}
07070100000054000081A40000000000000000000000016896451000000304000000000000000000000000000000000000002D00000000grant-0.2.9/grant/evalutation/result_test.gopackage evalutation

import (
	"testing"

	"github.com/anchore/grant/grant"
)

func Test_NewResults(t *testing.T) {
	tests := []struct {
		name     string
		ec       EvaluationConfig
		fixtures []string
		isFailed bool
	}{
		{
			name: "NewResults returns results from a group of cases that cannot pass the default config",
			ec:   DefaultEvaluationConfig(),
			fixtures: []string{
				"../../fixtures/multiple",
				"../../fixtures/licenses/MIT",
			},
			isFailed: true,
		},
	}
	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			cases := grant.NewCases(tc.fixtures...)
			results := NewResults(tc.ec, cases...)
			if tc.isFailed != results.IsFailed() {
				t.Errorf("results.IsFailed() = %v, want %v", results.IsFailed(), tc.isFailed)
			}
		})
	}
}
07070100000055000081A40000000000000000000000016896451000001331000000000000000000000000000000000000001D00000000grant-0.2.9/grant/license.gopackage grant

import (
	"strings"

	"github.com/github/go-spdx/v2/spdxexp"

	"github.com/anchore/grant/internal/log"
	"github.com/anchore/grant/internal/spdxlicense"
	syftPkg "github.com/anchore/syft/syft/pkg"
)

type LicenseID string

// License is a grant license. Either SPDXExpression or Name will be set.
// If SPDXExpression is set, Name will be empty.
// Value is the contents of the license and is optional - can be fetched from the SPDX license list
// Locations are the relative paths for a license that show evidence of its detection.
type License struct {
	// SPDXExpression is the SPDX expression for the license
	ID             LicenseID `json:"id"`
	SPDXExpression string    `json:"spdxExpression"`
	// Name is the name of the individual license if SPDXExpression is unset
	Name string `json:"name"`
	// Contents are the text of the license
	Contents string `json:"value"`
	// Locations are the paths for a package that show evidence of the license
	Locations []string `json:"location"`

	// These fields are lifted from the SPDX license list.
	// internal/spdxlicnse/license.go
	Reference             string   `json:"reference"`
	IsDeprecatedLicenseID bool     `json:"isDeprecatedLicenseId"`
	DetailsURL            string   `json:"detailsUrl"`
	ReferenceNumber       int      `json:"referenceNumber"`
	LicenseID             string   `json:"licenseId"`
	SeeAlso               []string `json:"seeAlso"`
	IsOsiApproved         bool     `json:"isOsiApproved"`
}

func (l License) String() string {
	if l.SPDXExpression != "" {
		return l.SPDXExpression
	}
	return l.Name
}

func (l License) IsSPDX() bool {
	return l.SPDXExpression != ""
}

// ConvertSyftLicenses converts a syft LicenseSet to a grant License slice
// note: syft licenses can sometimes have complex SPDX expressions.
// Grant licenses break down these expressions into individual licenses.
// Because license expressions could potentially contain multiple licenses
// that are already represented in the syft license set we need to de-duplicate
// syft licenses have a "Value" field which is the name of the license
// given to an invalid SPDX expression; grant licenses store this field as "Name"
func ConvertSyftLicenses(set syftPkg.LicenseSet) (licenses []License) {
	licenses = make([]License, 0)
	checked := make(map[string]bool)
	for _, license := range set.ToSlice() {
		locations := license.Locations.ToSlice()
		licenseLocations := make([]string, 0)
		for _, location := range locations {
			licenseLocations = append(licenseLocations, location.RealPath)
		}

		if license.SPDXExpression != "" {
			licenses = handleSPDXLicense(license, licenses, licenseLocations, checked)
			continue
		}

		licenses = addNonSPDXLicense(licenses, license, licenseLocations)
	}
	return licenses
}

func handleSPDXLicense(license syftPkg.License, licenses []License, licenseLocations []string, checked map[string]bool) []License {
	extractedLicenses, err := spdxexp.ExtractLicenses(license.SPDXExpression)
	if err != nil {
		// log.Errorf("unable to extract licenses from SPDX expression: %s", license.SPDXExpression)
		return addNonSPDXLicense(licenses, license, licenseLocations)
	}

	// process each extracted license from the SPDX expression
	for _, extractedLicense := range extractedLicenses {
		extractedLicense = strings.TrimRight(extractedLicense, "+")
		// prevent duplicates from being added when using SPDX expressions
		// EG: "MIT AND MIT" is valid, but we want to de-duplicate these
		if check(checked, extractedLicense) {
			continue
		}

		// we have what seems to be a valid SPDX license ID, let's try and get more info about it
		spdxLicense, err := spdxlicense.GetLicenseByID(extractedLicense)
		if err != nil {
			log.Errorf("unable to get license by ID: %s; no matching spdx id found", extractedLicense)
			// if we can't find a matching SPDX license, just add the license as-is
			// TODO: best matching against the spdx list index
			addNonSPDXLicense(licenses, license, licenseLocations)
			continue
		}

		licenses = append(licenses, License{
			SPDXExpression:        extractedLicense,
			Name:                  spdxLicense.Name,
			Locations:             licenseLocations,
			Reference:             spdxLicense.Reference,
			IsDeprecatedLicenseID: spdxLicense.IsDeprecatedLicenseID,
			DetailsURL:            spdxLicense.DetailsURL,
			ReferenceNumber:       spdxLicense.ReferenceNumber,
			LicenseID:             spdxLicense.LicenseID,
			SeeAlso:               spdxLicense.SeeAlso,
			IsOsiApproved:         spdxLicense.IsOsiApproved,
		})
	}
	return licenses
}

func addNonSPDXLicense(licenses []License, license syftPkg.License, locations []string) []License {
	return append(licenses, License{
		Name:      license.Value,
		Locations: locations,
	})
}

func check(checked map[string]bool, license string) bool {
	if _, ok := checked[license]; !ok {
		checked[license] = true
		return false
	}
	return true
}
07070100000056000081A4000000000000000000000001689645100000040B000000000000000000000000000000000000001D00000000grant-0.2.9/grant/package.gopackage grant

import syftPkg "github.com/anchore/syft/syft/pkg"

// PackageID is a unique identifier for a package that is tracked by grant
// It's usually provided by the SBOM; It's calculated if an SBOM is generated
type PackageID string

// Package is a single package that is tracked by grant
type Package struct {
	ID        PackageID `json:"id" yaml:"id"`
	Name      string    `json:"name" yaml:"name"`
	Type      string    `json:"type" yaml:"type"`
	Version   string    `json:"version" yaml:"version"`
	Licenses  []License `json:"licenses" yaml:"licenses"`
	Locations []string  `json:"locations" yaml:"locations"`
}

func ConvertSyftPackage(p syftPkg.Package) *Package {
	locations := p.Locations.ToSlice()
	packageLocations := make([]string, 0)
	for _, location := range locations {
		packageLocations = append(packageLocations, location.RealPath)
	}

	return &Package{
		Name:      p.Name,
		Version:   p.Version,
		Type:      string(p.Type),
		Licenses:  ConvertSyftLicenses(p.Licenses),
		Locations: packageLocations,
	}
}
07070100000057000081A40000000000000000000000016896451000000987000000000000000000000000000000000000001C00000000grant-0.2.9/grant/policy.gopackage grant

import (
	"strings"

	"github.com/gobwas/glob"
)

// Policy is a structure of rules that define how licenses are denied
type Policy struct {
	Rules        Rules
	MatchNonSPDX bool
}

var DefaultDenyAll = Rule{
	Name:       "default-deny-all",
	Glob:       glob.MustCompile("*"),
	Exceptions: []glob.Glob{},
	Mode:       Deny,
	Reason:     "grant by default will deny all licenses",
}

// DefaultPolicy returns a policy that denies all licenses
func DefaultPolicy() Policy {
	return Policy{
		Rules: []Rule{DefaultDenyAll},
	}
}

// NewPolicy builds a policy from lists of allow, deny, and ignore glob patterns
// It lower cases all patterns to make matching against the spdx license set case-insensitive
func NewPolicy(matchNonSPDX bool, rules ...Rule) (p Policy, err error) {
	if len(rules) == 0 {
		return Policy{
			Rules:        Rules{DefaultDenyAll},
			MatchNonSPDX: matchNonSPDX,
		}, nil
	}
	return Policy{
		Rules:        rules,
		MatchNonSPDX: matchNonSPDX,
	}, nil
}

// IsEmpty returns true if the policy has no allow or deny licenses
func (p Policy) IsEmpty() bool {
	return len(p.Rules) == 0
}

// IsDenied returns true if the given license is denied by the policy
func (p Policy) IsDenied(license License, pkg *Package) (bool, *Rule) {
	for _, rule := range p.Rules {
		// ignore non spdx licenses if the rule is configured to not match on non spdx
		isSPDX := license.IsSPDX()
		matchNonSPDX := p.MatchNonSPDX
		if !matchNonSPDX && !isSPDX {
			continue
		}
		var toMatch string
		if license.IsSPDX() {
			toMatch = strings.ToLower(license.LicenseID)
		} else {
			toMatch = strings.ToLower(license.Name)
		}

		toMatch = strings.ToLower(toMatch)
		// If there is a match and the content to match is not an empty string
		if rule.Glob.Match(toMatch) && toMatch != "" {
			var returnVal bool
			// set the return value based on the rule mode
			if rule.Mode == Allow || rule.Mode == Ignore {
				returnVal = false
			} else {
				returnVal = true
			}
			if pkg == nil {
				return returnVal, &rule
			}
			for _, exception := range rule.Exceptions {
				if exception.Match(pkg.Name) {
					return rule.Mode != Deny, &rule
				}
			}
			// true when Mode=Deny, false otherwise
			return rule.Mode == Deny, &rule
		}
	}
	return false, nil
}

// SetMatchNonSPDX updates the match option for the given policy
func (p Policy) SetMatchNonSPDX(matchNonSPDX bool) Policy {
	p.MatchNonSPDX = matchNonSPDX
	return p
}
07070100000058000081A40000000000000000000000016896451000001B1C000000000000000000000000000000000000002100000000grant-0.2.9/grant/policy_test.gopackage grant

import (
	"testing"

	"github.com/gobwas/glob"
	"github.com/google/go-cmp/cmp"
)

func Test_DefaultPolicy(t *testing.T) {
	tests := []struct {
		name           string
		want           Policy
		compareOptions []cmp.Option
	}{
		{
			name: "DefaultPolicy() returns the expected default policy",
			want: Policy{
				Rules: []Rule{
					{
						Name:       "default-deny-all",
						Glob:       glob.MustCompile("*"),
						Exceptions: []glob.Glob{},
						Mode:       Deny,
						Reason:     "grant by default will deny all licenses",
					},
				},
				MatchNonSPDX: false,
			},
			compareOptions: []cmp.Option{},
		},
	}

	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			got := DefaultPolicy()
			if diff := cmp.Diff(tc.want, got, tc.compareOptions...); diff != "" {
				t.Errorf("DefaultPolicy() mismatch (-want +got):\n%s", diff)
			}
		})
	}
}

func Test_NewPolicy(t *testing.T) {
	tests := []struct {
		name           string
		want           Policy
		rules          []Rule
		matchNonSPDX   bool
		compareOptions []cmp.Option
		wantErr        bool
	}{
		{
			name: "NewPolicy() returns the expected policy with no rules",
			want: Policy{
				Rules:        Rules{DefaultDenyAll},
				MatchNonSPDX: false,
			},
			compareOptions: []cmp.Option{},
			wantErr:        false,
		},
	}

	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			got, err := NewPolicy(tc.matchNonSPDX, tc.rules...)
			if (err != nil) != tc.wantErr {
				t.Errorf("NewPolicy() error = %v, wantErr %v", err, tc.wantErr)
				return
			}
			if diff := cmp.Diff(tc.want, got, tc.compareOptions...); diff != "" {
				t.Errorf("NewPolicy() mismatch (-want +got):\n%s", diff)
			}
		})
	}
}

func Test_Policy_IsDenied(t *testing.T) {
	tests := []struct {
		name string
		p    Policy
		want struct {
			denied bool
			rule   *Rule
		}
	}{
		{
			name: "Policy Default Deny All denies all licenses",
			p:    DefaultPolicy(),
			want: struct {
				denied bool
				rule   *Rule
			}{
				denied: true,
				rule: &Rule{
					Name:       "default-deny-all",
					Glob:       glob.MustCompile("*"),
					Exceptions: []glob.Glob{},
					Mode:       Deny,
					Reason:     "grant by default will deny all licenses",
				},
			},
		},

		{
			name: "Policy allowing all licenses",
			p: Policy{
				Rules: []Rule{{
					Name:       "allow-all",
					Glob:       glob.MustCompile("*"),
					Exceptions: []glob.Glob{},
					Mode:       Allow,
					Reason:     "all licenses are allowed",
				}},
			},
			want: struct {
				denied bool
				rule   *Rule
			}{
				denied: false,
				rule: &Rule{
					Name:       "allow-all",
					Glob:       glob.MustCompile("*"),
					Exceptions: []glob.Glob{},
					Mode:       Allow,
					Reason:     "all licenses are allowed",
				},
			},
		},
		{
			name: "Policy ignoring all licenses",
			p: Policy{
				Rules: []Rule{{
					Name:       "ignore-all",
					Glob:       glob.MustCompile("*"),
					Exceptions: []glob.Glob{},
					Mode:       Ignore,
					Reason:     "all licenses are ignored",
				}},
			},
			want: struct {
				denied bool
				rule   *Rule
			}{
				denied: false,
				rule: &Rule{
					Name:       "ignore-all",
					Glob:       glob.MustCompile("*"),
					Exceptions: []glob.Glob{},
					Mode:       Ignore,
					Reason:     "all licenses are ignored",
				},
			},
		},
	}
	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			denied, rule := tc.p.IsDenied(License{LicenseID: "MIT", SPDXExpression: "MIT"}, nil)
			if denied != tc.want.denied {
				t.Errorf("Expected %t, got %t", tc.want.denied, denied)
			}
			if diff := cmp.Diff(tc.want.rule, rule); diff != "" {
				t.Errorf("IsDenied() mismatch (-want +got):\n%s", diff)
			}
		})
	}
}

func Test_Policy_Exceptions(t *testing.T) {
	tests := []struct {
		name string
		p    Policy
		want struct {
			denied bool
			rule   *Rule
		}
	}{
		{
			name: "Policy Default Deny All denies all licenses",
			p: Policy{
				Rules: Rules{Rule{
					Name:       "default-deny-all",
					Glob:       glob.MustCompile("*"),
					Exceptions: []glob.Glob{glob.MustCompile("MIT")},
					Mode:       Deny,
					Reason:     "grant by default will deny all licenses",
				}},
				MatchNonSPDX: false,
			},
			want: struct {
				denied bool
				rule   *Rule
			}{
				denied: false,
				rule: &Rule{
					Name:       "default-deny-all",
					Glob:       glob.MustCompile("*"),
					Exceptions: []glob.Glob{glob.MustCompile("MIT")},
					Mode:       Deny,
					Reason:     "grant by default will deny all licenses",
				},
			},
		},
	}
	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			denied, rule := tc.p.IsDenied(License{LicenseID: "MIT", SPDXExpression: "MIT"}, &Package{ID: "MIT", Name: "MIT"})
			if denied != tc.want.denied {
				t.Errorf("Expected %t, got %t", tc.want.denied, denied)
			}
			if diff := cmp.Diff(tc.want.rule, rule); diff != "" {
				t.Errorf("IsDenied() mismatch (-want +got):\n%s", diff)
			}
		})
	}
}

func Test_Policy_Allow(t *testing.T) {
	tests := []struct {
		name string
		p    Policy
		want struct {
			denied bool
			rule   *Rule
		}
	}{
		{
			name: "Policy Allow MIT",
			p: Policy{
				Rules: Rules{Rule{
					Name:       "allow MIT",
					Glob:       glob.MustCompile("mit"),
					Exceptions: []glob.Glob{},
					Mode:       Allow,
					Reason:     "grant allow MIT",
				}, Rule{
					Name:       "deny gpl",
					Glob:       glob.MustCompile("gpl"),
					Exceptions: []glob.Glob{},
					Mode:       Deny,
					Reason:     "grant deny gpl",
				}},
				MatchNonSPDX: false,
			},
			want: struct {
				denied bool
				rule   *Rule
			}{
				denied: false,
				rule: &Rule{
					Name:       "allow MIT",
					Glob:       glob.MustCompile("mit"),
					Exceptions: []glob.Glob{},
					Mode:       Allow,
					Reason:     "grant allow MIT",
				},
			},
		},
		{
			name: "Policy Deny MIT",
			p: Policy{
				Rules: Rules{Rule{
					Name:       "deny MIT",
					Glob:       glob.MustCompile("mit"),
					Exceptions: []glob.Glob{},
					Mode:       Deny,
					Reason:     "grant deny MIT",
				}, Rule{
					Name:       "allow gpl",
					Glob:       glob.MustCompile("gpl"),
					Exceptions: []glob.Glob{},
					Mode:       Allow,
					Reason:     "grant allow gpl",
				}},
				MatchNonSPDX: false,
			},
			want: struct {
				denied bool
				rule   *Rule
			}{
				denied: true,
				rule: &Rule{
					Name:       "deny MIT",
					Glob:       glob.MustCompile("mit"),
					Exceptions: []glob.Glob{},
					Mode:       Deny,
					Reason:     "grant deny MIT",
				},
			},
		},
	}
	for _, tc := range tests {
		t.Run(tc.name, func(t *testing.T) {
			denied, rule := tc.p.IsDenied(License{LicenseID: "MIT", SPDXExpression: "MIT"}, nil)
			if denied != tc.want.denied {
				t.Errorf("Expected %t, got %t", tc.want.denied, denied)
			}
			if diff := cmp.Diff(tc.want.rule, rule); diff != "" {
				t.Errorf("IsDenied() mismatch (-want +got):\n%s", diff)
			}
		})
	}
}
07070100000059000081A4000000000000000000000001689645100000025E000000000000000000000000000000000000001A00000000grant-0.2.9/grant/rule.gopackage grant

import "github.com/gobwas/glob"

type Rules []Rule

type Rule struct {
	Name               string
	Reason             string
	Glob               glob.Glob
	OriginalPattern    string
	Exceptions         []glob.Glob
	OriginalExceptions []string
	Mode               RuleMode
	Severity           RuleSeverity
}

type RuleMode string

type RuleSeverity string

const (
	Critical RuleSeverity = "critical"
	High     RuleSeverity = "high"
	Medium   RuleSeverity = "medium"
	Low      RuleSeverity = "low"
)

const (
	Allow  RuleMode = "allow"
	Deny   RuleMode = "deny"
	Ignore RuleMode = "ignore"
)
0707010000005A000081ED00000000000000000000000168964510000043E5000000000000000000000000000000000000001700000000grant-0.2.9/install.sh#!/bin/sh
# note: we require errors to propagate (don't set -e)
set -u

PROJECT_NAME="grant"
OWNER=anchore
REPO="${PROJECT_NAME}"
GITHUB_DOWNLOAD_PREFIX=https://github.com/${OWNER}/${REPO}/releases/download
INSTALL_SH_BASE_URL=https://get.anchore.io/${PROJECT_NAME}
LEGACY_INSTALL_SH_BASE_URL=https://raw.githubusercontent.com/${OWNER}/${PROJECT_NAME}
PROGRAM_ARGS=$@

# do not change the name of this parameter (this must always be backwards compatible)
DOWNLOAD_TAG_INSTALL_SCRIPT=${DOWNLOAD_TAG_INSTALL_SCRIPT:-true}

#
# usage [script-name]
#
usage() (
  this=$1
  cat <<EOF
$this: download go binaries for ${OWNER}/${PROJECT_NAME}

Usage: $this [-b] dir [-d] [tag]
  -b  the installation directory (defaults to ./bin)
  -d  turns on debug logging
  -dd turns on trace logging
  [tag] the specific release to use (if missing, then the latest will be used)
EOF
  exit 2
)


# ------------------------------------------------------------------------
# https://github.com/client9/shlib - portable posix shell functions
# Public domain - http://unlicense.org
# https://github.com/client9/shlib/blob/master/LICENSE.md
# but credit (and pull requests) appreciated.
# ------------------------------------------------------------------------

is_command() (
  command -v "$1" >/dev/null
)

echo_stderr() (
  echo "$@" 1>&2
)

_logp=2
log_set_priority() {
  _logp="$1"
}

log_priority() (
  if test -z "$1"; then
    echo "$_logp"
    return
  fi
  [ "$1" -le "$_logp" ]
)

init_colors() {
  RED=''
  BLUE=''
  PURPLE=''
  BOLD=''
  RESET=''
  # check if stdout is a terminal
  if test -t 1 && is_command tput; then
      # see if it supports colors
      ncolors=$(tput colors)
      if test -n "$ncolors" && test $ncolors -ge 8; then
        RED='\033[0;31m'
        BLUE='\033[0;34m'
        PURPLE='\033[0;35m'
        BOLD='\033[1m'
        RESET='\033[0m'
      fi
  fi
}

init_colors

log_tag() (
  case $1 in
    0) echo "${RED}${BOLD}[error]${RESET}" ;;
    1) echo "${RED}[warn]${RESET}" ;;
    2) echo "[info]${RESET}" ;;
    3) echo "${BLUE}[debug]${RESET}" ;;
    4) echo "${PURPLE}[trace]${RESET}" ;;
    *) echo "[$1]" ;;
  esac
)


log_trace_priority=4
log_trace() (
  priority=$log_trace_priority
  log_priority "$priority" || return 0
  echo_stderr "$(log_tag $priority)" "${@}" "${RESET}"
)

log_debug_priority=3
log_debug() (
  priority=$log_debug_priority
  log_priority "$priority" || return 0
  echo_stderr "$(log_tag $priority)" "${@}" "${RESET}"
)

log_info_priority=2
log_info() (
  priority=$log_info_priority
  log_priority "$priority" || return 0
  echo_stderr "$(log_tag $priority)" "${@}" "${RESET}"
)

log_warn_priority=1
log_warn() (
  priority=$log_warn_priority
  log_priority "$priority" || return 0
  echo_stderr "$(log_tag $priority)" "${@}" "${RESET}"
)

log_err_priority=0
log_err() (
  priority=$log_err_priority
  log_priority "$priority" || return 0
  echo_stderr "$(log_tag $priority)" "${@}" "${RESET}"
)

uname_os_check() (
  os=$1
  case "$os" in
    darwin) return 0 ;;
    dragonfly) return 0 ;;
    freebsd) return 0 ;;
    linux) return 0 ;;
    android) return 0 ;;
    nacl) return 0 ;;
    netbsd) return 0 ;;
    openbsd) return 0 ;;
    plan9) return 0 ;;
    solaris) return 0 ;;
    windows) return 0 ;;
  esac
  log_err "uname_os_check '$(uname -s)' got converted to '$os' which is not a GOOS value. Please file bug at https://github.com/client9/shlib"
  return 1
)

uname_arch_check() (
  arch=$1
  case "$arch" in
    386) return 0 ;;
    amd64) return 0 ;;
    arm64) return 0 ;;
    armv5) return 0 ;;
    armv6) return 0 ;;
    armv7) return 0 ;;
    ppc64) return 0 ;;
    ppc64le) return 0 ;;
    mips) return 0 ;;
    mipsle) return 0 ;;
    mips64) return 0 ;;
    mips64le) return 0 ;;
    s390x) return 0 ;;
    amd64p32) return 0 ;;
  esac
  log_err "uname_arch_check '$(uname -m)' got converted to '$arch' which is not a GOARCH value.  Please file bug report at https://github.com/client9/shlib"
  return 1
)

unpack() (
  archive=$1

  log_trace "unpack(archive=${archive})"

  case "${archive}" in
    *.tar.gz | *.tgz) tar --no-same-owner -xzf "${archive}" ;;
    *.tar) tar --no-same-owner -xf "${archive}" ;;
    *.zip) unzip -q "${archive}" ;;
    *.dmg) extract_from_dmg "${archive}" ;;
    *)
      log_err "unpack unknown archive format for ${archive}"
      return 1
      ;;
  esac
)

extract_from_dmg() (
  dmg_file=$1

  mount_point="/Volumes/tmp-dmg"
  hdiutil attach -quiet -nobrowse -mountpoint "${mount_point}" "${dmg_file}"
  cp -fR "${mount_point}/." ./
  hdiutil detach -quiet -force "${mount_point}"
)

http_download_curl() (
  local_file=$1
  source_url=$2
  header=$3

  log_trace "http_download_curl(local_file=$local_file, source_url=$source_url, header=$header)"

  if [ -z "$header" ]; then
    code=$(curl -w '%{http_code}' -sL -o "$local_file" "$source_url")
  else
    code=$(curl -w '%{http_code}' -sL -H "$header" -o "$local_file" "$source_url")
  fi

  if [ "$code" != "200" ]; then
    log_err "received HTTP status=$code for url='$source_url'"
    return 1
  fi
  return 0
)

http_download_wget() (
  local_file=$1
  source_url=$2
  header=$3

  log_trace "http_download_wget(local_file=$local_file, source_url=$source_url, header=$header)"

  if [ -z "$header" ]; then
    wget -q -O "$local_file" "$source_url"
  else
    wget -q --header "$header" -O "$local_file" "$source_url"
  fi
)

http_download() (
  log_debug "http_download(url=$2)"
  if is_command curl; then
    http_download_curl "$@"
    return
  elif is_command wget; then
    http_download_wget "$@"
    return
  fi
  log_err "http_download unable to find wget or curl"
  return 1
)

http_copy() (
  tmp=$(mktemp)
  http_download "${tmp}" "$1" "$2" || return 1
  body=$(cat "$tmp")
  rm -f "${tmp}"
  echo "$body"
)

hash_sha256() (
  TARGET=${1:-/dev/stdin}
  if is_command gsha256sum; then
    hash=$(gsha256sum "$TARGET") || return 1
    echo "$hash" | cut -d ' ' -f 1
  elif is_command sha256sum; then
    hash=$(sha256sum "$TARGET") || return 1
    echo "$hash" | cut -d ' ' -f 1
  elif is_command shasum; then
    hash=$(shasum -a 256 "$TARGET" 2>/dev/null) || return 1
    echo "$hash" | cut -d ' ' -f 1
  elif is_command openssl; then
    hash=$(openssl -dst openssl dgst -sha256 "$TARGET") || return 1
    echo "$hash" | cut -d ' ' -f a
  else
    log_err "hash_sha256 unable to find command to compute sha-256 hash"
    return 1
  fi
)

hash_sha256_verify() (
  TARGET=$1
  checksums=$2
  if [ -z "$checksums" ]; then
    log_err "hash_sha256_verify checksum file not specified in arg2"
    return 1
  fi
  BASENAME=${TARGET##*/}
  want=$(grep "${BASENAME}" "${checksums}" 2>/dev/null | tr '\t' ' ' | cut -d ' ' -f 1)
  if [ -z "$want" ]; then
    log_err "hash_sha256_verify unable to find checksum for '${TARGET}' in '${checksums}'"
    return 1
  fi
  got=$(hash_sha256 "$TARGET")
  if [ "$want" != "$got" ]; then
    log_err "hash_sha256_verify checksum for '$TARGET' did not verify ${want} vs $got"
    return 1
  fi
)

# ------------------------------------------------------------------------
# End of functions from https://github.com/client9/shlib
# ------------------------------------------------------------------------

# asset_file_exists [path]
#
# returns 1 if the given file does not exist
#
asset_file_exists() (
  path="$1"
  if [ ! -f "${path}" ]; then
      return 1
  fi
)


# github_release_json [owner] [repo] [version]
#
# outputs release json string
#
github_release_json() (
  owner=$1
  repo=$2
  version=$3
  test -z "$version" && version="latest"
  giturl="https://github.com/${owner}/${repo}/releases/${version}"
  json=$(http_copy "$giturl" "Accept:application/json")

  log_trace "github_release_json(owner=${owner}, repo=${repo}, version=${version}) returned '${json}'"

  test -z "$json" && return 1
  echo "${json}"
)

# extract_value [key-value-pair]
#
# outputs value from a colon delimited key-value pair
#
extract_value() (
  key_value="$1"
  IFS=':' read -r _ value << EOF
${key_value}
EOF
  echo "$value"
)

# extract_json_value [json] [key]
#
# outputs value of the key from the given json string
#
extract_json_value() (
  json="$1"
  key="$2"
  key_value=$(echo "${json}" | grep  -o "\"$key\":[^,]*[,}]" | tr -d '",}')

  extract_value "$key_value"
)

# github_release_tag [release-json]
#
# outputs release tag string
#
github_release_tag() (
  json="$1"
  tag=$(extract_json_value "${json}" "tag_name")
  test -z "$tag" && return 1
  echo "$tag"
)

# download_github_release_checksums [release-url-prefix] [name] [version] [output-dir]
#
# outputs path to the downloaded checksums file
#
download_github_release_checksums() (
  download_url="$1"
  name="$2"
  version="$3"
  output_dir="$4"

  log_trace "download_github_release_checksums(url=${download_url}, name=${name}, version=${version}, output_dir=${output_dir})"

  checksum_filename=${name}_${version}_checksums.txt
  checksum_url=${download_url}/${checksum_filename}
  output_path="${output_dir}/${checksum_filename}"

  http_download "${output_path}" "${checksum_url}" ""
  asset_file_exists "${output_path}"

  log_trace "download_github_release_checksums() returned '${output_path}'"

  echo "${output_path}"
)

# search_for_asset [checksums-file-path] [name] [os] [arch] [format]
#
# outputs name of the asset to download
#
search_for_asset() (
  checksum_path="$1"
  name="$2"
  os="$3"
  arch="$4"
  format="$5"

  log_trace "search_for_asset(checksum-path=${checksum_path}, name=${name}, os=${os}, arch=${arch}, format=${format})"

  asset_glob="${name}_.*_${os}_${arch}.${format}"
  output_path=$(grep -o "${asset_glob}" "${checksum_path}" || true)

  log_trace "search_for_asset() returned '${output_path}'"

  echo "${output_path}"
)

# uname_os
#
# outputs an adjusted os value
#
uname_os() (
  os=$(uname -s | tr '[:upper:]' '[:lower:]')
  case "$os" in
    cygwin_nt*) os="windows" ;;
    mingw*) os="windows" ;;
    msys_nt*) os="windows" ;;
  esac

  uname_os_check "$os"

  log_trace "uname_os() returned '${os}'"

  echo "$os"
)

# uname_arch
#
# outputs an adjusted architecture value
#
uname_arch() (
  arch=$(uname -m)
  case $arch in
    x86_64) arch="amd64" ;;
    x86) arch="386" ;;
    i686) arch="386" ;;
    i386) arch="386" ;;
    aarch64) arch="arm64" ;;
    armv5*) arch="armv5" ;;
    armv6*) arch="armv6" ;;
    armv7*) arch="armv7" ;;
  esac

  uname_arch_check "${arch}"

  log_trace "uname_arch() returned '${arch}'"

  echo "${arch}"
)

# get_release_tag [owner] [repo] [tag]
#
# outputs tag string
#
get_release_tag() (
  owner="$1"
  repo="$2"
  tag="$3"

  log_trace "get_release_tag(owner=${owner}, repo=${repo}, tag=${tag})"

  json=$(github_release_json "${owner}" "${repo}" "${tag}")
  real_tag=$(github_release_tag "${json}")
  if test -z "${real_tag}"; then
    return 1
  fi

  log_trace "get_release_tag() returned '${real_tag}'"

  echo "${real_tag}"
)

# tag_to_version [tag]
#
# outputs version string
#
tag_to_version() (
  tag="$1"
  value="${tag#v}"

  log_trace "tag_to_version(tag=${tag}) returned '${value}'"

  echo "$value"
)

# get_binary_name [os] [arch] [default-name]
#
# outputs a the binary string name
#
get_binary_name() (
  os="$1"
  arch="$2"
  binary="$3"
  original_binary="${binary}"

  case "${os}" in
    windows) binary="${binary}.exe" ;;
  esac

  log_trace "get_binary_name(os=${os}, arch=${arch}, binary=${original_binary}) returned '${binary}'"

  echo "${binary}"
)


# get_format_name [os] [arch] [default-format]
#
# outputs an adjusted file format
#
get_format_name() (
  os="$1"
  arch="$2"
  format="$3"
  original_format="${format}"

  case ${os} in
    windows) format=zip ;;
  esac

  log_trace "get_format_name(os=${os}, arch=${arch}, format=${original_format}) returned '${format}'"

  echo "${format}"
)

# download_and_install_asset [release-url-prefix] [download-path] [install-path] [name] [os] [arch] [version] [format] [binary]
#
# attempts to download the archive and install it to the given path.
#
download_and_install_asset() (
  download_url="$1"
  download_path="$2"
  install_path=$3
  name="$4"
  os="$5"
  arch="$6"
  version="$7"
  format="$8"
  binary="$9"

  asset_filepath=$(download_asset "${download_url}" "${download_path}" "${name}" "${os}" "${arch}" "${version}" "${format}")

  # don't continue if we couldn't download an asset
  if [ -z "${asset_filepath}" ]; then
      log_err "could not find release asset for os='${os}' arch='${arch}' format='${format}' "
      return 1
  fi

  install_asset "${asset_filepath}" "${install_path}" "${binary}"
)

# download_asset [release-url-prefix] [download-path] [name] [os] [arch] [version] [format] [binary]
#
# outputs the path to the downloaded asset asset_filepath
#
download_asset() (
  download_url="$1"
  destination="$2"
  name="$3"
  os="$4"
  arch="$5"
  version="$6"
  format="$7"

  log_trace "download_asset(url=${download_url}, destination=${destination}, name=${name}, os=${os}, arch=${arch}, version=${version}, format=${format})"

  checksums_filepath=$(download_github_release_checksums "${download_url}" "${name}" "${version}" "${destination}")

  log_trace "checksums content:\n$(cat ${checksums_filepath})"

  asset_filename=$(search_for_asset "${checksums_filepath}" "${name}" "${os}" "${arch}" "${format}")

  # don't continue if we couldn't find a matching asset from the checksums file
  if [ -z "${asset_filename}" ]; then
      return 1
  fi

  asset_url="${download_url}/${asset_filename}"
  asset_filepath="${destination}/${asset_filename}"
  http_download "${asset_filepath}" "${asset_url}" ""

  hash_sha256_verify "${asset_filepath}" "${checksums_filepath}"

  log_trace "download_asset_by_checksums_file() returned '${asset_filepath}'"

  echo "${asset_filepath}"
)

# install_asset [asset-path] [destination-path] [binary]
#
install_asset() (
  asset_filepath="$1"
  destination="$2"
  binary="$3"

  log_trace "install_asset(asset=${asset_filepath}, destination=${destination}, binary=${binary})"

  # don't continue if we don't have anything to install
  if [ -z "${asset_filepath}" ]; then
      return
  fi

  archive_dir=$(dirname "${asset_filepath}")

  # unarchive the downloaded archive to the temp dir
  (cd "${archive_dir}" && unpack "${asset_filepath}")

  # create the destination dir
  test ! -d "${destination}" && install -d "${destination}"

  # install the binary to the destination dir
  install "${archive_dir}/${binary}" "${destination}/"
)

main() (
  # parse arguments

  # note: never change default install directory (this must always be backwards compatible)
  install_dir=${install_dir:-./bin}

  # note: never change the program flags or arguments (this must always be backwards compatible)
  while getopts "b:dh?x" arg; do
    case "$arg" in
      b) install_dir="$OPTARG" ;;
      d)
        if [ "$_logp" = "$log_info_priority" ]; then
          # -d == debug
          log_set_priority $log_debug_priority
        else
          # -dd (or -ddd...) == trace
          log_set_priority $log_trace_priority
        fi
        ;;
      h | \?) usage "$0" ;;
      x) set -x ;;
    esac
  done
  shift $((OPTIND - 1))
  set +u
  tag=$1

  if [ -z "${tag}" ]; then
    log_debug "checking github for the current release tag"
    tag=""
  else
    log_debug "checking github for release tag='${tag}'"
  fi
  set -u

  tag=$(get_release_tag "${OWNER}" "${REPO}" "${tag}")

  if [ "$?" != "0" ]; then
      log_err "unable to find tag='${tag}'"
      log_err "do not specify a version or select a valid version from https://github.com/${OWNER}/${REPO}/releases"
      return 1
  fi

  # run the application

  version=$(tag_to_version "${tag}")
  os=$(uname_os)
  arch=$(uname_arch)
  format=$(get_format_name "${os}" "${arch}" "tar.gz")
  binary=$(get_binary_name "${os}" "${arch}" "${PROJECT_NAME}")
  download_url="${GITHUB_DOWNLOAD_PREFIX}/${tag}"

  # we always use the install.sh script that is associated with the tagged release. Why? the latest install.sh is not
  # guaranteed to be able to install every version of the application. We use the DOWNLOAD_TAG_INSTALL_SCRIPT env var
  # to indicate if we should continue processing with the existing script or to download the script from the given tag.
  if [ "${DOWNLOAD_TAG_INSTALL_SCRIPT}" = "true" ]; then
      export DOWNLOAD_TAG_INSTALL_SCRIPT=false
      log_info "fetching release script for tag='${tag}'"
      if ! install_script=$(http_copy "${INSTALL_SH_BASE_URL}/${tag}/install.sh" ""); then
          log_warn "failed to fetch from ${INSTALL_SH_BASE_URL}, trying fallback URL"
          install_script=$(http_copy "${LEGACY_INSTALL_SH_BASE_URL}/${tag}/install.sh" "")
      fi
      echo "${install_script}" | sh -s -- ${PROGRAM_ARGS}
      exit $?
  fi

  log_info "using release tag='${tag}' version='${version}' os='${os}' arch='${arch}'"

  download_dir=$(mktemp -d)
  trap 'rm -rf -- "$download_dir"' EXIT

  log_debug "downloading files into ${download_dir}"

  download_and_install_asset "${download_url}" "${download_dir}" "${install_dir}" "${PROJECT_NAME}" "${os}" "${arch}" "${version}" "${format}" "${binary}"

  # don't continue if we couldn't install the asset
  if [ "$?" != "0" ]; then
      log_err "failed to install ${PROJECT_NAME}"
      return 1
  fi

  log_info "installed ${install_dir}/${binary}"
)

# entrypoint

set +u
if [ -z "${TEST_INSTALL_SH}" ]; then
  set -u
  main "$@"
fi
set -u
0707010000005B000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001500000000grant-0.2.9/internal0707010000005C000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001900000000grant-0.2.9/internal/bus0707010000005D000081A40000000000000000000000016896451000000221000000000000000000000000000000000000002000000000grant-0.2.9/internal/bus/bus.gopackage bus

import "github.com/wagoodman/go-partybus"

var publisher partybus.Publisher

// Set sets the singleton event bus publisher. This is optional; if no bus is provided, the library will
// behave no differently than if a bus had been provided.
func Set(p partybus.Publisher) {
	publisher = p
}

func Get() partybus.Publisher {
	return publisher
}

// Publish an event onto the bus. If there is no bus set by the calling application, this does nothing.
func Publish(e partybus.Event) {
	if publisher != nil {
		publisher.Publish(e)
	}
}
0707010000005E000081A400000000000000000000000168964510000003F5000000000000000000000000000000000000002400000000grant-0.2.9/internal/bus/helpers.gopackage bus

import (
	"github.com/wagoodman/go-partybus"
	"github.com/wagoodman/go-progress"

	"github.com/anchore/clio"
	"github.com/anchore/grant/event"
	"github.com/anchore/grant/internal/redact"
)

func Exit() {
	Publish(clio.ExitEvent(false))
}

func ExitWithInterrupt() {
	Publish(clio.ExitEvent(true))
}

func Report(report string) {
	if len(report) == 0 {
		return
	}
	report = redact.Apply(report)
	Publish(partybus.Event{
		Type:  event.CLIReport,
		Value: report,
	})
}

func Notify(message string) {
	Publish(partybus.Event{
		Type:  event.CLINotification,
		Value: message,
	})
}

func PublishTask(titles event.Title, context string, total int) *event.ManualStagedProgress {
	prog := &event.ManualStagedProgress{
		Manual:      progress.NewManual(int64(total)),
		AtomicStage: progress.NewAtomicStage(""),
	}

	Publish(partybus.Event{
		Type: event.TaskStartedEvent,
		Source: event.Task{
			Title:   titles,
			Context: context,
		},
		Value: progress.StagedProgressable(prog),
	})

	return prog
}
0707010000005F000081A40000000000000000000000016896451000000058000000000000000000000000000000000000001E00000000grant-0.2.9/internal/grant.gopackage internal

const (
	ApplicationName    = "grant"
	ApplicationVersion = "0.0.1"
)
07070100000060000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001B00000000grant-0.2.9/internal/input07070100000061000081A400000000000000000000000168964510000006A1000000000000000000000000000000000000002400000000grant-0.2.9/internal/input/input.gopackage input

import (
	"bytes"
	"fmt"
	"io"
	"os"

	"github.com/mitchellh/go-homedir"
	"github.com/pkg/errors"
)

// IsStdinPipeOrRedirect returns true if stdin is provided via pipe or redirect
func IsStdinPipeOrRedirect() (bool, error) {
	fi, err := os.Stdin.Stat()
	if err != nil {
		return false, fmt.Errorf("unable to determine if there is piped input: %w", err)
	}

	// note: we should NOT use the absence of a character device here as the hint that there may be input expected
	// on stdin, as running grant as a subprocess you would expect no character device to be present but input can
	// be from either stdin or indicated by the CLI. Checking if stdin is a pipe is the most direct way to determine
	// if there *may* be bytes that will show up on stdin that should be used for the analysis source.
	return fi.Mode()&os.ModeNamedPipe != 0 || fi.Size() > 0, nil
}

func GetReader(src string) (io.ReadSeeker, error) {
	switch src {
	case "-":
		return decodeStdin(os.Stdin)
	default:
		fileLocation, err := homedir.Expand(src)
		if err != nil {
			return nil, errors.Wrap(err, fmt.Sprintf("could not check licenses; could not expand path: %s ", src))
		}

		reader, err := os.Open(fileLocation)
		if err != nil {
			return nil, errors.Wrap(err, fmt.Sprintf("could not check licenses; could not open file: %s ", fileLocation))
		}
		return reader, nil
	}
}

func decodeStdin(r io.Reader) (io.ReadSeeker, error) {
	b, err := io.ReadAll(r)
	if err != nil {
		return nil, fmt.Errorf("failed reading stdin: %w", err)
	}

	reader := bytes.NewReader(b)
	_, err = reader.Seek(0, io.SeekStart)
	if err != nil {
		return nil, fmt.Errorf("failed to parse stdin: %w", err)
	}

	return reader, nil
}
07070100000062000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001900000000grant-0.2.9/internal/log07070100000063000081A40000000000000000000000016896451000000A41000000000000000000000000000000000000002000000000grant-0.2.9/internal/log/log.gopackage log

import (
	"github.com/anchore/go-logger"
	"github.com/anchore/go-logger/adapter/discard"
	redactLogger "github.com/anchore/go-logger/adapter/redact"
	"github.com/anchore/grant/internal/redact"
)

// log is the singleton used to facilitate logging internally within
var log = discard.New()

func Set(l logger.Logger) {
	// though the application will automatically have a redaction logger, library consumers may not be doing this.
	// for this reason we additionally ensure there is a redaction logger configured for any logger passed. The
	// source of truth for redaction values is still in the internal redact package. If the passed logger is already
	// redacted, then this is a no-op.
	store := redact.Get()
	if store != nil {
		l = redactLogger.New(l, store)
	}
	log = l
}

func Get() logger.Logger {
	return log
}

// Errorf takes a formatted template string and template arguments for the error logging level.
func Errorf(format string, args ...interface{}) {
	log.Errorf(format, args...)
}

// Error logs the given arguments at the error logging level.
func Error(args ...interface{}) {
	log.Error(args...)
}

// Warnf takes a formatted template string and template arguments for the warning logging level.
func Warnf(format string, args ...interface{}) {
	log.Warnf(format, args...)
}

// Warn logs the given arguments at the warning logging level.
func Warn(args ...interface{}) {
	log.Warn(args...)
}

// Infof takes a formatted template string and template arguments for the info logging level.
func Infof(format string, args ...interface{}) {
	log.Infof(format, args...)
}

// Info logs the given arguments at the info logging level.
func Info(args ...interface{}) {
	log.Info(args...)
}

// Debugf takes a formatted template string and template arguments for the debug logging level.
func Debugf(format string, args ...interface{}) {
	log.Debugf(format, args...)
}

// Debug logs the given arguments at the debug logging level.
func Debug(args ...interface{}) {
	log.Debug(args...)
}

// Tracef takes a formatted template string and template arguments for the trace logging level.
func Tracef(format string, args ...interface{}) {
	log.Tracef(format, args...)
}

// Trace logs the given arguments at the trace logging level.
func Trace(args ...interface{}) {
	log.Trace(args...)
}

// WithFields returns a message logger with multiple key-value fields.
func WithFields(fields ...interface{}) logger.MessageLogger {
	return log.WithFields(fields...)
}

// Nested returns a new logger with hard coded key-value pairs
func Nested(fields ...interface{}) logger.Logger {
	return log.Nested(fields...)
}
07070100000064000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001C00000000grant-0.2.9/internal/redact07070100000065000081A40000000000000000000000016896451000000481000000000000000000000000000000000000002600000000grant-0.2.9/internal/redact/redact.gopackage redact

import "github.com/anchore/go-logger/adapter/redact"

var store redact.Store

func Set(s redact.Store) {
	if store != nil {
		// if someone is trying to set a redaction store and we already have one then something is wrong. The store
		// that we're replacing might already have values in it, so we should never replace it.
		panic("replace existing redaction store (probably unintentional)")
	}
	store = s
}

func Get() redact.Store {
	return store
}

func Add(vs ...string) {
	if store == nil {
		// if someone is trying to add values that should never be output and we don't have a store then something is wrong.
		// we should never accidentally output values that should be redacted, thus we panic here.
		panic("cannot add redactions without a store")
	}
	store.Add(vs...)
}

func Apply(value string) string {
	if store == nil {
		// if someone is trying to add values that should never be output and we don't have a store then something is wrong.
		// we should never accidentally output values that should be redacted, thus we panic here.
		panic("cannot apply redactions without a store")
	}
	return store.RedactString(value)
}
07070100000066000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000002100000000grant-0.2.9/internal/spdxlicense07070100000067000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000002A00000000grant-0.2.9/internal/spdxlicense/generate07070100000068000081A40000000000000000000000016896451000000A0F000000000000000000000000000000000000004400000000grant-0.2.9/internal/spdxlicense/generate/generate_license_index.go//go:generate go run generate_license_index.go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
	"strings"
	"text/template"
	"time"

	"github.com/anchore/grant/internal/spdxlicense"
)

const (
	generates = "../license_index.go"
)

var FuncMap = template.FuncMap{
	"ToLower": func(format string, args ...interface{}) string {
		return strings.ToLower(fmt.Sprintf(format, args...))
	},
}

var codeTemplate = template.Must(template.New("license_index.go").Funcs(FuncMap).Parse(`// Code generated by internal/spdxlicense/generate/generate_license_index.go; DO NOT EDIT.
// This file was generated by go generate; DO NOT EDIT; {{ .Timestamp }}
// License source: {{ .URL }}
package spdxlicense

const Version = {{ printf "%q" .Version }}

const ReleaseData = {{ printf "%q" .ReleaseDate }}

var index = map[string]SPDXLicense{
{{- range .Licenses }}
	{{ ToLower "%q" .LicenseID }}: {
		Reference: {{ printf "%q" .Reference }},
		IsDeprecatedLicenseID: {{ .IsDeprecatedLicenseID }},
		DetailsURL: {{ printf "%q" .DetailsURL }},
		ReferenceNumber: {{ .ReferenceNumber }},
		Name: {{ printf "%q" .Name }},
		LicenseID: {{ printf "%q" .LicenseID }},
		SeeAlso: []string{
			{{- range .SeeAlso }}
			{{ printf "%q" . }},
			{{- end }}	
		},	
		IsOsiApproved: {{ .IsOsiApproved }},
	},
{{- end }}
}
`))

func main() {
	if err := generate(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	fmt.Println("generated", generates)
}

func generate() error {
	spdxLicenseResposne, err := fetchLicenses()
	if err != nil {
		return err
	}

	if err := os.Remove(generates); err != nil && !os.IsNotExist(err) {
		fmt.Println("Error deleting existing file:", err)
		return err
	}

	f, err := os.Create(generates)
	if err != nil {
		return err
	}
	defer f.Close()

	return codeTemplate.Execute(f, struct {
		Timestamp   string
		URL         string
		Version     string
		ReleaseDate string
		Licenses    []spdxlicense.SPDXLicense
	}{
		Timestamp:   time.Now().UTC().Format(time.RFC3339),
		URL:         "https://spdx.org/licenses/licenses.json",
		Version:     spdxLicenseResposne.LicenseListVersion,
		ReleaseDate: spdxLicenseResposne.ReleaseDate,
		Licenses:    spdxLicenseResposne.Licenses,
	})
}

func fetchLicenses() (r *spdxlicense.Response, err error) {
	response, err := http.Get("https://spdx.org/licenses/licenses.json")
	if err != nil {
		return r, err
	}
	defer response.Body.Close()
	var spdxLicenseResponse spdxlicense.Response
	if err := json.NewDecoder(response.Body).Decode(&spdxLicenseResponse); err != nil {
		return r, err
	}
	return &spdxLicenseResponse, nil
}
07070100000069000081A40000000000000000000000016896451000000452000000000000000000000000000000000000002C00000000grant-0.2.9/internal/spdxlicense/license.gopackage spdxlicense

import (
	"fmt"
	"strings"
)

// SPDXLicenseResponse is the response from the SPDX license list endpoint
// https://spdx.org/licenses/licenses.json
type Response struct {
	LicenseListVersion string        `json:"licenseListVersion"`
	ReleaseDate        string        `json:"releaseDate"`
	Licenses           []SPDXLicense `json:"licenses"`
}

type SPDXLicense struct {
	Reference             string   `json:"reference"`
	IsDeprecatedLicenseID bool     `json:"isDeprecatedLicenseId"`
	DetailsURL            string   `json:"detailsUrl"`
	ReferenceNumber       int      `json:"referenceNumber"`
	Name                  string   `json:"name"`
	LicenseID             string   `json:"licenseId"`
	SeeAlso               []string `json:"seeAlso"`
	IsOsiApproved         bool     `json:"isOsiApproved"`
}

func GetLicenseByID(id string) (license SPDXLicense, err error) {
	if index == nil {
		return license, fmt.Errorf("SPDX license index is nil")
	}

	license, ok := index[strings.ToLower(id)]
	if !ok {
		return license, fmt.Errorf("SPDX license %s not found", id)
	}

	return license, nil
}
0707010000006A000081A40000000000000000000000016896451000043B23000000000000000000000000000000000000003200000000grant-0.2.9/internal/spdxlicense/license_index.go// Code generated by internal/spdxlicense/generate/generate_license_index.go; DO NOT EDIT.
// This file was generated by go generate; DO NOT EDIT; 2023-11-20T17:52:23Z
// License source: https://spdx.org/licenses/licenses.json
package spdxlicense

const Version = "3.22"

const ReleaseData = "2023-10-05"

var index = map[string]SPDXLicense{
	"qhull": {
		Reference:             "https://spdx.org/licenses/Qhull.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Qhull.json",
		ReferenceNumber:       0,
		Name:                  "Qhull License",
		LicenseID:             "Qhull",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Qhull",
		},
		IsOsiApproved: false,
	},
	"nosl": {
		Reference:             "https://spdx.org/licenses/NOSL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NOSL.json",
		ReferenceNumber:       1,
		Name:                  "Netizen Open Source License",
		LicenseID:             "NOSL",
		SeeAlso: []string{
			"http://bits.netizen.com.au/licenses/NOSL/nosl.txt",
		},
		IsOsiApproved: false,
	},
	"cc-by-nd-2.5": {
		Reference:             "https://spdx.org/licenses/CC-BY-ND-2.5.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-ND-2.5.json",
		ReferenceNumber:       2,
		Name:                  "Creative Commons Attribution No Derivatives 2.5 Generic",
		LicenseID:             "CC-BY-ND-2.5",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nd/2.5/legalcode",
		},
		IsOsiApproved: false,
	},
	"o-uda-1.0": {
		Reference:             "https://spdx.org/licenses/O-UDA-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/O-UDA-1.0.json",
		ReferenceNumber:       3,
		Name:                  "Open Use of Data Agreement v1.0",
		LicenseID:             "O-UDA-1.0",
		SeeAlso: []string{
			"https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md",
			"https://cdla.dev/open-use-of-data-agreement-v1-0/",
		},
		IsOsiApproved: false,
	},
	"drl-1.0": {
		Reference:             "https://spdx.org/licenses/DRL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/DRL-1.0.json",
		ReferenceNumber:       4,
		Name:                  "Detection Rule License 1.0",
		LicenseID:             "DRL-1.0",
		SeeAlso: []string{
			"https://github.com/Neo23x0/sigma/blob/master/LICENSE.Detection.Rules.md",
		},
		IsOsiApproved: false,
	},
	"imagemagick": {
		Reference:             "https://spdx.org/licenses/ImageMagick.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ImageMagick.json",
		ReferenceNumber:       5,
		Name:                  "ImageMagick License",
		LicenseID:             "ImageMagick",
		SeeAlso: []string{
			"http://www.imagemagick.org/script/license.php",
		},
		IsOsiApproved: false,
	},
	"mpich2": {
		Reference:             "https://spdx.org/licenses/mpich2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/mpich2.json",
		ReferenceNumber:       6,
		Name:                  "mpich2 License",
		LicenseID:             "mpich2",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/MIT",
		},
		IsOsiApproved: false,
	},
	"cc-by-sa-4.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-4.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-4.0.json",
		ReferenceNumber:       7,
		Name:                  "Creative Commons Attribution Share Alike 4.0 International",
		LicenseID:             "CC-BY-SA-4.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/4.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"spl-1.0": {
		Reference:             "https://spdx.org/licenses/SPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SPL-1.0.json",
		ReferenceNumber:       8,
		Name:                  "Sun Public License v1.0",
		LicenseID:             "SPL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/SPL-1.0",
		},
		IsOsiApproved: true,
	},
	"mcphee-slideshow": {
		Reference:             "https://spdx.org/licenses/McPhee-slideshow.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/McPhee-slideshow.json",
		ReferenceNumber:       9,
		Name:                  "McPhee Slideshow License",
		LicenseID:             "McPhee-slideshow",
		SeeAlso: []string{
			"https://mirror.las.iastate.edu/tex-archive/graphics/metapost/contrib/macros/slideshow/slideshow.mp",
		},
		IsOsiApproved: false,
	},
	"mit-enna": {
		Reference:             "https://spdx.org/licenses/MIT-enna.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-enna.json",
		ReferenceNumber:       10,
		Name:                  "enna License",
		LicenseID:             "MIT-enna",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/MIT#enna",
		},
		IsOsiApproved: false,
	},
	"osl-2.1": {
		Reference:             "https://spdx.org/licenses/OSL-2.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OSL-2.1.json",
		ReferenceNumber:       11,
		Name:                  "Open Software License 2.1",
		LicenseID:             "OSL-2.1",
		SeeAlso: []string{
			"http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm",
			"https://opensource.org/licenses/OSL-2.1",
		},
		IsOsiApproved: true,
	},
	"gfdl-1.2-or-later": {
		Reference:             "https://spdx.org/licenses/GFDL-1.2-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.2-or-later.json",
		ReferenceNumber:       12,
		Name:                  "GNU Free Documentation License v1.2 or later",
		LicenseID:             "GFDL-1.2-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-lbnl": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-LBNL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-LBNL.json",
		ReferenceNumber:       13,
		Name:                  "Lawrence Berkeley National Labs BSD variant license",
		LicenseID:             "BSD-3-Clause-LBNL",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/LBNLBSD",
		},
		IsOsiApproved: true,
	},
	"ofl-1.0-rfn": {
		Reference:             "https://spdx.org/licenses/OFL-1.0-RFN.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OFL-1.0-RFN.json",
		ReferenceNumber:       14,
		Name:                  "SIL Open Font License 1.0 with Reserved Font Name",
		LicenseID:             "OFL-1.0-RFN",
		SeeAlso: []string{
			"http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web",
		},
		IsOsiApproved: false,
	},
	"gpl-3.0": {
		Reference:             "https://spdx.org/licenses/GPL-3.0.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-3.0.json",
		ReferenceNumber:       15,
		Name:                  "GNU General Public License v3.0 only",
		LicenseID:             "GPL-3.0",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/gpl-3.0-standalone.html",
			"https://opensource.org/licenses/GPL-3.0",
		},
		IsOsiApproved: true,
	},
	"watcom-1.0": {
		Reference:             "https://spdx.org/licenses/Watcom-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Watcom-1.0.json",
		ReferenceNumber:       16,
		Name:                  "Sybase Open Watcom Public License 1.0",
		LicenseID:             "Watcom-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/Watcom-1.0",
		},
		IsOsiApproved: true,
	},
	"mpl-1.0": {
		Reference:             "https://spdx.org/licenses/MPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MPL-1.0.json",
		ReferenceNumber:       17,
		Name:                  "Mozilla Public License 1.0",
		LicenseID:             "MPL-1.0",
		SeeAlso: []string{
			"http://www.mozilla.org/MPL/MPL-1.0.html",
			"https://opensource.org/licenses/MPL-1.0",
		},
		IsOsiApproved: true,
	},
	"aladdin": {
		Reference:             "https://spdx.org/licenses/Aladdin.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Aladdin.json",
		ReferenceNumber:       18,
		Name:                  "Aladdin Free Public License",
		LicenseID:             "Aladdin",
		SeeAlso: []string{
			"http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm",
		},
		IsOsiApproved: false,
	},
	"etalab-2.0": {
		Reference:             "https://spdx.org/licenses/etalab-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/etalab-2.0.json",
		ReferenceNumber:       19,
		Name:                  "Etalab Open License 2.0",
		LicenseID:             "etalab-2.0",
		SeeAlso: []string{
			"https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf",
			"https://raw.githubusercontent.com/DISIC/politique-de-contribution-open-source/master/LICENSE",
		},
		IsOsiApproved: false,
	},
	"copyleft-next-0.3.0": {
		Reference:             "https://spdx.org/licenses/copyleft-next-0.3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/copyleft-next-0.3.0.json",
		ReferenceNumber:       20,
		Name:                  "copyleft-next 0.3.0",
		LicenseID:             "copyleft-next-0.3.0",
		SeeAlso: []string{
			"https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0",
		},
		IsOsiApproved: false,
	},
	"nlpl": {
		Reference:             "https://spdx.org/licenses/NLPL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NLPL.json",
		ReferenceNumber:       21,
		Name:                  "No Limit Public License",
		LicenseID:             "NLPL",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/NLPL",
		},
		IsOsiApproved: false,
	},
	"mplus": {
		Reference:             "https://spdx.org/licenses/mplus.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/mplus.json",
		ReferenceNumber:       22,
		Name:                  "mplus Font License",
		LicenseID:             "mplus",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing:Mplus?rd=Licensing/mplus",
		},
		IsOsiApproved: false,
	},
	"ecl-1.0": {
		Reference:             "https://spdx.org/licenses/ECL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ECL-1.0.json",
		ReferenceNumber:       23,
		Name:                  "Educational Community License v1.0",
		LicenseID:             "ECL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/ECL-1.0",
		},
		IsOsiApproved: true,
	},
	"fwlw": {
		Reference:             "https://spdx.org/licenses/fwlw.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/fwlw.json",
		ReferenceNumber:       24,
		Name:                  "fwlw License",
		LicenseID:             "fwlw",
		SeeAlso: []string{
			"https://mirrors.nic.cz/tex-archive/macros/latex/contrib/fwlw/README",
		},
		IsOsiApproved: false,
	},
	"blueoak-1.0.0": {
		Reference:             "https://spdx.org/licenses/BlueOak-1.0.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BlueOak-1.0.0.json",
		ReferenceNumber:       25,
		Name:                  "Blue Oak Model License 1.0.0",
		LicenseID:             "BlueOak-1.0.0",
		SeeAlso: []string{
			"https://blueoakcouncil.org/license/1.0.0",
		},
		IsOsiApproved: false,
	},
	"jpnic": {
		Reference:             "https://spdx.org/licenses/JPNIC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/JPNIC.json",
		ReferenceNumber:       26,
		Name:                  "Japan Network Information Center License",
		LicenseID:             "JPNIC",
		SeeAlso: []string{
			"https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366",
		},
		IsOsiApproved: false,
	},
	"afl-3.0": {
		Reference:             "https://spdx.org/licenses/AFL-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AFL-3.0.json",
		ReferenceNumber:       27,
		Name:                  "Academic Free License v3.0",
		LicenseID:             "AFL-3.0",
		SeeAlso: []string{
			"http://www.rosenlaw.com/AFL3.0.htm",
			"https://opensource.org/licenses/afl-3.0",
		},
		IsOsiApproved: true,
	},
	"cc-by-nc-sa-2.0-fr": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-2.0-FR.json",
		ReferenceNumber:       28,
		Name:                  "Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France",
		LicenseID:             "CC-BY-NC-SA-2.0-FR",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/2.0/fr/legalcode",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.3-invariants-or-later": {
		Reference:             "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.3-invariants-or-later.json",
		ReferenceNumber:       29,
		Name:                  "GNU Free Documentation License v1.3 or later - invariants",
		LicenseID:             "GFDL-1.3-invariants-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/fdl-1.3.txt",
		},
		IsOsiApproved: false,
	},
	"cfitsio": {
		Reference:             "https://spdx.org/licenses/CFITSIO.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CFITSIO.json",
		ReferenceNumber:       30,
		Name:                  "CFITSIO License",
		LicenseID:             "CFITSIO",
		SeeAlso: []string{
			"https://heasarc.gsfc.nasa.gov/docs/software/fitsio/c/f_user/node9.html",
			"https://heasarc.gsfc.nasa.gov/docs/software/ftools/fv/doc/license.html",
		},
		IsOsiApproved: false,
	},
	"gpl-1.0-only": {
		Reference:             "https://spdx.org/licenses/GPL-1.0-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GPL-1.0-only.json",
		ReferenceNumber:       31,
		Name:                  "GNU General Public License v1.0 only",
		LicenseID:             "GPL-1.0-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html",
		},
		IsOsiApproved: false,
	},
	"xskat": {
		Reference:             "https://spdx.org/licenses/XSkat.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/XSkat.json",
		ReferenceNumber:       32,
		Name:                  "XSkat License",
		LicenseID:             "XSkat",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/XSkat_License",
		},
		IsOsiApproved: false,
	},
	"cc-by-nd-2.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-ND-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-ND-2.0.json",
		ReferenceNumber:       33,
		Name:                  "Creative Commons Attribution No Derivatives 2.0 Generic",
		LicenseID:             "CC-BY-ND-2.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nd/2.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"cc-by-sa-3.0-igo": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-3.0-IGO.json",
		ReferenceNumber:       34,
		Name:                  "Creative Commons Attribution-ShareAlike 3.0 IGO",
		LicenseID:             "CC-BY-SA-3.0-IGO",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/3.0/igo/legalcode",
		},
		IsOsiApproved: false,
	},
	"cc-by-3.0-nl": {
		Reference:             "https://spdx.org/licenses/CC-BY-3.0-NL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-3.0-NL.json",
		ReferenceNumber:       35,
		Name:                  "Creative Commons Attribution 3.0 Netherlands",
		LicenseID:             "CC-BY-3.0-NL",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/3.0/nl/legalcode",
		},
		IsOsiApproved: false,
	},
	"fsful": {
		Reference:             "https://spdx.org/licenses/FSFUL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/FSFUL.json",
		ReferenceNumber:       36,
		Name:                  "FSF Unlimited License",
		LicenseID:             "FSFUL",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License",
		},
		IsOsiApproved: false,
	},
	"hpnd-export-us": {
		Reference:             "https://spdx.org/licenses/HPND-export-US.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-export-US.json",
		ReferenceNumber:       37,
		Name:                  "HPND with US Government export control warning",
		LicenseID:             "HPND-export-US",
		SeeAlso: []string{
			"https://www.kermitproject.org/ck90.html#source",
		},
		IsOsiApproved: false,
	},
	"catosl-1.1": {
		Reference:             "https://spdx.org/licenses/CATOSL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CATOSL-1.1.json",
		ReferenceNumber:       38,
		Name:                  "Computer Associates Trusted Open Source License 1.1",
		LicenseID:             "CATOSL-1.1",
		SeeAlso: []string{
			"https://opensource.org/licenses/CATOSL-1.1",
		},
		IsOsiApproved: true,
	},
	"zpl-2.1": {
		Reference:             "https://spdx.org/licenses/ZPL-2.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ZPL-2.1.json",
		ReferenceNumber:       39,
		Name:                  "Zope Public License 2.1",
		LicenseID:             "ZPL-2.1",
		SeeAlso: []string{
			"http://old.zope.org/Resources/ZPL/",
		},
		IsOsiApproved: true,
	},
	"cc-by-nc-sa-2.0-de": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-2.0-DE.json",
		ReferenceNumber:       40,
		Name:                  "Creative Commons Attribution Non Commercial Share Alike 2.0 Germany",
		LicenseID:             "CC-BY-NC-SA-2.0-DE",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/2.0/de/legalcode",
		},
		IsOsiApproved: false,
	},
	"ogl-uk-1.0": {
		Reference:             "https://spdx.org/licenses/OGL-UK-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OGL-UK-1.0.json",
		ReferenceNumber:       41,
		Name:                  "Open Government Licence v1.0",
		LicenseID:             "OGL-UK-1.0",
		SeeAlso: []string{
			"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-no-nuclear-warranty": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty.json",
		ReferenceNumber:       42,
		Name:                  "BSD 3-Clause No Nuclear Warranty",
		LicenseID:             "BSD-3-Clause-No-Nuclear-Warranty",
		SeeAlso: []string{
			"https://jogamp.org/git/?p=gluegen.git;a=blob_plain;f=LICENSE.txt",
		},
		IsOsiApproved: false,
	},
	"tu-berlin-2.0": {
		Reference:             "https://spdx.org/licenses/TU-Berlin-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TU-Berlin-2.0.json",
		ReferenceNumber:       43,
		Name:                  "Technische Universitaet Berlin License 2.0",
		LicenseID:             "TU-Berlin-2.0",
		SeeAlso: []string{
			"https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt",
		},
		IsOsiApproved: false,
	},
	"gpl-2.0+": {
		Reference:             "https://spdx.org/licenses/GPL-2.0+.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-2.0+.json",
		ReferenceNumber:       44,
		Name:                  "GNU General Public License v2.0 or later",
		LicenseID:             "GPL-2.0+",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
			"https://opensource.org/licenses/GPL-2.0",
		},
		IsOsiApproved: true,
	},
	"saxpath": {
		Reference:             "https://spdx.org/licenses/Saxpath.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Saxpath.json",
		ReferenceNumber:       45,
		Name:                  "Saxpath License",
		LicenseID:             "Saxpath",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Saxpath_License",
		},
		IsOsiApproved: false,
	},
	"zpl-2.0": {
		Reference:             "https://spdx.org/licenses/ZPL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ZPL-2.0.json",
		ReferenceNumber:       46,
		Name:                  "Zope Public License 2.0",
		LicenseID:             "ZPL-2.0",
		SeeAlso: []string{
			"http://old.zope.org/Resources/License/ZPL-2.0",
			"https://opensource.org/licenses/ZPL-2.0",
		},
		IsOsiApproved: true,
	},
	"bitstream-charter": {
		Reference:             "https://spdx.org/licenses/Bitstream-Charter.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Bitstream-Charter.json",
		ReferenceNumber:       47,
		Name:                  "Bitstream Charter Font License",
		LicenseID:             "Bitstream-Charter",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Charter#License_Text",
			"https://raw.githubusercontent.com/blackhole89/notekit/master/data/fonts/Charter%20license.txt",
		},
		IsOsiApproved: false,
	},
	"openssl": {
		Reference:             "https://spdx.org/licenses/OpenSSL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OpenSSL.json",
		ReferenceNumber:       48,
		Name:                  "OpenSSL License",
		LicenseID:             "OpenSSL",
		SeeAlso: []string{
			"http://www.openssl.org/source/license.html",
		},
		IsOsiApproved: false,
	},
	"clartistic": {
		Reference:             "https://spdx.org/licenses/ClArtistic.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ClArtistic.json",
		ReferenceNumber:       49,
		Name:                  "Clarified Artistic License",
		LicenseID:             "ClArtistic",
		SeeAlso: []string{
			"http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/",
			"http://www.ncftp.com/ncftp/doc/LICENSE.txt",
		},
		IsOsiApproved: false,
	},
	"mpl-2.0-no-copyleft-exception": {
		Reference:             "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MPL-2.0-no-copyleft-exception.json",
		ReferenceNumber:       50,
		Name:                  "Mozilla Public License 2.0 (no copyleft exception)",
		LicenseID:             "MPL-2.0-no-copyleft-exception",
		SeeAlso: []string{
			"https://www.mozilla.org/MPL/2.0/",
			"https://opensource.org/licenses/MPL-2.0",
		},
		IsOsiApproved: true,
	},
	"x11": {
		Reference:             "https://spdx.org/licenses/X11.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/X11.json",
		ReferenceNumber:       51,
		Name:                  "X11 License",
		LicenseID:             "X11",
		SeeAlso: []string{
			"http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3",
		},
		IsOsiApproved: false,
	},
	"fsfullr": {
		Reference:             "https://spdx.org/licenses/FSFULLR.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/FSFULLR.json",
		ReferenceNumber:       52,
		Name:                  "FSF Unlimited License (with License Retention)",
		LicenseID:             "FSFULLR",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant",
		},
		IsOsiApproved: false,
	},
	"cc-by-4.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-4.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-4.0.json",
		ReferenceNumber:       53,
		Name:                  "Creative Commons Attribution 4.0 International",
		LicenseID:             "CC-BY-4.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/4.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"cc-by-sa-3.0-de": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-3.0-DE.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-3.0-DE.json",
		ReferenceNumber:       54,
		Name:                  "Creative Commons Attribution Share Alike 3.0 Germany",
		LicenseID:             "CC-BY-SA-3.0-DE",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/3.0/de/legalcode",
		},
		IsOsiApproved: false,
	},
	"cc-by-sa-2.5": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-2.5.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-2.5.json",
		ReferenceNumber:       55,
		Name:                  "Creative Commons Attribution Share Alike 2.5 Generic",
		LicenseID:             "CC-BY-SA-2.5",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/2.5/legalcode",
		},
		IsOsiApproved: false,
	},
	"mpeg-ssg": {
		Reference:             "https://spdx.org/licenses/MPEG-SSG.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MPEG-SSG.json",
		ReferenceNumber:       56,
		Name:                  "MPEG Software Simulation",
		LicenseID:             "MPEG-SSG",
		SeeAlso: []string{
			"https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/ppm/ppmtompeg/jrevdct.c#l1189",
		},
		IsOsiApproved: false,
	},
	"wxwindows": {
		Reference:             "https://spdx.org/licenses/wxWindows.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/wxWindows.json",
		ReferenceNumber:       57,
		Name:                  "wxWindows Library License",
		LicenseID:             "wxWindows",
		SeeAlso: []string{
			"https://opensource.org/licenses/WXwindows",
		},
		IsOsiApproved: true,
	},
	"lppl-1.0": {
		Reference:             "https://spdx.org/licenses/LPPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LPPL-1.0.json",
		ReferenceNumber:       58,
		Name:                  "LaTeX Project Public License v1.0",
		LicenseID:             "LPPL-1.0",
		SeeAlso: []string{
			"http://www.latex-project.org/lppl/lppl-1-0.txt",
		},
		IsOsiApproved: false,
	},
	"lgpl-2.0": {
		Reference:             "https://spdx.org/licenses/LGPL-2.0.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/LGPL-2.0.json",
		ReferenceNumber:       59,
		Name:                  "GNU Library General Public License v2 only",
		LicenseID:             "LGPL-2.0",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html",
		},
		IsOsiApproved: true,
	},
	"freeimage": {
		Reference:             "https://spdx.org/licenses/FreeImage.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/FreeImage.json",
		ReferenceNumber:       60,
		Name:                  "FreeImage Public License v1.0",
		LicenseID:             "FreeImage",
		SeeAlso: []string{
			"http://freeimage.sourceforge.net/freeimage-license.txt",
		},
		IsOsiApproved: false,
	},
	"cern-ohl-1.2": {
		Reference:             "https://spdx.org/licenses/CERN-OHL-1.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CERN-OHL-1.2.json",
		ReferenceNumber:       61,
		Name:                  "CERN Open Hardware Licence v1.2",
		LicenseID:             "CERN-OHL-1.2",
		SeeAlso: []string{
			"https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2",
		},
		IsOsiApproved: false,
	},
	"artistic-1.0-cl8": {
		Reference:             "https://spdx.org/licenses/Artistic-1.0-cl8.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Artistic-1.0-cl8.json",
		ReferenceNumber:       62,
		Name:                  "Artistic License 1.0 w/clause 8",
		LicenseID:             "Artistic-1.0-cl8",
		SeeAlso: []string{
			"https://opensource.org/licenses/Artistic-1.0",
		},
		IsOsiApproved: true,
	},
	"lzma-sdk-9.22": {
		Reference:             "https://spdx.org/licenses/LZMA-SDK-9.22.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LZMA-SDK-9.22.json",
		ReferenceNumber:       63,
		Name:                  "LZMA SDK License (versions 9.22 and beyond)",
		LicenseID:             "LZMA-SDK-9.22",
		SeeAlso: []string{
			"https://www.7-zip.org/sdk.html",
			"https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-no-nuclear-license-2014": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014.json",
		ReferenceNumber:       64,
		Name:                  "BSD 3-Clause No Nuclear License 2014",
		LicenseID:             "BSD-3-Clause-No-Nuclear-License-2014",
		SeeAlso: []string{
			"https://java.net/projects/javaeetutorial/pages/BerkeleyLicense",
		},
		IsOsiApproved: false,
	},
	"cc-by-nd-3.0-de": {
		Reference:             "https://spdx.org/licenses/CC-BY-ND-3.0-DE.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-ND-3.0-DE.json",
		ReferenceNumber:       65,
		Name:                  "Creative Commons Attribution No Derivatives 3.0 Germany",
		LicenseID:             "CC-BY-ND-3.0-DE",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nd/3.0/de/legalcode",
		},
		IsOsiApproved: false,
	},
	"afmparse": {
		Reference:             "https://spdx.org/licenses/Afmparse.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Afmparse.json",
		ReferenceNumber:       66,
		Name:                  "Afmparse License",
		LicenseID:             "Afmparse",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Afmparse",
		},
		IsOsiApproved: false,
	},
	"cern-ohl-s-2.0": {
		Reference:             "https://spdx.org/licenses/CERN-OHL-S-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CERN-OHL-S-2.0.json",
		ReferenceNumber:       67,
		Name:                  "CERN Open Hardware Licence Version 2 - Strongly Reciprocal",
		LicenseID:             "CERN-OHL-S-2.0",
		SeeAlso: []string{
			"https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2",
		},
		IsOsiApproved: true,
	},
	"doc": {
		Reference:             "https://spdx.org/licenses/DOC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/DOC.json",
		ReferenceNumber:       68,
		Name:                  "DOC License",
		LicenseID:             "DOC",
		SeeAlso: []string{
			"http://www.cs.wustl.edu/~schmidt/ACE-copying.html",
			"https://www.dre.vanderbilt.edu/~schmidt/ACE-copying.html",
		},
		IsOsiApproved: false,
	},
	"gl2ps": {
		Reference:             "https://spdx.org/licenses/GL2PS.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GL2PS.json",
		ReferenceNumber:       69,
		Name:                  "GL2PS License",
		LicenseID:             "GL2PS",
		SeeAlso: []string{
			"http://www.geuz.org/gl2ps/COPYING.GL2PS",
		},
		IsOsiApproved: false,
	},
	"ypl-1.1": {
		Reference:             "https://spdx.org/licenses/YPL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/YPL-1.1.json",
		ReferenceNumber:       70,
		Name:                  "Yahoo! Public License v1.1",
		LicenseID:             "YPL-1.1",
		SeeAlso: []string{
			"http://www.zimbra.com/license/yahoo_public_license_1.1.html",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.2-only": {
		Reference:             "https://spdx.org/licenses/GFDL-1.2-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.2-only.json",
		ReferenceNumber:       71,
		Name:                  "GNU Free Documentation License v1.2 only",
		LicenseID:             "GFDL-1.2-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-nd-3.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-ND-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-ND-3.0.json",
		ReferenceNumber:       72,
		Name:                  "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported",
		LicenseID:             "CC-BY-NC-ND-3.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"ecos-2.0": {
		Reference:             "https://spdx.org/licenses/eCos-2.0.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/eCos-2.0.json",
		ReferenceNumber:       73,
		Name:                  "eCos license version 2.0",
		LicenseID:             "eCos-2.0",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/ecos-license.html",
		},
		IsOsiApproved: false,
	},
	"ofl-1.0-no-rfn": {
		Reference:             "https://spdx.org/licenses/OFL-1.0-no-RFN.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OFL-1.0-no-RFN.json",
		ReferenceNumber:       74,
		Name:                  "SIL Open Font License 1.0 with no Reserved Font Name",
		LicenseID:             "OFL-1.0-no-RFN",
		SeeAlso: []string{
			"http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web",
		},
		IsOsiApproved: false,
	},
	"sendmail": {
		Reference:             "https://spdx.org/licenses/Sendmail.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Sendmail.json",
		ReferenceNumber:       75,
		Name:                  "Sendmail License",
		LicenseID:             "Sendmail",
		SeeAlso: []string{
			"http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf",
			"https://web.archive.org/web/20160322142305/https://www.sendmail.com/pdfs/open_source/sendmail_license.pdf",
		},
		IsOsiApproved: false,
	},
	"agpl-3.0-only": {
		Reference:             "https://spdx.org/licenses/AGPL-3.0-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AGPL-3.0-only.json",
		ReferenceNumber:       76,
		Name:                  "GNU Affero General Public License v3.0 only",
		LicenseID:             "AGPL-3.0-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/agpl.txt",
			"https://opensource.org/licenses/AGPL-3.0",
		},
		IsOsiApproved: true,
	},
	"cecill-2.0": {
		Reference:             "https://spdx.org/licenses/CECILL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CECILL-2.0.json",
		ReferenceNumber:       77,
		Name:                  "CeCILL Free Software License Agreement v2.0",
		LicenseID:             "CECILL-2.0",
		SeeAlso: []string{
			"http://www.cecill.info/licences/Licence_CeCILL_V2-en.html",
		},
		IsOsiApproved: false,
	},
	"mit-advertising": {
		Reference:             "https://spdx.org/licenses/MIT-advertising.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-advertising.json",
		ReferenceNumber:       78,
		Name:                  "Enlightenment License (e16)",
		LicenseID:             "MIT-advertising",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising",
		},
		IsOsiApproved: false,
	},
	"snprintf": {
		Reference:             "https://spdx.org/licenses/snprintf.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/snprintf.json",
		ReferenceNumber:       79,
		Name:                  "snprintf License",
		LicenseID:             "snprintf",
		SeeAlso: []string{
			"https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/bsd-snprintf.c#L2",
		},
		IsOsiApproved: false,
	},
	"cc-by-nd-3.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-ND-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-ND-3.0.json",
		ReferenceNumber:       80,
		Name:                  "Creative Commons Attribution No Derivatives 3.0 Unported",
		LicenseID:             "CC-BY-ND-3.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nd/3.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"cc-by-2.5-au": {
		Reference:             "https://spdx.org/licenses/CC-BY-2.5-AU.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-2.5-AU.json",
		ReferenceNumber:       81,
		Name:                  "Creative Commons Attribution 2.5 Australia",
		LicenseID:             "CC-BY-2.5-AU",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/2.5/au/legalcode",
		},
		IsOsiApproved: false,
	},
	"naist-2003": {
		Reference:             "https://spdx.org/licenses/NAIST-2003.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NAIST-2003.json",
		ReferenceNumber:       82,
		Name:                  "Nara Institute of Science and Technology License (2003)",
		LicenseID:             "NAIST-2003",
		SeeAlso: []string{
			"https://enterprise.dejacode.com/licenses/public/naist-2003/#license-text",
			"https://github.com/nodejs/node/blob/4a19cc8947b1bba2b2d27816ec3d0edf9b28e503/LICENSE#L343",
		},
		IsOsiApproved: false,
	},
	"nbpl-1.0": {
		Reference:             "https://spdx.org/licenses/NBPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NBPL-1.0.json",
		ReferenceNumber:       83,
		Name:                  "Net Boolean Public License v1",
		LicenseID:             "NBPL-1.0",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=37b4b3f6cc4bf34e1d3dec61e69914b9819d8894",
		},
		IsOsiApproved: false,
	},
	"ruby": {
		Reference:             "https://spdx.org/licenses/Ruby.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Ruby.json",
		ReferenceNumber:       84,
		Name:                  "Ruby License",
		LicenseID:             "Ruby",
		SeeAlso: []string{
			"https://www.ruby-lang.org/en/about/license.txt",
		},
		IsOsiApproved: false,
	},
	"hpnd-doc": {
		Reference:             "https://spdx.org/licenses/HPND-doc.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-doc.json",
		ReferenceNumber:       85,
		Name:                  "Historical Permission Notice and Disclaimer - documentation variant",
		LicenseID:             "HPND-doc",
		SeeAlso: []string{
			"https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type=heads#L185-197",
			"https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type=heads#L70-77",
		},
		IsOsiApproved: false,
	},
	"osl-2.0": {
		Reference:             "https://spdx.org/licenses/OSL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OSL-2.0.json",
		ReferenceNumber:       86,
		Name:                  "Open Software License 2.0",
		LicenseID:             "OSL-2.0",
		SeeAlso: []string{
			"http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html",
		},
		IsOsiApproved: true,
	},
	"gpl-2.0-only": {
		Reference:             "https://spdx.org/licenses/GPL-2.0-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GPL-2.0-only.json",
		ReferenceNumber:       87,
		Name:                  "GNU General Public License v2.0 only",
		LicenseID:             "GPL-2.0-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
			"https://opensource.org/licenses/GPL-2.0",
		},
		IsOsiApproved: true,
	},
	"smppl": {
		Reference:             "https://spdx.org/licenses/SMPPL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SMPPL.json",
		ReferenceNumber:       88,
		Name:                  "Secure Messaging Protocol Public License",
		LicenseID:             "SMPPL",
		SeeAlso: []string{
			"https://github.com/dcblake/SMP/blob/master/Documentation/License.txt",
		},
		IsOsiApproved: false,
	},
	"lzma-sdk-9.11-to-9.20": {
		Reference:             "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LZMA-SDK-9.11-to-9.20.json",
		ReferenceNumber:       89,
		Name:                  "LZMA SDK License (versions 9.11 to 9.20)",
		LicenseID:             "LZMA-SDK-9.11-to-9.20",
		SeeAlso: []string{
			"https://www.7-zip.org/sdk.html",
			"https://sourceforge.net/projects/sevenzip/files/LZMA%20SDK/",
		},
		IsOsiApproved: false,
	},
	"oldap-2.6": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.6.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.6.json",
		ReferenceNumber:       90,
		Name:                  "Open LDAP Public License v2.6",
		LicenseID:             "OLDAP-2.6",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=1cae062821881f41b73012ba816434897abf4205",
		},
		IsOsiApproved: false,
	},
	"parity-7.0.0": {
		Reference:             "https://spdx.org/licenses/Parity-7.0.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Parity-7.0.0.json",
		ReferenceNumber:       91,
		Name:                  "The Parity Public License 7.0.0",
		LicenseID:             "Parity-7.0.0",
		SeeAlso: []string{
			"https://paritylicense.com/versions/7.0.0.html",
		},
		IsOsiApproved: false,
	},
	"clips": {
		Reference:             "https://spdx.org/licenses/Clips.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Clips.json",
		ReferenceNumber:       92,
		Name:                  "Clips License",
		LicenseID:             "Clips",
		SeeAlso: []string{
			"https://github.com/DrItanium/maya/blob/master/LICENSE.CLIPS",
		},
		IsOsiApproved: false,
	},
	"symlinks": {
		Reference:             "https://spdx.org/licenses/Symlinks.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Symlinks.json",
		ReferenceNumber:       93,
		Name:                  "Symlinks License",
		LicenseID:             "Symlinks",
		SeeAlso: []string{
			"https://www.mail-archive.com/debian-bugs-rc@lists.debian.org/msg11494.html",
		},
		IsOsiApproved: false,
	},
	"oldap-1.1": {
		Reference:             "https://spdx.org/licenses/OLDAP-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-1.1.json",
		ReferenceNumber:       94,
		Name:                  "Open LDAP Public License v1.1",
		LicenseID:             "OLDAP-1.1",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=806557a5ad59804ef3a44d5abfbe91d706b0791f",
		},
		IsOsiApproved: false,
	},
	"nicta-1.0": {
		Reference:             "https://spdx.org/licenses/NICTA-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NICTA-1.0.json",
		ReferenceNumber:       95,
		Name:                  "NICTA Public Software License, Version 1.0",
		LicenseID:             "NICTA-1.0",
		SeeAlso: []string{
			"https://opensource.apple.com/source/mDNSResponder/mDNSResponder-320.10/mDNSPosix/nss_ReadMe.txt",
		},
		IsOsiApproved: false,
	},
	"python-ldap": {
		Reference:             "https://spdx.org/licenses/python-ldap.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/python-ldap.json",
		ReferenceNumber:       96,
		Name:                  "Python ldap License",
		LicenseID:             "python-ldap",
		SeeAlso: []string{
			"https://github.com/zdohnal/hplip/blob/master/base/ldif.py",
			"https://sourceforge.net/projects/hplip/files/hplip/3.23.5/hplip-3.23.5.tar.gz/download",
		},
		IsOsiApproved: false,
	},
	"gpl-1.0": {
		Reference:             "https://spdx.org/licenses/GPL-1.0.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-1.0.json",
		ReferenceNumber:       97,
		Name:                  "GNU General Public License v1.0 only",
		LicenseID:             "GPL-1.0",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html",
		},
		IsOsiApproved: false,
	},
	"liliq-rplus-1.1": {
		Reference:             "https://spdx.org/licenses/LiLiQ-Rplus-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LiLiQ-Rplus-1.1.json",
		ReferenceNumber:       98,
		Name:                  "Licence Libre du Québec – Réciprocité forte version 1.1",
		LicenseID:             "LiLiQ-Rplus-1.1",
		SeeAlso: []string{
			"https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/",
			"http://opensource.org/licenses/LiLiQ-Rplus-1.1",
		},
		IsOsiApproved: true,
	},
	"bsd-2-clause-patent": {
		Reference:             "https://spdx.org/licenses/BSD-2-Clause-Patent.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-2-Clause-Patent.json",
		ReferenceNumber:       99,
		Name:                  "BSD-2-Clause Plus Patent License",
		LicenseID:             "BSD-2-Clause-Patent",
		SeeAlso: []string{
			"https://opensource.org/licenses/BSDplusPatent",
		},
		IsOsiApproved: true,
	},
	"cc-by-sa-1.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-1.0.json",
		ReferenceNumber:       100,
		Name:                  "Creative Commons Attribution Share Alike 1.0 Generic",
		LicenseID:             "CC-BY-SA-1.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/1.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"lgpl-2.0-or-later": {
		Reference:             "https://spdx.org/licenses/LGPL-2.0-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LGPL-2.0-or-later.json",
		ReferenceNumber:       101,
		Name:                  "GNU Library General Public License v2 or later",
		LicenseID:             "LGPL-2.0-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html",
		},
		IsOsiApproved: true,
	},
	"intel-acpi": {
		Reference:             "https://spdx.org/licenses/Intel-ACPI.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Intel-ACPI.json",
		ReferenceNumber:       102,
		Name:                  "Intel ACPI Software License Agreement",
		LicenseID:             "Intel-ACPI",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement",
		},
		IsOsiApproved: false,
	},
	"cern-ohl-p-2.0": {
		Reference:             "https://spdx.org/licenses/CERN-OHL-P-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CERN-OHL-P-2.0.json",
		ReferenceNumber:       103,
		Name:                  "CERN Open Hardware Licence Version 2 - Permissive",
		LicenseID:             "CERN-OHL-P-2.0",
		SeeAlso: []string{
			"https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2",
		},
		IsOsiApproved: true,
	},
	"ssh-short": {
		Reference:             "https://spdx.org/licenses/SSH-short.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SSH-short.json",
		ReferenceNumber:       104,
		Name:                  "SSH short notice",
		LicenseID:             "SSH-short",
		SeeAlso: []string{
			"https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h",
			"http://web.mit.edu/kolya/.f/root/athena.mit.edu/sipb.mit.edu/project/openssh/OldFiles/src/openssh-2.9.9p2/ssh-add.1",
			"https://joinup.ec.europa.eu/svn/lesoll/trunk/italc/lib/src/dsa_key.cpp",
		},
		IsOsiApproved: false,
	},
	"kazlib": {
		Reference:             "https://spdx.org/licenses/Kazlib.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Kazlib.json",
		ReferenceNumber:       105,
		Name:                  "Kazlib License",
		LicenseID:             "Kazlib",
		SeeAlso: []string{
			"http://git.savannah.gnu.org/cgit/kazlib.git/tree/except.c?id=0062df360c2d17d57f6af19b0e444c51feb99036",
		},
		IsOsiApproved: false,
	},
	"tosl": {
		Reference:             "https://spdx.org/licenses/TOSL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TOSL.json",
		ReferenceNumber:       106,
		Name:                  "Trusster Open Source License",
		LicenseID:             "TOSL",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/TOSL",
		},
		IsOsiApproved: false,
	},
	"glwtpl": {
		Reference:             "https://spdx.org/licenses/GLWTPL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GLWTPL.json",
		ReferenceNumber:       107,
		Name:                  "Good Luck With That Public License",
		LicenseID:             "GLWTPL",
		SeeAlso: []string{
			"https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-modification": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-Modification.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-Modification.json",
		ReferenceNumber:       108,
		Name:                  "BSD 3-Clause Modification",
		LicenseID:             "BSD-3-Clause-Modification",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing:BSD#Modification_Variant",
		},
		IsOsiApproved: false,
	},
	"oldap-2.2": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.2.json",
		ReferenceNumber:       109,
		Name:                  "Open LDAP Public License v2.2",
		LicenseID:             "OLDAP-2.2",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=470b0c18ec67621c85881b2733057fecf4a1acc3",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-no-nuclear-license": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License.json",
		ReferenceNumber:       110,
		Name:                  "BSD 3-Clause No Nuclear License",
		LicenseID:             "BSD-3-Clause-No-Nuclear-License",
		SeeAlso: []string{
			"http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam=1467140197_43d516ce1776bd08a58235a7785be1cc",
		},
		IsOsiApproved: false,
	},
	"torque-1.1": {
		Reference:             "https://spdx.org/licenses/TORQUE-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TORQUE-1.1.json",
		ReferenceNumber:       111,
		Name:                  "TORQUE v2.5+ Software License v1.1",
		LicenseID:             "TORQUE-1.1",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/TORQUEv1.1",
		},
		IsOsiApproved: false,
	},
	"psf-2.0": {
		Reference:             "https://spdx.org/licenses/PSF-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/PSF-2.0.json",
		ReferenceNumber:       112,
		Name:                  "Python Software Foundation License 2.0",
		LicenseID:             "PSF-2.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/Python-2.0",
		},
		IsOsiApproved: false,
	},
	"cddl-1.1": {
		Reference:             "https://spdx.org/licenses/CDDL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CDDL-1.1.json",
		ReferenceNumber:       113,
		Name:                  "Common Development and Distribution License 1.1",
		LicenseID:             "CDDL-1.1",
		SeeAlso: []string{
			"http://glassfish.java.net/public/CDDL+GPL_1_1.html",
			"https://javaee.github.io/glassfish/LICENSE",
		},
		IsOsiApproved: false,
	},
	"cdl-1.0": {
		Reference:             "https://spdx.org/licenses/CDL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CDL-1.0.json",
		ReferenceNumber:       114,
		Name:                  "Common Documentation License 1.0",
		LicenseID:             "CDL-1.0",
		SeeAlso: []string{
			"http://www.opensource.apple.com/cdl/",
			"https://fedoraproject.org/wiki/Licensing/Common_Documentation_License",
			"https://www.gnu.org/licenses/license-list.html#ACDL",
		},
		IsOsiApproved: false,
	},
	"oset-pl-2.1": {
		Reference:             "https://spdx.org/licenses/OSET-PL-2.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OSET-PL-2.1.json",
		ReferenceNumber:       115,
		Name:                  "OSET Public License version 2.1",
		LicenseID:             "OSET-PL-2.1",
		SeeAlso: []string{
			"http://www.osetfoundation.org/public-license",
			"https://opensource.org/licenses/OPL-2.1",
		},
		IsOsiApproved: true,
	},
	"eupl-1.2": {
		Reference:             "https://spdx.org/licenses/EUPL-1.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/EUPL-1.2.json",
		ReferenceNumber:       116,
		Name:                  "European Union Public License 1.2",
		LicenseID:             "EUPL-1.2",
		SeeAlso: []string{
			"https://joinup.ec.europa.eu/page/eupl-text-11-12",
			"https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf",
			"https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/2020-03/EUPL-1.2%20EN.txt",
			"https://joinup.ec.europa.eu/sites/default/files/inline-files/EUPL%20v1_2%20EN(1).txt",
			"http://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32017D0863",
			"https://opensource.org/licenses/EUPL-1.2",
		},
		IsOsiApproved: true,
	},
	"standardml-nj": {
		Reference:             "https://spdx.org/licenses/StandardML-NJ.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/StandardML-NJ.json",
		ReferenceNumber:       117,
		Name:                  "Standard ML of New Jersey License",
		LicenseID:             "StandardML-NJ",
		SeeAlso: []string{
			"https://www.smlnj.org/license.html",
		},
		IsOsiApproved: false,
	},
	"cal-1.0": {
		Reference:             "https://spdx.org/licenses/CAL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CAL-1.0.json",
		ReferenceNumber:       118,
		Name:                  "Cryptographic Autonomy License 1.0",
		LicenseID:             "CAL-1.0",
		SeeAlso: []string{
			"http://cryptographicautonomylicense.com/license-text.html",
			"https://opensource.org/licenses/CAL-1.0",
		},
		IsOsiApproved: true,
	},
	"opl-uk-3.0": {
		Reference:             "https://spdx.org/licenses/OPL-UK-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OPL-UK-3.0.json",
		ReferenceNumber:       119,
		Name:                  "United    Kingdom Open Parliament Licence v3.0",
		LicenseID:             "OPL-UK-3.0",
		SeeAlso: []string{
			"https://www.parliament.uk/site-information/copyright-parliament/open-parliament-licence/",
		},
		IsOsiApproved: false,
	},
	"cronyx": {
		Reference:             "https://spdx.org/licenses/Cronyx.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Cronyx.json",
		ReferenceNumber:       120,
		Name:                  "Cronyx License",
		LicenseID:             "Cronyx",
		SeeAlso: []string{
			"https://gitlab.freedesktop.org/xorg/font/alias/-/blob/master/COPYING",
			"https://gitlab.freedesktop.org/xorg/font/cronyx-cyrillic/-/blob/master/COPYING",
			"https://gitlab.freedesktop.org/xorg/font/misc-cyrillic/-/blob/master/COPYING",
			"https://gitlab.freedesktop.org/xorg/font/screen-cyrillic/-/blob/master/COPYING",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.1-or-later": {
		Reference:             "https://spdx.org/licenses/GFDL-1.1-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.1-or-later.json",
		ReferenceNumber:       121,
		Name:                  "GNU Free Documentation License v1.1 or later",
		LicenseID:             "GFDL-1.1-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt",
		},
		IsOsiApproved: false,
	},
	"afl-2.1": {
		Reference:             "https://spdx.org/licenses/AFL-2.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AFL-2.1.json",
		ReferenceNumber:       122,
		Name:                  "Academic Free License v2.1",
		LicenseID:             "AFL-2.1",
		SeeAlso: []string{
			"http://opensource.linux-mirror.org/licenses/afl-2.1.txt",
		},
		IsOsiApproved: true,
	},
	"afl-1.2": {
		Reference:             "https://spdx.org/licenses/AFL-1.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AFL-1.2.json",
		ReferenceNumber:       123,
		Name:                  "Academic Free License v1.2",
		LicenseID:             "AFL-1.2",
		SeeAlso: []string{
			"http://opensource.linux-mirror.org/licenses/afl-1.2.txt",
			"http://wayback.archive.org/web/20021204204652/http://www.opensource.org/licenses/academic.php",
		},
		IsOsiApproved: true,
	},
	"fdk-aac": {
		Reference:             "https://spdx.org/licenses/FDK-AAC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/FDK-AAC.json",
		ReferenceNumber:       124,
		Name:                  "Fraunhofer FDK AAC Codec Library",
		LicenseID:             "FDK-AAC",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/FDK-AAC",
			"https://directory.fsf.org/wiki/License:Fdk",
		},
		IsOsiApproved: false,
	},
	"bsd-1-clause": {
		Reference:             "https://spdx.org/licenses/BSD-1-Clause.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-1-Clause.json",
		ReferenceNumber:       125,
		Name:                  "BSD 1-Clause License",
		LicenseID:             "BSD-1-Clause",
		SeeAlso: []string{
			"https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823",
		},
		IsOsiApproved: true,
	},
	"psfrag": {
		Reference:             "https://spdx.org/licenses/psfrag.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/psfrag.json",
		ReferenceNumber:       126,
		Name:                  "psfrag License",
		LicenseID:             "psfrag",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/psfrag",
		},
		IsOsiApproved: false,
	},
	"ofl-1.1-rfn": {
		Reference:             "https://spdx.org/licenses/OFL-1.1-RFN.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OFL-1.1-RFN.json",
		ReferenceNumber:       127,
		Name:                  "SIL Open Font License 1.1 with Reserved Font Name",
		LicenseID:             "OFL-1.1-RFN",
		SeeAlso: []string{
			"http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web",
			"https://opensource.org/licenses/OFL-1.1",
		},
		IsOsiApproved: true,
	},
	"cecill-1.0": {
		Reference:             "https://spdx.org/licenses/CECILL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CECILL-1.0.json",
		ReferenceNumber:       128,
		Name:                  "CeCILL Free Software License Agreement v1.0",
		LicenseID:             "CECILL-1.0",
		SeeAlso: []string{
			"http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html",
		},
		IsOsiApproved: false,
	},
	"tcp-wrappers": {
		Reference:             "https://spdx.org/licenses/TCP-wrappers.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TCP-wrappers.json",
		ReferenceNumber:       129,
		Name:                  "TCP Wrappers License",
		LicenseID:             "TCP-wrappers",
		SeeAlso: []string{
			"http://rc.quest.com/topics/openssh/license.php#tcpwrappers",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-nd-2.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-ND-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-ND-2.0.json",
		ReferenceNumber:       130,
		Name:                  "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic",
		LicenseID:             "CC-BY-NC-ND-2.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"apl-1.0": {
		Reference:             "https://spdx.org/licenses/APL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/APL-1.0.json",
		ReferenceNumber:       131,
		Name:                  "Adaptive Public License 1.0",
		LicenseID:             "APL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/APL-1.0",
		},
		IsOsiApproved: true,
	},
	"knuth-ctan": {
		Reference:             "https://spdx.org/licenses/Knuth-CTAN.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Knuth-CTAN.json",
		ReferenceNumber:       132,
		Name:                  "Knuth CTAN License",
		LicenseID:             "Knuth-CTAN",
		SeeAlso: []string{
			"https://ctan.org/license/knuth",
		},
		IsOsiApproved: false,
	},
	"mit-testregex": {
		Reference:             "https://spdx.org/licenses/MIT-testregex.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-testregex.json",
		ReferenceNumber:       133,
		Name:                  "MIT testregex Variant",
		LicenseID:             "MIT-testregex",
		SeeAlso: []string{
			"https://github.com/dotnet/runtime/blob/55e1ac7c07df62c4108d4acedf78f77574470ce5/src/libraries/System.Text.RegularExpressions/tests/FunctionalTests/AttRegexTests.cs#L12-L28",
		},
		IsOsiApproved: false,
	},
	"osl-3.0": {
		Reference:             "https://spdx.org/licenses/OSL-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OSL-3.0.json",
		ReferenceNumber:       134,
		Name:                  "Open Software License 3.0",
		LicenseID:             "OSL-3.0",
		SeeAlso: []string{
			"https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm",
			"https://opensource.org/licenses/OSL-3.0",
		},
		IsOsiApproved: true,
	},
	"linux-man-pages-copyleft-2-para": {
		Reference:             "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Linux-man-pages-copyleft-2-para.json",
		ReferenceNumber:       135,
		Name:                  "Linux man-pages Copyleft - 2 paragraphs",
		LicenseID:             "Linux-man-pages-copyleft-2-para",
		SeeAlso: []string{
			"https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/move_pages.2#n5",
			"https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/migrate_pages.2#n8",
		},
		IsOsiApproved: false,
	},
	"oldap-2.0.1": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.0.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.0.1.json",
		ReferenceNumber:       136,
		Name:                  "Open LDAP Public License v2.0.1",
		LicenseID:             "OLDAP-2.0.1",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b6d68acd14e51ca3aab4428bf26522aa74873f0e",
		},
		IsOsiApproved: false,
	},
	"beerware": {
		Reference:             "https://spdx.org/licenses/Beerware.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Beerware.json",
		ReferenceNumber:       137,
		Name:                  "Beerware License",
		LicenseID:             "Beerware",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Beerware",
			"https://people.freebsd.org/~phk/",
		},
		IsOsiApproved: false,
	},
	"apache-2.0": {
		Reference:             "https://spdx.org/licenses/Apache-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Apache-2.0.json",
		ReferenceNumber:       138,
		Name:                  "Apache License 2.0",
		LicenseID:             "Apache-2.0",
		SeeAlso: []string{
			"https://www.apache.org/licenses/LICENSE-2.0",
			"https://opensource.org/licenses/Apache-2.0",
		},
		IsOsiApproved: true,
	},
	"cal-1.0-combined-work-exception": {
		Reference:             "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception.json",
		ReferenceNumber:       139,
		Name:                  "Cryptographic Autonomy License 1.0 (Combined Work Exception)",
		LicenseID:             "CAL-1.0-Combined-Work-Exception",
		SeeAlso: []string{
			"http://cryptographicautonomylicense.com/license-text.html",
			"https://opensource.org/licenses/CAL-1.0",
		},
		IsOsiApproved: true,
	},
	"gpl-2.0-with-autoconf-exception": {
		Reference:             "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-2.0-with-autoconf-exception.json",
		ReferenceNumber:       140,
		Name:                  "GNU General Public License v2.0 w/Autoconf exception",
		LicenseID:             "GPL-2.0-with-autoconf-exception",
		SeeAlso: []string{
			"http://ac-archive.sourceforge.net/doc/copyright.html",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-sun": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-Sun.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-Sun.json",
		ReferenceNumber:       141,
		Name:                  "BSD 3-Clause Sun Microsystems",
		LicenseID:             "BSD-3-Clause-Sun",
		SeeAlso: []string{
			"https://github.com/xmlark/msv/blob/b9316e2f2270bc1606952ea4939ec87fbba157f3/xsdlib/src/main/java/com/sun/msv/datatype/regexp/InternalImpl.java",
		},
		IsOsiApproved: false,
	},
	"makeindex": {
		Reference:             "https://spdx.org/licenses/MakeIndex.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MakeIndex.json",
		ReferenceNumber:       142,
		Name:                  "MakeIndex License",
		LicenseID:             "MakeIndex",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/MakeIndex",
		},
		IsOsiApproved: false,
	},
	"bsd-2-clause-netbsd": {
		Reference:             "https://spdx.org/licenses/BSD-2-Clause-NetBSD.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/BSD-2-Clause-NetBSD.json",
		ReferenceNumber:       143,
		Name:                  "BSD 2-Clause NetBSD License",
		LicenseID:             "BSD-2-Clause-NetBSD",
		SeeAlso: []string{
			"http://www.netbsd.org/about/redistribution.html#default",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.1-no-invariants-only": {
		Reference:             "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.1-no-invariants-only.json",
		ReferenceNumber:       144,
		Name:                  "GNU Free Documentation License v1.1 only - no invariants",
		LicenseID:             "GFDL-1.1-no-invariants-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt",
		},
		IsOsiApproved: false,
	},
	"ucl-1.0": {
		Reference:             "https://spdx.org/licenses/UCL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/UCL-1.0.json",
		ReferenceNumber:       145,
		Name:                  "Upstream Compatibility License v1.0",
		LicenseID:             "UCL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/UCL-1.0",
		},
		IsOsiApproved: true,
	},
	"nasa-1.3": {
		Reference:             "https://spdx.org/licenses/NASA-1.3.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NASA-1.3.json",
		ReferenceNumber:       146,
		Name:                  "NASA Open Source Agreement 1.3",
		LicenseID:             "NASA-1.3",
		SeeAlso: []string{
			"http://ti.arc.nasa.gov/opensource/nosa/",
			"https://opensource.org/licenses/NASA-1.3",
		},
		IsOsiApproved: true,
	},
	"ijg": {
		Reference:             "https://spdx.org/licenses/IJG.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/IJG.json",
		ReferenceNumber:       147,
		Name:                  "Independent JPEG Group License",
		LicenseID:             "IJG",
		SeeAlso: []string{
			"http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2",
		},
		IsOsiApproved: false,
	},
	"xfig": {
		Reference:             "https://spdx.org/licenses/Xfig.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Xfig.json",
		ReferenceNumber:       148,
		Name:                  "Xfig License",
		LicenseID:             "Xfig",
		SeeAlso: []string{
			"https://github.com/Distrotech/transfig/blob/master/transfig/transfig.c",
			"https://fedoraproject.org/wiki/Licensing:MIT#Xfig_Variant",
			"https://sourceforge.net/p/mcj/xfig/ci/master/tree/src/Makefile.am",
		},
		IsOsiApproved: false,
	},
	"noweb": {
		Reference:             "https://spdx.org/licenses/Noweb.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Noweb.json",
		ReferenceNumber:       149,
		Name:                  "Noweb License",
		LicenseID:             "Noweb",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Noweb",
		},
		IsOsiApproved: false,
	},
	"mup": {
		Reference:             "https://spdx.org/licenses/Mup.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Mup.json",
		ReferenceNumber:       150,
		Name:                  "Mup License",
		LicenseID:             "Mup",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Mup",
		},
		IsOsiApproved: false,
	},
	"cc-by-2.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-2.0.json",
		ReferenceNumber:       151,
		Name:                  "Creative Commons Attribution 2.0 Generic",
		LicenseID:             "CC-BY-2.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/2.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"odc-by-1.0": {
		Reference:             "https://spdx.org/licenses/ODC-By-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ODC-By-1.0.json",
		ReferenceNumber:       152,
		Name:                  "Open Data Commons Attribution License v1.0",
		LicenseID:             "ODC-By-1.0",
		SeeAlso: []string{
			"https://opendatacommons.org/licenses/by/1.0/",
		},
		IsOsiApproved: false,
	},
	"blessing": {
		Reference:             "https://spdx.org/licenses/blessing.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/blessing.json",
		ReferenceNumber:       153,
		Name:                  "SQLite Blessing",
		LicenseID:             "blessing",
		SeeAlso: []string{
			"https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln=4-9",
			"https://sqlite.org/src/artifact/df5091916dbb40e6",
		},
		IsOsiApproved: false,
	},
	"ssh-openssh": {
		Reference:             "https://spdx.org/licenses/SSH-OpenSSH.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SSH-OpenSSH.json",
		ReferenceNumber:       154,
		Name:                  "SSH OpenSSH license",
		LicenseID:             "SSH-OpenSSH",
		SeeAlso: []string{
			"https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-2.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-2.0.json",
		ReferenceNumber:       155,
		Name:                  "Creative Commons Attribution Non Commercial 2.0 Generic",
		LicenseID:             "CC-BY-NC-2.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc/2.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"lppl-1.2": {
		Reference:             "https://spdx.org/licenses/LPPL-1.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LPPL-1.2.json",
		ReferenceNumber:       156,
		Name:                  "LaTeX Project Public License v1.2",
		LicenseID:             "LPPL-1.2",
		SeeAlso: []string{
			"http://www.latex-project.org/lppl/lppl-1-2.txt",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.3-invariants-only": {
		Reference:             "https://spdx.org/licenses/GFDL-1.3-invariants-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.3-invariants-only.json",
		ReferenceNumber:       157,
		Name:                  "GNU Free Documentation License v1.3 only - invariants",
		LicenseID:             "GFDL-1.3-invariants-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/fdl-1.3.txt",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.2-no-invariants-only": {
		Reference:             "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.2-no-invariants-only.json",
		ReferenceNumber:       158,
		Name:                  "GNU Free Documentation License v1.2 only - no invariants",
		LicenseID:             "GFDL-1.2-no-invariants-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt",
		},
		IsOsiApproved: false,
	},
	"ofl-1.0": {
		Reference:             "https://spdx.org/licenses/OFL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OFL-1.0.json",
		ReferenceNumber:       159,
		Name:                  "SIL Open Font License 1.0",
		LicenseID:             "OFL-1.0",
		SeeAlso: []string{
			"http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web",
		},
		IsOsiApproved: false,
	},
	"sissl-1.2": {
		Reference:             "https://spdx.org/licenses/SISSL-1.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SISSL-1.2.json",
		ReferenceNumber:       160,
		Name:                  "Sun Industry Standards Source License v1.2",
		LicenseID:             "SISSL-1.2",
		SeeAlso: []string{
			"http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html",
		},
		IsOsiApproved: false,
	},
	"tpl-1.0": {
		Reference:             "https://spdx.org/licenses/TPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TPL-1.0.json",
		ReferenceNumber:       161,
		Name:                  "THOR Public License 1.0",
		LicenseID:             "TPL-1.0",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing:ThorPublicLicense",
		},
		IsOsiApproved: false,
	},
	"lsof": {
		Reference:             "https://spdx.org/licenses/lsof.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/lsof.json",
		ReferenceNumber:       162,
		Name:                  "lsof License",
		LicenseID:             "lsof",
		SeeAlso: []string{
			"https://github.com/lsof-org/lsof/blob/master/COPYING",
		},
		IsOsiApproved: false,
	},
	"agpl-1.0-or-later": {
		Reference:             "https://spdx.org/licenses/AGPL-1.0-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AGPL-1.0-or-later.json",
		ReferenceNumber:       163,
		Name:                  "Affero General Public License v1.0 or later",
		LicenseID:             "AGPL-1.0-or-later",
		SeeAlso: []string{
			"http://www.affero.org/oagpl.html",
		},
		IsOsiApproved: false,
	},
	"mitnfa": {
		Reference:             "https://spdx.org/licenses/MITNFA.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MITNFA.json",
		ReferenceNumber:       164,
		Name:                  "MIT +no-false-attribs license",
		LicenseID:             "MITNFA",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/MITNFA",
		},
		IsOsiApproved: false,
	},
	"metamail": {
		Reference:             "https://spdx.org/licenses/metamail.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/metamail.json",
		ReferenceNumber:       165,
		Name:                  "metamail License",
		LicenseID:             "metamail",
		SeeAlso: []string{
			"https://github.com/Dual-Life/mime-base64/blob/master/Base64.xs#L12",
		},
		IsOsiApproved: false,
	},
	"imlib2": {
		Reference:             "https://spdx.org/licenses/Imlib2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Imlib2.json",
		ReferenceNumber:       166,
		Name:                  "Imlib2 License",
		LicenseID:             "Imlib2",
		SeeAlso: []string{
			"http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING",
			"https://git.enlightenment.org/legacy/imlib2.git/tree/COPYING",
		},
		IsOsiApproved: false,
	},
	"afl-2.0": {
		Reference:             "https://spdx.org/licenses/AFL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AFL-2.0.json",
		ReferenceNumber:       167,
		Name:                  "Academic Free License v2.0",
		LicenseID:             "AFL-2.0",
		SeeAlso: []string{
			"http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt",
		},
		IsOsiApproved: true,
	},
	"eupl-1.0": {
		Reference:             "https://spdx.org/licenses/EUPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/EUPL-1.0.json",
		ReferenceNumber:       168,
		Name:                  "European Union Public License 1.0",
		LicenseID:             "EUPL-1.0",
		SeeAlso: []string{
			"http://ec.europa.eu/idabc/en/document/7330.html",
			"http://ec.europa.eu/idabc/servlets/Doc027f.pdf?id=31096",
		},
		IsOsiApproved: false,
	},
	"aal": {
		Reference:             "https://spdx.org/licenses/AAL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AAL.json",
		ReferenceNumber:       169,
		Name:                  "Attribution Assurance License",
		LicenseID:             "AAL",
		SeeAlso: []string{
			"https://opensource.org/licenses/attribution",
		},
		IsOsiApproved: true,
	},
	"ssh-keyscan": {
		Reference:             "https://spdx.org/licenses/ssh-keyscan.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ssh-keyscan.json",
		ReferenceNumber:       170,
		Name:                  "ssh-keyscan License",
		LicenseID:             "ssh-keyscan",
		SeeAlso: []string{
			"https://github.com/openssh/openssh-portable/blob/master/LICENCE#L82",
		},
		IsOsiApproved: false,
	},
	"soundex": {
		Reference:             "https://spdx.org/licenses/Soundex.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Soundex.json",
		ReferenceNumber:       171,
		Name:                  "Soundex License",
		LicenseID:             "Soundex",
		SeeAlso: []string{
			"https://metacpan.org/release/RJBS/Text-Soundex-3.05/source/Soundex.pm#L3-11",
		},
		IsOsiApproved: false,
	},
	"w3c-19980720": {
		Reference:             "https://spdx.org/licenses/W3C-19980720.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/W3C-19980720.json",
		ReferenceNumber:       172,
		Name:                  "W3C Software Notice and License (1998-07-20)",
		LicenseID:             "W3C-19980720",
		SeeAlso: []string{
			"http://www.w3.org/Consortium/Legal/copyright-software-19980720.html",
		},
		IsOsiApproved: false,
	},
	"w3c": {
		Reference:             "https://spdx.org/licenses/W3C.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/W3C.json",
		ReferenceNumber:       173,
		Name:                  "W3C Software Notice and License (2002-12-31)",
		LicenseID:             "W3C",
		SeeAlso: []string{
			"http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html",
			"https://opensource.org/licenses/W3C",
		},
		IsOsiApproved: true,
	},
	"bittorrent-1.1": {
		Reference:             "https://spdx.org/licenses/BitTorrent-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BitTorrent-1.1.json",
		ReferenceNumber:       174,
		Name:                  "BitTorrent Open Source License v1.1",
		LicenseID:             "BitTorrent-1.1",
		SeeAlso: []string{
			"http://directory.fsf.org/wiki/License:BitTorrentOSL1.1",
		},
		IsOsiApproved: false,
	},
	"gpl-1.0+": {
		Reference:             "https://spdx.org/licenses/GPL-1.0+.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-1.0+.json",
		ReferenceNumber:       175,
		Name:                  "GNU General Public License v1.0 or later",
		LicenseID:             "GPL-1.0+",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html",
		},
		IsOsiApproved: false,
	},
	"spencer-99": {
		Reference:             "https://spdx.org/licenses/Spencer-99.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Spencer-99.json",
		ReferenceNumber:       176,
		Name:                  "Spencer License 99",
		LicenseID:             "Spencer-99",
		SeeAlso: []string{
			"http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c",
		},
		IsOsiApproved: false,
	},
	"sleepycat": {
		Reference:             "https://spdx.org/licenses/Sleepycat.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Sleepycat.json",
		ReferenceNumber:       177,
		Name:                  "Sleepycat License",
		LicenseID:             "Sleepycat",
		SeeAlso: []string{
			"https://opensource.org/licenses/Sleepycat",
		},
		IsOsiApproved: true,
	},
	"dl-de-zero-2.0": {
		Reference:             "https://spdx.org/licenses/DL-DE-ZERO-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/DL-DE-ZERO-2.0.json",
		ReferenceNumber:       178,
		Name:                  "Data licence Germany – zero – version 2.0",
		LicenseID:             "DL-DE-ZERO-2.0",
		SeeAlso: []string{
			"https://www.govdata.de/dl-de/zero-2-0",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause.json",
		ReferenceNumber:       179,
		Name:                  "BSD 3-Clause \"New\" or \"Revised\" License",
		LicenseID:             "BSD-3-Clause",
		SeeAlso: []string{
			"https://opensource.org/licenses/BSD-3-Clause",
			"https://www.eclipse.org/org/documents/edl-v10.php",
		},
		IsOsiApproved: true,
	},
	"bsd-4-clause-shortened": {
		Reference:             "https://spdx.org/licenses/BSD-4-Clause-Shortened.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-4-Clause-Shortened.json",
		ReferenceNumber:       180,
		Name:                  "BSD 4 Clause Shortened",
		LicenseID:             "BSD-4-Clause-Shortened",
		SeeAlso: []string{
			"https://metadata.ftp-master.debian.org/changelogs//main/a/arpwatch/arpwatch_2.1a15-7_copyright",
		},
		IsOsiApproved: false,
	},
	"shl-0.51": {
		Reference:             "https://spdx.org/licenses/SHL-0.51.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SHL-0.51.json",
		ReferenceNumber:       181,
		Name:                  "Solderpad Hardware License, Version 0.51",
		LicenseID:             "SHL-0.51",
		SeeAlso: []string{
			"https://solderpad.org/licenses/SHL-0.51/",
		},
		IsOsiApproved: false,
	},
	"lgpl-2.1-only": {
		Reference:             "https://spdx.org/licenses/LGPL-2.1-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LGPL-2.1-only.json",
		ReferenceNumber:       182,
		Name:                  "GNU Lesser General Public License v2.1 only",
		LicenseID:             "LGPL-2.1-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
			"https://opensource.org/licenses/LGPL-2.1",
		},
		IsOsiApproved: true,
	},
	"parity-6.0.0": {
		Reference:             "https://spdx.org/licenses/Parity-6.0.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Parity-6.0.0.json",
		ReferenceNumber:       183,
		Name:                  "The Parity Public License 6.0.0",
		LicenseID:             "Parity-6.0.0",
		SeeAlso: []string{
			"https://paritylicense.com/versions/6.0.0.html",
		},
		IsOsiApproved: false,
	},
	"gpl-3.0-with-autoconf-exception": {
		Reference:             "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-3.0-with-autoconf-exception.json",
		ReferenceNumber:       184,
		Name:                  "GNU General Public License v3.0 w/Autoconf exception",
		LicenseID:             "GPL-3.0-with-autoconf-exception",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/autoconf-exception-3.0.html",
		},
		IsOsiApproved: false,
	},
	"mit-0": {
		Reference:             "https://spdx.org/licenses/MIT-0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-0.json",
		ReferenceNumber:       185,
		Name:                  "MIT No Attribution",
		LicenseID:             "MIT-0",
		SeeAlso: []string{
			"https://github.com/aws/mit-0",
			"https://romanrm.net/mit-zero",
			"https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE",
		},
		IsOsiApproved: true,
	},
	"cc-pddc": {
		Reference:             "https://spdx.org/licenses/CC-PDDC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-PDDC.json",
		ReferenceNumber:       186,
		Name:                  "Creative Commons Public Domain Dedication and Certification",
		LicenseID:             "CC-PDDC",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/publicdomain/",
		},
		IsOsiApproved: false,
	},
	"ulem": {
		Reference:             "https://spdx.org/licenses/ulem.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ulem.json",
		ReferenceNumber:       187,
		Name:                  "ulem License",
		LicenseID:             "ulem",
		SeeAlso: []string{
			"https://mirrors.ctan.org/macros/latex/contrib/ulem/README",
		},
		IsOsiApproved: false,
	},
	"xinetd": {
		Reference:             "https://spdx.org/licenses/xinetd.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/xinetd.json",
		ReferenceNumber:       188,
		Name:                  "xinetd License",
		LicenseID:             "xinetd",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Xinetd_License",
		},
		IsOsiApproved: false,
	},
	"linux-man-pages-1-para": {
		Reference:             "https://spdx.org/licenses/Linux-man-pages-1-para.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Linux-man-pages-1-para.json",
		ReferenceNumber:       189,
		Name:                  "Linux man-pages - 1 paragraph",
		LicenseID:             "Linux-man-pages-1-para",
		SeeAlso: []string{
			"https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/getcpu.2#n4",
		},
		IsOsiApproved: false,
	},
	"oldap-2.8": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.8.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.8.json",
		ReferenceNumber:       190,
		Name:                  "Open LDAP Public License v2.8",
		LicenseID:             "OLDAP-2.8",
		SeeAlso: []string{
			"http://www.openldap.org/software/release/license.html",
		},
		IsOsiApproved: true,
	},
	"oml": {
		Reference:             "https://spdx.org/licenses/OML.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OML.json",
		ReferenceNumber:       191,
		Name:                  "Open Market License",
		LicenseID:             "OML",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Open_Market_License",
		},
		IsOsiApproved: false,
	},
	"icu": {
		Reference:             "https://spdx.org/licenses/ICU.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ICU.json",
		ReferenceNumber:       192,
		Name:                  "ICU License",
		LicenseID:             "ICU",
		SeeAlso: []string{
			"http://source.icu-project.org/repos/icu/icu/trunk/license.html",
		},
		IsOsiApproved: false,
	},
	"sgi-b-2.0": {
		Reference:             "https://spdx.org/licenses/SGI-B-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SGI-B-2.0.json",
		ReferenceNumber:       193,
		Name:                  "SGI Free Software License B v2.0",
		LicenseID:             "SGI-B-2.0",
		SeeAlso: []string{
			"http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf",
		},
		IsOsiApproved: false,
	},
	"antlr-pd-fallback": {
		Reference:             "https://spdx.org/licenses/ANTLR-PD-fallback.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ANTLR-PD-fallback.json",
		ReferenceNumber:       194,
		Name:                  "ANTLR Software Rights Notice with license fallback",
		LicenseID:             "ANTLR-PD-fallback",
		SeeAlso: []string{
			"http://www.antlr2.org/license.html",
		},
		IsOsiApproved: false,
	},
	"dvipdfm": {
		Reference:             "https://spdx.org/licenses/dvipdfm.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/dvipdfm.json",
		ReferenceNumber:       195,
		Name:                  "dvipdfm License",
		LicenseID:             "dvipdfm",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/dvipdfm",
		},
		IsOsiApproved: false,
	},
	"gpl-3.0+": {
		Reference:             "https://spdx.org/licenses/GPL-3.0+.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-3.0+.json",
		ReferenceNumber:       196,
		Name:                  "GNU General Public License v3.0 or later",
		LicenseID:             "GPL-3.0+",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/gpl-3.0-standalone.html",
			"https://opensource.org/licenses/GPL-3.0",
		},
		IsOsiApproved: true,
	},
	"epl-2.0": {
		Reference:             "https://spdx.org/licenses/EPL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/EPL-2.0.json",
		ReferenceNumber:       197,
		Name:                  "Eclipse Public License 2.0",
		LicenseID:             "EPL-2.0",
		SeeAlso: []string{
			"https://www.eclipse.org/legal/epl-2.0",
			"https://www.opensource.org/licenses/EPL-2.0",
		},
		IsOsiApproved: true,
	},
	"oldap-1.3": {
		Reference:             "https://spdx.org/licenses/OLDAP-1.3.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-1.3.json",
		ReferenceNumber:       198,
		Name:                  "Open LDAP Public License v1.3",
		LicenseID:             "OLDAP-1.3",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=e5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1",
		},
		IsOsiApproved: false,
	},
	"linux-man-pages-copyleft": {
		Reference:             "https://spdx.org/licenses/Linux-man-pages-copyleft.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Linux-man-pages-copyleft.json",
		ReferenceNumber:       199,
		Name:                  "Linux man-pages Copyleft",
		LicenseID:             "Linux-man-pages-copyleft",
		SeeAlso: []string{
			"https://www.kernel.org/doc/man-pages/licenses.html",
		},
		IsOsiApproved: false,
	},
	"ofl-1.1-no-rfn": {
		Reference:             "https://spdx.org/licenses/OFL-1.1-no-RFN.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OFL-1.1-no-RFN.json",
		ReferenceNumber:       200,
		Name:                  "SIL Open Font License 1.1 with no Reserved Font Name",
		LicenseID:             "OFL-1.1-no-RFN",
		SeeAlso: []string{
			"http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web",
			"https://opensource.org/licenses/OFL-1.1",
		},
		IsOsiApproved: true,
	},
	"isc": {
		Reference:             "https://spdx.org/licenses/ISC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ISC.json",
		ReferenceNumber:       201,
		Name:                  "ISC License",
		LicenseID:             "ISC",
		SeeAlso: []string{
			"https://www.isc.org/licenses/",
			"https://www.isc.org/downloads/software-support-policy/isc-license/",
			"https://opensource.org/licenses/ISC",
		},
		IsOsiApproved: true,
	},
	"gfdl-1.1-invariants-only": {
		Reference:             "https://spdx.org/licenses/GFDL-1.1-invariants-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.1-invariants-only.json",
		ReferenceNumber:       202,
		Name:                  "GNU Free Documentation License v1.1 only - invariants",
		LicenseID:             "GFDL-1.1-invariants-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt",
		},
		IsOsiApproved: false,
	},
	"adobe-2006": {
		Reference:             "https://spdx.org/licenses/Adobe-2006.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Adobe-2006.json",
		ReferenceNumber:       203,
		Name:                  "Adobe Systems Incorporated Source Code License Agreement",
		LicenseID:             "Adobe-2006",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/AdobeLicense",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-nd-1.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-ND-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-ND-1.0.json",
		ReferenceNumber:       204,
		Name:                  "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic",
		LicenseID:             "CC-BY-NC-ND-1.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"dsdp": {
		Reference:             "https://spdx.org/licenses/DSDP.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/DSDP.json",
		ReferenceNumber:       205,
		Name:                  "DSDP License",
		LicenseID:             "DSDP",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/DSDP",
		},
		IsOsiApproved: false,
	},
	"d-fsl-1.0": {
		Reference:             "https://spdx.org/licenses/D-FSL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/D-FSL-1.0.json",
		ReferenceNumber:       206,
		Name:                  "Deutsche Freie Software Lizenz",
		LicenseID:             "D-FSL-1.0",
		SeeAlso: []string{
			"http://www.dipp.nrw.de/d-fsl/lizenzen/",
			"http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/de/D-FSL-1_0_de.txt",
			"http://www.dipp.nrw.de/d-fsl/index_html/lizenzen/en/D-FSL-1_0_en.txt",
			"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl",
			"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/deutsche-freie-software-lizenz",
			"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/german-free-software-license",
			"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_de.txt/at_download/file",
			"https://www.hbz-nrw.de/produkte/open-access/lizenzen/dfsl/D-FSL-1_0_en.txt/at_download/file",
		},
		IsOsiApproved: false,
	},
	"shl-0.5": {
		Reference:             "https://spdx.org/licenses/SHL-0.5.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SHL-0.5.json",
		ReferenceNumber:       207,
		Name:                  "Solderpad Hardware License v0.5",
		LicenseID:             "SHL-0.5",
		SeeAlso: []string{
			"https://solderpad.org/licenses/SHL-0.5/",
		},
		IsOsiApproved: false,
	},
	"schemereport": {
		Reference:             "https://spdx.org/licenses/SchemeReport.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SchemeReport.json",
		ReferenceNumber:       208,
		Name:                  "Scheme Language Report License",
		LicenseID:             "SchemeReport",
		SeeAlso:               []string{},
		IsOsiApproved:         false,
	},
	"mulanpsl-1.0": {
		Reference:             "https://spdx.org/licenses/MulanPSL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MulanPSL-1.0.json",
		ReferenceNumber:       209,
		Name:                  "Mulan Permissive Software License, Version 1",
		LicenseID:             "MulanPSL-1.0",
		SeeAlso: []string{
			"https://license.coscl.org.cn/MulanPSL/",
			"https://github.com/yuwenlong/longphp/blob/25dfb70cc2a466dc4bb55ba30901cbce08d164b5/LICENSE",
		},
		IsOsiApproved: false,
	},
	"ntp": {
		Reference:             "https://spdx.org/licenses/NTP.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NTP.json",
		ReferenceNumber:       210,
		Name:                  "NTP License",
		LicenseID:             "NTP",
		SeeAlso: []string{
			"https://opensource.org/licenses/NTP",
		},
		IsOsiApproved: true,
	},
	"jam": {
		Reference:             "https://spdx.org/licenses/Jam.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Jam.json",
		ReferenceNumber:       211,
		Name:                  "Jam License",
		LicenseID:             "Jam",
		SeeAlso: []string{
			"https://www.boost.org/doc/libs/1_35_0/doc/html/jam.html",
			"https://web.archive.org/web/20160330173339/https://swarm.workshop.perforce.com/files/guest/perforce_software/jam/src/README",
		},
		IsOsiApproved: true,
	},
	"cc-by-sa-2.0-uk": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-2.0-UK.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-2.0-UK.json",
		ReferenceNumber:       212,
		Name:                  "Creative Commons Attribution Share Alike 2.0 England and Wales",
		LicenseID:             "CC-BY-SA-2.0-UK",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-attribution": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-Attribution.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-Attribution.json",
		ReferenceNumber:       213,
		Name:                  "BSD with attribution",
		LicenseID:             "BSD-3-Clause-Attribution",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution",
		},
		IsOsiApproved: false,
	},
	"lucida-bitmap-fonts": {
		Reference:             "https://spdx.org/licenses/Lucida-Bitmap-Fonts.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Lucida-Bitmap-Fonts.json",
		ReferenceNumber:       214,
		Name:                  "Lucida Bitmap Fonts License",
		LicenseID:             "Lucida-Bitmap-Fonts",
		SeeAlso: []string{
			"https://gitlab.freedesktop.org/xorg/font/bh-100dpi/-/blob/master/COPYING?ref_type=heads",
		},
		IsOsiApproved: false,
	},
	"zimbra-1.4": {
		Reference:             "https://spdx.org/licenses/Zimbra-1.4.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Zimbra-1.4.json",
		ReferenceNumber:       215,
		Name:                  "Zimbra Public License v1.4",
		LicenseID:             "Zimbra-1.4",
		SeeAlso: []string{
			"http://www.zimbra.com/legal/zimbra-public-license-1-4",
		},
		IsOsiApproved: false,
	},
	"cua-opl-1.0": {
		Reference:             "https://spdx.org/licenses/CUA-OPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CUA-OPL-1.0.json",
		ReferenceNumber:       216,
		Name:                  "CUA Office Public License v1.0",
		LicenseID:             "CUA-OPL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/CUA-OPL-1.0",
		},
		IsOsiApproved: true,
	},
	"bsd-2-clause": {
		Reference:             "https://spdx.org/licenses/BSD-2-Clause.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-2-Clause.json",
		ReferenceNumber:       217,
		Name:                  "BSD 2-Clause \"Simplified\" License",
		LicenseID:             "BSD-2-Clause",
		SeeAlso: []string{
			"https://opensource.org/licenses/BSD-2-Clause",
		},
		IsOsiApproved: true,
	},
	"community-spec-1.0": {
		Reference:             "https://spdx.org/licenses/Community-Spec-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Community-Spec-1.0.json",
		ReferenceNumber:       218,
		Name:                  "Community Specification License 1.0",
		LicenseID:             "Community-Spec-1.0",
		SeeAlso: []string{
			"https://github.com/CommunitySpecification/1.0/blob/master/1._Community_Specification_License-v1.md",
		},
		IsOsiApproved: false,
	},
	"oldap-2.0": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.0.json",
		ReferenceNumber:       219,
		Name:                  "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)",
		LicenseID:             "OLDAP-2.0",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cbf50f4e1185a21abd4c0a54d3f4341fe28f36ea",
		},
		IsOsiApproved: false,
	},
	"diffmark": {
		Reference:             "https://spdx.org/licenses/diffmark.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/diffmark.json",
		ReferenceNumber:       220,
		Name:                  "diffmark license",
		LicenseID:             "diffmark",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/diffmark",
		},
		IsOsiApproved: false,
	},
	"abstyles": {
		Reference:             "https://spdx.org/licenses/Abstyles.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Abstyles.json",
		ReferenceNumber:       221,
		Name:                  "Abstyles License",
		LicenseID:             "Abstyles",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Abstyles",
		},
		IsOsiApproved: false,
	},
	"zeeff": {
		Reference:             "https://spdx.org/licenses/Zeeff.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Zeeff.json",
		ReferenceNumber:       222,
		Name:                  "Zeeff License",
		LicenseID:             "Zeeff",
		SeeAlso: []string{
			"ftp://ftp.tin.org/pub/news/utils/newsx/newsx-1.6.tar.gz",
		},
		IsOsiApproved: false,
	},
	"brian-gladman-3-clause": {
		Reference:             "https://spdx.org/licenses/Brian-Gladman-3-Clause.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Brian-Gladman-3-Clause.json",
		ReferenceNumber:       223,
		Name:                  "Brian Gladman 3-Clause License",
		LicenseID:             "Brian-Gladman-3-Clause",
		SeeAlso: []string{
			"https://github.com/SWI-Prolog/packages-clib/blob/master/sha1/brg_endian.h",
		},
		IsOsiApproved: false,
	},
	"bitstream-vera": {
		Reference:             "https://spdx.org/licenses/Bitstream-Vera.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Bitstream-Vera.json",
		ReferenceNumber:       224,
		Name:                  "Bitstream Vera Font License",
		LicenseID:             "Bitstream-Vera",
		SeeAlso: []string{
			"https://web.archive.org/web/20080207013128/http://www.gnome.org/fonts/",
			"https://docubrain.com/sites/default/files/licenses/bitstream-vera.html",
		},
		IsOsiApproved: false,
	},
	"naumen": {
		Reference:             "https://spdx.org/licenses/Naumen.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Naumen.json",
		ReferenceNumber:       225,
		Name:                  "Naumen Public License",
		LicenseID:             "Naumen",
		SeeAlso: []string{
			"https://opensource.org/licenses/Naumen",
		},
		IsOsiApproved: true,
	},
	"sgi-opengl": {
		Reference:             "https://spdx.org/licenses/SGI-OpenGL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SGI-OpenGL.json",
		ReferenceNumber:       226,
		Name:                  "SGI OpenGL License",
		LicenseID:             "SGI-OpenGL",
		SeeAlso: []string{
			"https://gitlab.freedesktop.org/mesa/glw/-/blob/master/README?ref_type=heads",
		},
		IsOsiApproved: false,
	},
	"cc-by-sa-2.1-jp": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-2.1-JP.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-2.1-JP.json",
		ReferenceNumber:       227,
		Name:                  "Creative Commons Attribution Share Alike 2.1 Japan",
		LicenseID:             "CC-BY-SA-2.1-JP",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/2.1/jp/legalcode",
		},
		IsOsiApproved: false,
	},
	"cc-by-nd-4.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-ND-4.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-ND-4.0.json",
		ReferenceNumber:       228,
		Name:                  "Creative Commons Attribution No Derivatives 4.0 International",
		LicenseID:             "CC-BY-ND-4.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nd/4.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"mit-wu": {
		Reference:             "https://spdx.org/licenses/MIT-Wu.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-Wu.json",
		ReferenceNumber:       229,
		Name:                  "MIT Tom Wu Variant",
		LicenseID:             "MIT-Wu",
		SeeAlso: []string{
			"https://github.com/chromium/octane/blob/master/crypto.js",
		},
		IsOsiApproved: false,
	},
	"gnuplot": {
		Reference:             "https://spdx.org/licenses/gnuplot.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/gnuplot.json",
		ReferenceNumber:       230,
		Name:                  "gnuplot License",
		LicenseID:             "gnuplot",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Gnuplot",
		},
		IsOsiApproved: false,
	},
	"sax-pd": {
		Reference:             "https://spdx.org/licenses/SAX-PD.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SAX-PD.json",
		ReferenceNumber:       231,
		Name:                  "Sax Public Domain Notice",
		LicenseID:             "SAX-PD",
		SeeAlso: []string{
			"http://www.saxproject.org/copying.html",
		},
		IsOsiApproved: false,
	},
	"hpnd-doc-sell": {
		Reference:             "https://spdx.org/licenses/HPND-doc-sell.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-doc-sell.json",
		ReferenceNumber:       232,
		Name:                  "Historical Permission Notice and Disclaimer - documentation sell variant",
		LicenseID:             "HPND-doc-sell",
		SeeAlso: []string{
			"https://gitlab.freedesktop.org/xorg/lib/libxtst/-/blob/master/COPYING?ref_type=heads#L108-117",
			"https://gitlab.freedesktop.org/xorg/lib/libxext/-/blob/master/COPYING?ref_type=heads#L153-162",
		},
		IsOsiApproved: false,
	},
	"bittorrent-1.0": {
		Reference:             "https://spdx.org/licenses/BitTorrent-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BitTorrent-1.0.json",
		ReferenceNumber:       233,
		Name:                  "BitTorrent Open Source License v1.0",
		LicenseID:             "BitTorrent-1.0",
		SeeAlso: []string{
			"http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1=1.1&r2=1.1.1.1&diff_format=s",
		},
		IsOsiApproved: false,
	},
	"hp-1989": {
		Reference:             "https://spdx.org/licenses/HP-1989.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HP-1989.json",
		ReferenceNumber:       234,
		Name:                  "Hewlett-Packard 1989 License",
		LicenseID:             "HP-1989",
		SeeAlso: []string{
			"https://github.com/bleargh45/Data-UUID/blob/master/LICENSE",
		},
		IsOsiApproved: false,
	},
	"oclc-2.0": {
		Reference:             "https://spdx.org/licenses/OCLC-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OCLC-2.0.json",
		ReferenceNumber:       235,
		Name:                  "OCLC Research Public License 2.0",
		LicenseID:             "OCLC-2.0",
		SeeAlso: []string{
			"http://www.oclc.org/research/activities/software/license/v2final.htm",
			"https://opensource.org/licenses/OCLC-2.0",
		},
		IsOsiApproved: true,
	},
	"ms-lpl": {
		Reference:             "https://spdx.org/licenses/MS-LPL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MS-LPL.json",
		ReferenceNumber:       236,
		Name:                  "Microsoft Limited Public License",
		LicenseID:             "MS-LPL",
		SeeAlso: []string{
			"https://www.openhub.net/licenses/mslpl",
			"https://github.com/gabegundy/atlserver/blob/master/License.txt",
			"https://en.wikipedia.org/wiki/Shared_Source_Initiative#Microsoft_Limited_Public_License_(Ms-LPL)",
		},
		IsOsiApproved: false,
	},
	"artistic-2.0": {
		Reference:             "https://spdx.org/licenses/Artistic-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Artistic-2.0.json",
		ReferenceNumber:       237,
		Name:                  "Artistic License 2.0",
		LicenseID:             "Artistic-2.0",
		SeeAlso: []string{
			"http://www.perlfoundation.org/artistic_license_2_0",
			"https://www.perlfoundation.org/artistic-license-20.html",
			"https://opensource.org/licenses/artistic-license-2.0",
		},
		IsOsiApproved: true,
	},
	"gfdl-1.2-invariants-or-later": {
		Reference:             "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.2-invariants-or-later.json",
		ReferenceNumber:       238,
		Name:                  "GNU Free Documentation License v1.2 or later - invariants",
		LicenseID:             "GFDL-1.2-invariants-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt",
		},
		IsOsiApproved: false,
	},
	"json": {
		Reference:             "https://spdx.org/licenses/JSON.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/JSON.json",
		ReferenceNumber:       239,
		Name:                  "JSON License",
		LicenseID:             "JSON",
		SeeAlso: []string{
			"http://www.json.org/license.html",
		},
		IsOsiApproved: false,
	},
	"checkmk": {
		Reference:             "https://spdx.org/licenses/checkmk.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/checkmk.json",
		ReferenceNumber:       240,
		Name:                  "Checkmk License",
		LicenseID:             "checkmk",
		SeeAlso: []string{
			"https://github.com/libcheck/check/blob/master/checkmk/checkmk.in",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-sa-4.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-4.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-4.0.json",
		ReferenceNumber:       241,
		Name:                  "Creative Commons Attribution Non Commercial Share Alike 4.0 International",
		LicenseID:             "CC-BY-NC-SA-4.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"graphics-gems": {
		Reference:             "https://spdx.org/licenses/Graphics-Gems.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Graphics-Gems.json",
		ReferenceNumber:       242,
		Name:                  "Graphics Gems License",
		LicenseID:             "Graphics-Gems",
		SeeAlso: []string{
			"https://github.com/erich666/GraphicsGems/blob/master/LICENSE.md",
		},
		IsOsiApproved: false,
	},
	"gd": {
		Reference:             "https://spdx.org/licenses/GD.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GD.json",
		ReferenceNumber:       243,
		Name:                  "GD License",
		LicenseID:             "GD",
		SeeAlso: []string{
			"https://libgd.github.io/manuals/2.3.0/files/license-txt.html",
		},
		IsOsiApproved: false,
	},
	"0bsd": {
		Reference:             "https://spdx.org/licenses/0BSD.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/0BSD.json",
		ReferenceNumber:       244,
		Name:                  "BSD Zero Clause License",
		LicenseID:             "0BSD",
		SeeAlso: []string{
			"http://landley.net/toybox/license.html",
			"https://opensource.org/licenses/0BSD",
		},
		IsOsiApproved: true,
	},
	"lgpl-2.1+": {
		Reference:             "https://spdx.org/licenses/LGPL-2.1+.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/LGPL-2.1+.json",
		ReferenceNumber:       245,
		Name:                  "GNU Lesser General Public License v2.1 or later",
		LicenseID:             "LGPL-2.1+",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
			"https://opensource.org/licenses/LGPL-2.1",
		},
		IsOsiApproved: true,
	},
	"mit": {
		Reference:             "https://spdx.org/licenses/MIT.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT.json",
		ReferenceNumber:       246,
		Name:                  "MIT License",
		LicenseID:             "MIT",
		SeeAlso: []string{
			"https://opensource.org/licenses/MIT",
		},
		IsOsiApproved: true,
	},
	"occt-pl": {
		Reference:             "https://spdx.org/licenses/OCCT-PL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OCCT-PL.json",
		ReferenceNumber:       247,
		Name:                  "Open CASCADE Technology Public License",
		LicenseID:             "OCCT-PL",
		SeeAlso: []string{
			"http://www.opencascade.com/content/occt-public-license",
		},
		IsOsiApproved: false,
	},
	"lgpl-3.0-only": {
		Reference:             "https://spdx.org/licenses/LGPL-3.0-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LGPL-3.0-only.json",
		ReferenceNumber:       248,
		Name:                  "GNU Lesser General Public License v3.0 only",
		LicenseID:             "LGPL-3.0-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
			"https://www.gnu.org/licenses/lgpl+gpl-3.0.txt",
			"https://opensource.org/licenses/LGPL-3.0",
		},
		IsOsiApproved: true,
	},
	"adacore-doc": {
		Reference:             "https://spdx.org/licenses/AdaCore-doc.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AdaCore-doc.json",
		ReferenceNumber:       249,
		Name:                  "AdaCore Doc License",
		LicenseID:             "AdaCore-doc",
		SeeAlso: []string{
			"https://github.com/AdaCore/xmlada/blob/master/docs/index.rst",
			"https://github.com/AdaCore/gnatcoll-core/blob/master/docs/index.rst",
			"https://github.com/AdaCore/gnatcoll-db/blob/master/docs/index.rst",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-3.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-3.0.json",
		ReferenceNumber:       250,
		Name:                  "Creative Commons Attribution Non Commercial 3.0 Unported",
		LicenseID:             "CC-BY-NC-3.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc/3.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"spencer-94": {
		Reference:             "https://spdx.org/licenses/Spencer-94.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Spencer-94.json",
		ReferenceNumber:       251,
		Name:                  "Spencer License 94",
		LicenseID:             "Spencer-94",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License",
			"https://metacpan.org/release/KNOK/File-MMagic-1.30/source/COPYING#L28",
		},
		IsOsiApproved: false,
	},
	"htmltidy": {
		Reference:             "https://spdx.org/licenses/HTMLTIDY.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HTMLTIDY.json",
		ReferenceNumber:       252,
		Name:                  "HTML Tidy License",
		LicenseID:             "HTMLTIDY",
		SeeAlso: []string{
			"https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.2-no-invariants-or-later": {
		Reference:             "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later.json",
		ReferenceNumber:       253,
		Name:                  "GNU Free Documentation License v1.2 or later - no invariants",
		LicenseID:             "GFDL-1.2-no-invariants-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt",
		},
		IsOsiApproved: false,
	},
	"bsd-4.3tahoe": {
		Reference:             "https://spdx.org/licenses/BSD-4.3TAHOE.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-4.3TAHOE.json",
		ReferenceNumber:       254,
		Name:                  "BSD 4.3 TAHOE License",
		LicenseID:             "BSD-4.3TAHOE",
		SeeAlso: []string{
			"https://github.com/389ds/389-ds-base/blob/main/ldap/include/sysexits-compat.h#L15",
			"https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n1788",
		},
		IsOsiApproved: false,
	},
	"giftware": {
		Reference:             "https://spdx.org/licenses/Giftware.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Giftware.json",
		ReferenceNumber:       255,
		Name:                  "Giftware License",
		LicenseID:             "Giftware",
		SeeAlso: []string{
			"http://liballeg.org/license.html#allegro-4-the-giftware-license",
		},
		IsOsiApproved: false,
	},
	"mpl-1.1": {
		Reference:             "https://spdx.org/licenses/MPL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MPL-1.1.json",
		ReferenceNumber:       256,
		Name:                  "Mozilla Public License 1.1",
		LicenseID:             "MPL-1.1",
		SeeAlso: []string{
			"http://www.mozilla.org/MPL/MPL-1.1.html",
			"https://opensource.org/licenses/MPL-1.1",
		},
		IsOsiApproved: true,
	},
	"ogdl-taiwan-1.0": {
		Reference:             "https://spdx.org/licenses/OGDL-Taiwan-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OGDL-Taiwan-1.0.json",
		ReferenceNumber:       257,
		Name:                  "Taiwan Open Government Data License, version 1.0",
		LicenseID:             "OGDL-Taiwan-1.0",
		SeeAlso: []string{
			"https://data.gov.tw/license",
		},
		IsOsiApproved: false,
	},
	"oldap-2.7": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.7.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.7.json",
		ReferenceNumber:       258,
		Name:                  "Open LDAP Public License v2.7",
		LicenseID:             "OLDAP-2.7",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=47c2415c1df81556eeb39be6cad458ef87c534a2",
		},
		IsOsiApproved: false,
	},
	"rsa-md": {
		Reference:             "https://spdx.org/licenses/RSA-MD.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/RSA-MD.json",
		ReferenceNumber:       259,
		Name:                  "RSA Message-Digest License",
		LicenseID:             "RSA-MD",
		SeeAlso: []string{
			"http://www.faqs.org/rfcs/rfc1321.html",
		},
		IsOsiApproved: false,
	},
	"ferguson-twofish": {
		Reference:             "https://spdx.org/licenses/Ferguson-Twofish.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Ferguson-Twofish.json",
		ReferenceNumber:       260,
		Name:                  "Ferguson Twofish License",
		LicenseID:             "Ferguson-Twofish",
		SeeAlso: []string{
			"https://github.com/wernerd/ZRTPCPP/blob/6b3cd8e6783642292bad0c21e3e5e5ce45ff3e03/cryptcommon/twofish.c#L113C3-L127",
		},
		IsOsiApproved: false,
	},
	"bsd-source-code": {
		Reference:             "https://spdx.org/licenses/BSD-Source-Code.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-Source-Code.json",
		ReferenceNumber:       261,
		Name:                  "BSD Source Code Attribution",
		LicenseID:             "BSD-Source-Code",
		SeeAlso: []string{
			"https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt",
		},
		IsOsiApproved: false,
	},
	"aswf-digital-assets-1.0": {
		Reference:             "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ASWF-Digital-Assets-1.0.json",
		ReferenceNumber:       262,
		Name:                  "ASWF Digital Assets License version 1.0",
		LicenseID:             "ASWF-Digital-Assets-1.0",
		SeeAlso: []string{
			"https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.0.txt",
		},
		IsOsiApproved: false,
	},
	"ypl-1.0": {
		Reference:             "https://spdx.org/licenses/YPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/YPL-1.0.json",
		ReferenceNumber:       263,
		Name:                  "Yahoo! Public License v1.0",
		LicenseID:             "YPL-1.0",
		SeeAlso: []string{
			"http://www.zimbra.com/license/yahoo_public_license_1.0.html",
		},
		IsOsiApproved: false,
	},
	"oldap-2.1": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.1.json",
		ReferenceNumber:       264,
		Name:                  "Open LDAP Public License v2.1",
		LicenseID:             "OLDAP-2.1",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b0d176738e96a0d3b9f85cb51e140a86f21be715",
		},
		IsOsiApproved: false,
	},
	"glulxe": {
		Reference:             "https://spdx.org/licenses/Glulxe.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Glulxe.json",
		ReferenceNumber:       265,
		Name:                  "Glulxe License",
		LicenseID:             "Glulxe",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Glulxe",
		},
		IsOsiApproved: false,
	},
	"postgresql": {
		Reference:             "https://spdx.org/licenses/PostgreSQL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/PostgreSQL.json",
		ReferenceNumber:       266,
		Name:                  "PostgreSQL License",
		LicenseID:             "PostgreSQL",
		SeeAlso: []string{
			"http://www.postgresql.org/about/licence",
			"https://opensource.org/licenses/PostgreSQL",
		},
		IsOsiApproved: true,
	},
	"fair": {
		Reference:             "https://spdx.org/licenses/Fair.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Fair.json",
		ReferenceNumber:       267,
		Name:                  "Fair License",
		LicenseID:             "Fair",
		SeeAlso: []string{
			"http://fairlicense.org/",
			"https://opensource.org/licenses/Fair",
		},
		IsOsiApproved: true,
	},
	"apsl-1.0": {
		Reference:             "https://spdx.org/licenses/APSL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/APSL-1.0.json",
		ReferenceNumber:       268,
		Name:                  "Apple Public Source License 1.0",
		LicenseID:             "APSL-1.0",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0",
		},
		IsOsiApproved: true,
	},
	"gpl-1.0-or-later": {
		Reference:             "https://spdx.org/licenses/GPL-1.0-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GPL-1.0-or-later.json",
		ReferenceNumber:       269,
		Name:                  "GNU General Public License v1.0 or later",
		LicenseID:             "GPL-1.0-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html",
		},
		IsOsiApproved: false,
	},
	"libutil-david-nugent": {
		Reference:             "https://spdx.org/licenses/libutil-David-Nugent.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/libutil-David-Nugent.json",
		ReferenceNumber:       270,
		Name:                  "libutil David Nugent License",
		LicenseID:             "libutil-David-Nugent",
		SeeAlso: []string{
			"http://web.mit.edu/freebsd/head/lib/libutil/login_ok.3",
			"https://cgit.freedesktop.org/libbsd/tree/man/setproctitle.3bsd",
		},
		IsOsiApproved: false,
	},
	"scea": {
		Reference:             "https://spdx.org/licenses/SCEA.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SCEA.json",
		ReferenceNumber:       271,
		Name:                  "SCEA Shared Source License",
		LicenseID:             "SCEA",
		SeeAlso: []string{
			"http://research.scea.com/scea_shared_source_license.html",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-no-military-license": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-No-Military-License.json",
		ReferenceNumber:       272,
		Name:                  "BSD 3-Clause No Military License",
		LicenseID:             "BSD-3-Clause-No-Military-License",
		SeeAlso: []string{
			"https://gitlab.syncad.com/hive/dhive/-/blob/master/LICENSE",
			"https://github.com/greymass/swift-eosio/blob/master/LICENSE",
		},
		IsOsiApproved: false,
	},
	"xnet": {
		Reference:             "https://spdx.org/licenses/Xnet.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Xnet.json",
		ReferenceNumber:       273,
		Name:                  "X.Net License",
		LicenseID:             "Xnet",
		SeeAlso: []string{
			"https://opensource.org/licenses/Xnet",
		},
		IsOsiApproved: true,
	},
	"mit-feh": {
		Reference:             "https://spdx.org/licenses/MIT-feh.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-feh.json",
		ReferenceNumber:       274,
		Name:                  "feh License",
		LicenseID:             "MIT-feh",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/MIT#feh",
		},
		IsOsiApproved: false,
	},
	"agpl-1.0-only": {
		Reference:             "https://spdx.org/licenses/AGPL-1.0-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AGPL-1.0-only.json",
		ReferenceNumber:       275,
		Name:                  "Affero General Public License v1.0 only",
		LicenseID:             "AGPL-1.0-only",
		SeeAlso: []string{
			"http://www.affero.org/oagpl.html",
		},
		IsOsiApproved: false,
	},
	"nokia": {
		Reference:             "https://spdx.org/licenses/Nokia.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Nokia.json",
		ReferenceNumber:       276,
		Name:                  "Nokia Open Source License",
		LicenseID:             "Nokia",
		SeeAlso: []string{
			"https://opensource.org/licenses/nokia",
		},
		IsOsiApproved: true,
	},
	"cornell-lossless-jpeg": {
		Reference:             "https://spdx.org/licenses/Cornell-Lossless-JPEG.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Cornell-Lossless-JPEG.json",
		ReferenceNumber:       277,
		Name:                  "Cornell Lossless JPEG License",
		LicenseID:             "Cornell-Lossless-JPEG",
		SeeAlso: []string{
			"https://android.googlesource.com/platform/external/dng_sdk/+/refs/heads/master/source/dng_lossless_jpeg.cpp#16",
			"https://www.mssl.ucl.ac.uk/~mcrw/src/20050920/proto.h",
			"https://gitlab.freedesktop.org/libopenraw/libopenraw/blob/master/lib/ljpegdecompressor.cpp#L32",
		},
		IsOsiApproved: false,
	},
	"swrule": {
		Reference:             "https://spdx.org/licenses/swrule.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/swrule.json",
		ReferenceNumber:       278,
		Name:                  "swrule License",
		LicenseID:             "swrule",
		SeeAlso: []string{
			"https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/misc/swrule.sty",
		},
		IsOsiApproved: false,
	},
	"osl-1.1": {
		Reference:             "https://spdx.org/licenses/OSL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OSL-1.1.json",
		ReferenceNumber:       279,
		Name:                  "Open Software License 1.1",
		LicenseID:             "OSL-1.1",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/OSL1.1",
		},
		IsOsiApproved: false,
	},
	"gpl-2.0-with-bison-exception": {
		Reference:             "https://spdx.org/licenses/GPL-2.0-with-bison-exception.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-2.0-with-bison-exception.json",
		ReferenceNumber:       280,
		Name:                  "GNU General Public License v2.0 w/Bison exception",
		LicenseID:             "GPL-2.0-with-bison-exception",
		SeeAlso: []string{
			"http://git.savannah.gnu.org/cgit/bison.git/tree/data/yacc.c?id=193d7c7054ba7197b0789e14965b739162319b5e#n141",
		},
		IsOsiApproved: false,
	},
	"epl-1.0": {
		Reference:             "https://spdx.org/licenses/EPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/EPL-1.0.json",
		ReferenceNumber:       281,
		Name:                  "Eclipse Public License 1.0",
		LicenseID:             "EPL-1.0",
		SeeAlso: []string{
			"http://www.eclipse.org/legal/epl-v10.html",
			"https://opensource.org/licenses/EPL-1.0",
		},
		IsOsiApproved: true,
	},
	"xfree86-1.1": {
		Reference:             "https://spdx.org/licenses/XFree86-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/XFree86-1.1.json",
		ReferenceNumber:       282,
		Name:                  "XFree86 License 1.1",
		LicenseID:             "XFree86-1.1",
		SeeAlso: []string{
			"http://www.xfree86.org/current/LICENSE4.html",
		},
		IsOsiApproved: false,
	},
	"ucar": {
		Reference:             "https://spdx.org/licenses/UCAR.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/UCAR.json",
		ReferenceNumber:       283,
		Name:                  "UCAR License",
		LicenseID:             "UCAR",
		SeeAlso: []string{
			"https://github.com/Unidata/UDUNITS-2/blob/master/COPYRIGHT",
		},
		IsOsiApproved: false,
	},
	"copyleft-next-0.3.1": {
		Reference:             "https://spdx.org/licenses/copyleft-next-0.3.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/copyleft-next-0.3.1.json",
		ReferenceNumber:       284,
		Name:                  "copyleft-next 0.3.1",
		LicenseID:             "copyleft-next-0.3.1",
		SeeAlso: []string{
			"https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1",
		},
		IsOsiApproved: false,
	},
	"ijg-short": {
		Reference:             "https://spdx.org/licenses/IJG-short.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/IJG-short.json",
		ReferenceNumber:       285,
		Name:                  "Independent JPEG Group License - short",
		LicenseID:             "IJG-short",
		SeeAlso: []string{
			"https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/ljpg/",
		},
		IsOsiApproved: false,
	},
	"plexus": {
		Reference:             "https://spdx.org/licenses/Plexus.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Plexus.json",
		ReferenceNumber:       286,
		Name:                  "Plexus Classworlds License",
		LicenseID:             "Plexus",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License",
		},
		IsOsiApproved: false,
	},
	"apache-1.1": {
		Reference:             "https://spdx.org/licenses/Apache-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Apache-1.1.json",
		ReferenceNumber:       287,
		Name:                  "Apache License 1.1",
		LicenseID:             "Apache-1.1",
		SeeAlso: []string{
			"http://apache.org/licenses/LICENSE-1.1",
			"https://opensource.org/licenses/Apache-1.1",
		},
		IsOsiApproved: true,
	},
	"upl-1.0": {
		Reference:             "https://spdx.org/licenses/UPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/UPL-1.0.json",
		ReferenceNumber:       288,
		Name:                  "Universal Permissive License v1.0",
		LicenseID:             "UPL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/UPL",
		},
		IsOsiApproved: true,
	},
	"hpnd-dec": {
		Reference:             "https://spdx.org/licenses/HPND-DEC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-DEC.json",
		ReferenceNumber:       289,
		Name:                  "Historical Permission Notice and Disclaimer - DEC variant",
		LicenseID:             "HPND-DEC",
		SeeAlso: []string{
			"https://gitlab.freedesktop.org/xorg/app/xkbcomp/-/blob/master/COPYING?ref_type=heads#L69",
		},
		IsOsiApproved: false,
	},
	"hp-1986": {
		Reference:             "https://spdx.org/licenses/HP-1986.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HP-1986.json",
		ReferenceNumber:       290,
		Name:                  "Hewlett-Packard 1986 License",
		LicenseID:             "HP-1986",
		SeeAlso: []string{
			"https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/machine/hppa/memchr.S;h=1cca3e5e8867aa4bffef1f75a5c1bba25c0c441e;hb=HEAD#l2",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.1-only": {
		Reference:             "https://spdx.org/licenses/GFDL-1.1-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.1-only.json",
		ReferenceNumber:       291,
		Name:                  "GNU Free Documentation License v1.1 only",
		LicenseID:             "GFDL-1.1-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt",
		},
		IsOsiApproved: false,
	},
	"qpl-1.0": {
		Reference:             "https://spdx.org/licenses/QPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/QPL-1.0.json",
		ReferenceNumber:       292,
		Name:                  "Q Public License 1.0",
		LicenseID:             "QPL-1.0",
		SeeAlso: []string{
			"http://doc.qt.nokia.com/3.3/license.html",
			"https://opensource.org/licenses/QPL-1.0",
			"https://doc.qt.io/archives/3.3/license.html",
		},
		IsOsiApproved: true,
	},
	"libpng-2.0": {
		Reference:             "https://spdx.org/licenses/libpng-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/libpng-2.0.json",
		ReferenceNumber:       293,
		Name:                  "PNG Reference Library version 2",
		LicenseID:             "libpng-2.0",
		SeeAlso: []string{
			"http://www.libpng.org/pub/png/src/libpng-LICENSE.txt",
		},
		IsOsiApproved: false,
	},
	"zlib": {
		Reference:             "https://spdx.org/licenses/Zlib.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Zlib.json",
		ReferenceNumber:       294,
		Name:                  "zlib License",
		LicenseID:             "Zlib",
		SeeAlso: []string{
			"http://www.zlib.net/zlib_license.html",
			"https://opensource.org/licenses/Zlib",
		},
		IsOsiApproved: true,
	},
	"gfdl-1.3-or-later": {
		Reference:             "https://spdx.org/licenses/GFDL-1.3-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.3-or-later.json",
		ReferenceNumber:       295,
		Name:                  "GNU Free Documentation License v1.3 or later",
		LicenseID:             "GFDL-1.3-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/fdl-1.3.txt",
		},
		IsOsiApproved: false,
	},
	"cern-ohl-1.1": {
		Reference:             "https://spdx.org/licenses/CERN-OHL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CERN-OHL-1.1.json",
		ReferenceNumber:       296,
		Name:                  "CERN Open Hardware Licence v1.1",
		LicenseID:             "CERN-OHL-1.1",
		SeeAlso: []string{
			"https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1",
		},
		IsOsiApproved: false,
	},
	"sugarcrm-1.1.3": {
		Reference:             "https://spdx.org/licenses/SugarCRM-1.1.3.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SugarCRM-1.1.3.json",
		ReferenceNumber:       297,
		Name:                  "SugarCRM Public License v1.1.3",
		LicenseID:             "SugarCRM-1.1.3",
		SeeAlso: []string{
			"http://www.sugarcrm.com/crm/SPL",
		},
		IsOsiApproved: false,
	},
	"vsl-1.0": {
		Reference:             "https://spdx.org/licenses/VSL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/VSL-1.0.json",
		ReferenceNumber:       298,
		Name:                  "Vovida Software License v1.0",
		LicenseID:             "VSL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/VSL-1.0",
		},
		IsOsiApproved: true,
	},
	"nrl": {
		Reference:             "https://spdx.org/licenses/NRL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NRL.json",
		ReferenceNumber:       299,
		Name:                  "NRL License",
		LicenseID:             "NRL",
		SeeAlso: []string{
			"http://web.mit.edu/network/isakmp/nrllicense.html",
		},
		IsOsiApproved: false,
	},
	"zend-2.0": {
		Reference:             "https://spdx.org/licenses/Zend-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Zend-2.0.json",
		ReferenceNumber:       300,
		Name:                  "Zend License v2.0",
		LicenseID:             "Zend-2.0",
		SeeAlso: []string{
			"https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt",
		},
		IsOsiApproved: false,
	},
	"ogl-canada-2.0": {
		Reference:             "https://spdx.org/licenses/OGL-Canada-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OGL-Canada-2.0.json",
		ReferenceNumber:       301,
		Name:                  "Open Government Licence - Canada",
		LicenseID:             "OGL-Canada-2.0",
		SeeAlso: []string{
			"https://open.canada.ca/en/open-government-licence-canada",
		},
		IsOsiApproved: false,
	},
	"eudatagrid": {
		Reference:             "https://spdx.org/licenses/EUDatagrid.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/EUDatagrid.json",
		ReferenceNumber:       302,
		Name:                  "EU DataGrid Software License",
		LicenseID:             "EUDatagrid",
		SeeAlso: []string{
			"http://eu-datagrid.web.cern.ch/eu-datagrid/license.html",
			"https://opensource.org/licenses/EUDatagrid",
		},
		IsOsiApproved: true,
	},
	"nunit": {
		Reference:             "https://spdx.org/licenses/Nunit.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/Nunit.json",
		ReferenceNumber:       303,
		Name:                  "Nunit License",
		LicenseID:             "Nunit",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Nunit",
		},
		IsOsiApproved: false,
	},
	"mulanpsl-2.0": {
		Reference:             "https://spdx.org/licenses/MulanPSL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MulanPSL-2.0.json",
		ReferenceNumber:       304,
		Name:                  "Mulan Permissive Software License, Version 2",
		LicenseID:             "MulanPSL-2.0",
		SeeAlso: []string{
			"https://license.coscl.org.cn/MulanPSL2/",
		},
		IsOsiApproved: true,
	},
	"newsletr": {
		Reference:             "https://spdx.org/licenses/Newsletr.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Newsletr.json",
		ReferenceNumber:       305,
		Name:                  "Newsletr License",
		LicenseID:             "Newsletr",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Newsletr",
		},
		IsOsiApproved: false,
	},
	"bsd-4-clause-uc": {
		Reference:             "https://spdx.org/licenses/BSD-4-Clause-UC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-4-Clause-UC.json",
		ReferenceNumber:       306,
		Name:                  "BSD-4-Clause (University of California-Specific)",
		LicenseID:             "BSD-4-Clause-UC",
		SeeAlso: []string{
			"http://www.freebsd.org/copyright/license.html",
		},
		IsOsiApproved: false,
	},
	"polyform-small-business-1.0.0": {
		Reference:             "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/PolyForm-Small-Business-1.0.0.json",
		ReferenceNumber:       307,
		Name:                  "PolyForm Small Business License 1.0.0",
		LicenseID:             "PolyForm-Small-Business-1.0.0",
		SeeAlso: []string{
			"https://polyformproject.org/licenses/small-business/1.0.0",
		},
		IsOsiApproved: false,
	},
	"miros": {
		Reference:             "https://spdx.org/licenses/MirOS.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MirOS.json",
		ReferenceNumber:       308,
		Name:                  "The MirOS Licence",
		LicenseID:             "MirOS",
		SeeAlso: []string{
			"https://opensource.org/licenses/MirOS",
		},
		IsOsiApproved: true,
	},
	"adobe-utopia": {
		Reference:             "https://spdx.org/licenses/Adobe-Utopia.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Adobe-Utopia.json",
		ReferenceNumber:       309,
		Name:                  "Adobe Utopia Font License",
		LicenseID:             "Adobe-Utopia",
		SeeAlso: []string{
			"https://gitlab.freedesktop.org/xorg/font/adobe-utopia-100dpi/-/blob/master/COPYING?ref_type=heads",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.1-no-invariants-or-later": {
		Reference:             "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later.json",
		ReferenceNumber:       310,
		Name:                  "GNU Free Documentation License v1.1 or later - no invariants",
		LicenseID:             "GFDL-1.1-no-invariants-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt",
		},
		IsOsiApproved: false,
	},
	"rpl-1.5": {
		Reference:             "https://spdx.org/licenses/RPL-1.5.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/RPL-1.5.json",
		ReferenceNumber:       311,
		Name:                  "Reciprocal Public License 1.5",
		LicenseID:             "RPL-1.5",
		SeeAlso: []string{
			"https://opensource.org/licenses/RPL-1.5",
		},
		IsOsiApproved: true,
	},
	"tmate": {
		Reference:             "https://spdx.org/licenses/TMate.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TMate.json",
		ReferenceNumber:       312,
		Name:                  "TMate Open Source License",
		LicenseID:             "TMate",
		SeeAlso: []string{
			"http://svnkit.com/license.html",
		},
		IsOsiApproved: false,
	},
	"libtiff": {
		Reference:             "https://spdx.org/licenses/libtiff.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/libtiff.json",
		ReferenceNumber:       313,
		Name:                  "libtiff License",
		LicenseID:             "libtiff",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/libtiff",
		},
		IsOsiApproved: false,
	},
	"gpl-3.0-only": {
		Reference:             "https://spdx.org/licenses/GPL-3.0-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GPL-3.0-only.json",
		ReferenceNumber:       314,
		Name:                  "GNU General Public License v3.0 only",
		LicenseID:             "GPL-3.0-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/gpl-3.0-standalone.html",
			"https://opensource.org/licenses/GPL-3.0",
		},
		IsOsiApproved: true,
	},
	"cc-by-sa-3.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-3.0.json",
		ReferenceNumber:       315,
		Name:                  "Creative Commons Attribution Share Alike 3.0 Unported",
		LicenseID:             "CC-BY-SA-3.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/3.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"unicode-dfs-2016": {
		Reference:             "https://spdx.org/licenses/Unicode-DFS-2016.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Unicode-DFS-2016.json",
		ReferenceNumber:       316,
		Name:                  "Unicode License Agreement - Data Files and Software (2016)",
		LicenseID:             "Unicode-DFS-2016",
		SeeAlso: []string{
			"https://www.unicode.org/license.txt",
			"http://web.archive.org/web/20160823201924/http://www.unicode.org/copyright.html#License",
			"http://www.unicode.org/copyright.html",
		},
		IsOsiApproved: true,
	},
	"cc-by-nc-3.0-de": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-3.0-DE.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-3.0-DE.json",
		ReferenceNumber:       317,
		Name:                  "Creative Commons Attribution Non Commercial 3.0 Germany",
		LicenseID:             "CC-BY-NC-3.0-DE",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc/3.0/de/legalcode",
		},
		IsOsiApproved: false,
	},
	"npl-1.0": {
		Reference:             "https://spdx.org/licenses/NPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NPL-1.0.json",
		ReferenceNumber:       318,
		Name:                  "Netscape Public License v1.0",
		LicenseID:             "NPL-1.0",
		SeeAlso: []string{
			"http://www.mozilla.org/MPL/NPL/1.0/",
		},
		IsOsiApproved: false,
	},
	"egenix": {
		Reference:             "https://spdx.org/licenses/eGenix.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/eGenix.json",
		ReferenceNumber:       319,
		Name:                  "eGenix.com Public License 1.1.0",
		LicenseID:             "eGenix",
		SeeAlso: []string{
			"http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf",
			"https://fedoraproject.org/wiki/Licensing/eGenix.com_Public_License_1.1.0",
		},
		IsOsiApproved: false,
	},
	"polyform-noncommercial-1.0.0": {
		Reference:             "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0.json",
		ReferenceNumber:       320,
		Name:                  "PolyForm Noncommercial License 1.0.0",
		LicenseID:             "PolyForm-Noncommercial-1.0.0",
		SeeAlso: []string{
			"https://polyformproject.org/licenses/noncommercial/1.0.0",
		},
		IsOsiApproved: false,
	},
	"crossword": {
		Reference:             "https://spdx.org/licenses/Crossword.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Crossword.json",
		ReferenceNumber:       321,
		Name:                  "Crossword License",
		LicenseID:             "Crossword",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Crossword",
		},
		IsOsiApproved: false,
	},
	"iec-code-components-eula": {
		Reference:             "https://spdx.org/licenses/IEC-Code-Components-EULA.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/IEC-Code-Components-EULA.json",
		ReferenceNumber:       322,
		Name:                  "IEC    Code Components End-user licence agreement",
		LicenseID:             "IEC-Code-Components-EULA",
		SeeAlso: []string{
			"https://www.iec.ch/webstore/custserv/pdf/CC-EULA.pdf",
			"https://www.iec.ch/CCv1",
			"https://www.iec.ch/copyright",
		},
		IsOsiApproved: false,
	},
	"hpnd": {
		Reference:             "https://spdx.org/licenses/HPND.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND.json",
		ReferenceNumber:       323,
		Name:                  "Historical Permission Notice and Disclaimer",
		LicenseID:             "HPND",
		SeeAlso: []string{
			"https://opensource.org/licenses/HPND",
			"http://lists.opensource.org/pipermail/license-discuss_lists.opensource.org/2002-November/006304.html",
		},
		IsOsiApproved: true,
	},
	"efl-1.0": {
		Reference:             "https://spdx.org/licenses/EFL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/EFL-1.0.json",
		ReferenceNumber:       324,
		Name:                  "Eiffel Forum License v1.0",
		LicenseID:             "EFL-1.0",
		SeeAlso: []string{
			"http://www.eiffel-nice.org/license/forum.txt",
			"https://opensource.org/licenses/EFL-1.0",
		},
		IsOsiApproved: true,
	},
	"oldap-1.4": {
		Reference:             "https://spdx.org/licenses/OLDAP-1.4.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-1.4.json",
		ReferenceNumber:       325,
		Name:                  "Open LDAP Public License v1.4",
		LicenseID:             "OLDAP-1.4",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=c9f95c2f3f2ffb5e0ae55fe7388af75547660941",
		},
		IsOsiApproved: false,
	},
	"mmixware": {
		Reference:             "https://spdx.org/licenses/MMIXware.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MMIXware.json",
		ReferenceNumber:       326,
		Name:                  "MMIXware License",
		LicenseID:             "MMIXware",
		SeeAlso: []string{
			"https://gitlab.lrz.de/mmix/mmixware/-/blob/master/boilerplate.w",
		},
		IsOsiApproved: false,
	},
	"openpbs-2.3": {
		Reference:             "https://spdx.org/licenses/OpenPBS-2.3.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OpenPBS-2.3.json",
		ReferenceNumber:       327,
		Name:                  "OpenPBS v2.3 Software License",
		LicenseID:             "OpenPBS-2.3",
		SeeAlso: []string{
			"https://github.com/adaptivecomputing/torque/blob/master/PBS_License.txt",
			"https://www.mcs.anl.gov/research/projects/openpbs/PBS_License.txt",
		},
		IsOsiApproved: false,
	},
	"unicode-tou": {
		Reference:             "https://spdx.org/licenses/Unicode-TOU.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Unicode-TOU.json",
		ReferenceNumber:       328,
		Name:                  "Unicode Terms of Use",
		LicenseID:             "Unicode-TOU",
		SeeAlso: []string{
			"http://web.archive.org/web/20140704074106/http://www.unicode.org/copyright.html",
			"http://www.unicode.org/copyright.html",
		},
		IsOsiApproved: false,
	},
	"cc-by-3.0-de": {
		Reference:             "https://spdx.org/licenses/CC-BY-3.0-DE.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-3.0-DE.json",
		ReferenceNumber:       329,
		Name:                  "Creative Commons Attribution 3.0 Germany",
		LicenseID:             "CC-BY-3.0-DE",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/3.0/de/legalcode",
		},
		IsOsiApproved: false,
	},
	"eupl-1.1": {
		Reference:             "https://spdx.org/licenses/EUPL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/EUPL-1.1.json",
		ReferenceNumber:       330,
		Name:                  "European Union Public License 1.1",
		LicenseID:             "EUPL-1.1",
		SeeAlso: []string{
			"https://joinup.ec.europa.eu/software/page/eupl/licence-eupl",
			"https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl1.1.-licence-en_0.pdf",
			"https://opensource.org/licenses/EUPL-1.1",
		},
		IsOsiApproved: true,
	},
	"sl": {
		Reference:             "https://spdx.org/licenses/SL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SL.json",
		ReferenceNumber:       331,
		Name:                  "SL License",
		LicenseID:             "SL",
		SeeAlso: []string{
			"https://github.com/mtoyoda/sl/blob/master/LICENSE",
		},
		IsOsiApproved: false,
	},
	"gpl-2.0-with-font-exception": {
		Reference:             "https://spdx.org/licenses/GPL-2.0-with-font-exception.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-2.0-with-font-exception.json",
		ReferenceNumber:       332,
		Name:                  "GNU General Public License v2.0 w/Font exception",
		LicenseID:             "GPL-2.0-with-font-exception",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/gpl-faq.html#FontException",
		},
		IsOsiApproved: false,
	},
	"motosoto": {
		Reference:             "https://spdx.org/licenses/Motosoto.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Motosoto.json",
		ReferenceNumber:       333,
		Name:                  "Motosoto License",
		LicenseID:             "Motosoto",
		SeeAlso: []string{
			"https://opensource.org/licenses/Motosoto",
		},
		IsOsiApproved: true,
	},
	"caldera": {
		Reference:             "https://spdx.org/licenses/Caldera.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Caldera.json",
		ReferenceNumber:       334,
		Name:                  "Caldera License",
		LicenseID:             "Caldera",
		SeeAlso: []string{
			"http://www.lemis.com/grog/UNIX/ancient-source-all.pdf",
		},
		IsOsiApproved: false,
	},
	"gpl-2.0": {
		Reference:             "https://spdx.org/licenses/GPL-2.0.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-2.0.json",
		ReferenceNumber:       335,
		Name:                  "GNU General Public License v2.0 only",
		LicenseID:             "GPL-2.0",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
			"https://opensource.org/licenses/GPL-2.0",
		},
		IsOsiApproved: true,
	},
	"bsd-inferno-nettverk": {
		Reference:             "https://spdx.org/licenses/BSD-Inferno-Nettverk.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-Inferno-Nettverk.json",
		ReferenceNumber:       336,
		Name:                  "BSD-Inferno-Nettverk",
		LicenseID:             "BSD-Inferno-Nettverk",
		SeeAlso: []string{
			"https://www.inet.no/dante/LICENSE",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.1": {
		Reference:             "https://spdx.org/licenses/GFDL-1.1.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.1.json",
		ReferenceNumber:       337,
		Name:                  "GNU Free Documentation License v1.1",
		LicenseID:             "GFDL-1.1",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt",
		},
		IsOsiApproved: false,
	},
	"tapr-ohl-1.0": {
		Reference:             "https://spdx.org/licenses/TAPR-OHL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TAPR-OHL-1.0.json",
		ReferenceNumber:       338,
		Name:                  "TAPR Open Hardware License v1.0",
		LicenseID:             "TAPR-OHL-1.0",
		SeeAlso: []string{
			"https://www.tapr.org/OHL",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-sa-3.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-3.0.json",
		ReferenceNumber:       339,
		Name:                  "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported",
		LicenseID:             "CC-BY-NC-SA-3.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-sa-1.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-1.0.json",
		ReferenceNumber:       340,
		Name:                  "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic",
		LicenseID:             "CC-BY-NC-SA-1.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-open-mpi": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-Open-MPI.json",
		ReferenceNumber:       341,
		Name:                  "BSD 3-Clause Open MPI variant",
		LicenseID:             "BSD-3-Clause-Open-MPI",
		SeeAlso: []string{
			"https://www.open-mpi.org/community/license.php",
			"http://www.netlib.org/lapack/LICENSE.txt",
		},
		IsOsiApproved: false,
	},
	"cc-by-1.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-1.0.json",
		ReferenceNumber:       342,
		Name:                  "Creative Commons Attribution 1.0 Generic",
		LicenseID:             "CC-BY-1.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/1.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"php-3.01": {
		Reference:             "https://spdx.org/licenses/PHP-3.01.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/PHP-3.01.json",
		ReferenceNumber:       343,
		Name:                  "PHP License v3.01",
		LicenseID:             "PHP-3.01",
		SeeAlso: []string{
			"http://www.php.net/license/3_01.txt",
		},
		IsOsiApproved: true,
	},
	"padl": {
		Reference:             "https://spdx.org/licenses/PADL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/PADL.json",
		ReferenceNumber:       344,
		Name:                  "PADL License",
		LicenseID:             "PADL",
		SeeAlso: []string{
			"https://git.openldap.org/openldap/openldap/-/blob/master/libraries/libldap/os-local.c?ref_type=heads#L19-23",
		},
		IsOsiApproved: false,
	},
	"afl-1.1": {
		Reference:             "https://spdx.org/licenses/AFL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AFL-1.1.json",
		ReferenceNumber:       345,
		Name:                  "Academic Free License v1.1",
		LicenseID:             "AFL-1.1",
		SeeAlso: []string{
			"http://opensource.linux-mirror.org/licenses/afl-1.1.txt",
			"http://wayback.archive.org/web/20021004124254/http://www.opensource.org/licenses/academic.php",
		},
		IsOsiApproved: true,
	},
	"mit-cmu": {
		Reference:             "https://spdx.org/licenses/MIT-CMU.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-CMU.json",
		ReferenceNumber:       346,
		Name:                  "CMU License",
		LicenseID:             "MIT-CMU",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#CMU_Style",
			"https://github.com/python-pillow/Pillow/blob/fffb426092c8db24a5f4b6df243a8a3c01fb63cd/LICENSE",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-flex": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-flex.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-flex.json",
		ReferenceNumber:       347,
		Name:                  "BSD 3-Clause Flex variant",
		LicenseID:             "BSD-3-Clause-flex",
		SeeAlso: []string{
			"https://github.com/westes/flex/blob/master/COPYING",
		},
		IsOsiApproved: false,
	},
	"odbl-1.0": {
		Reference:             "https://spdx.org/licenses/ODbL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ODbL-1.0.json",
		ReferenceNumber:       348,
		Name:                  "Open Data Commons Open Database License v1.0",
		LicenseID:             "ODbL-1.0",
		SeeAlso: []string{
			"http://www.opendatacommons.org/licenses/odbl/1.0/",
			"https://opendatacommons.org/licenses/odbl/1-0/",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-4.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-4.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-4.0.json",
		ReferenceNumber:       349,
		Name:                  "Creative Commons Attribution Non Commercial 4.0 International",
		LicenseID:             "CC-BY-NC-4.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc/4.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"python-2.0.1": {
		Reference:             "https://spdx.org/licenses/Python-2.0.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Python-2.0.1.json",
		ReferenceNumber:       350,
		Name:                  "Python License 2.0.1",
		LicenseID:             "Python-2.0.1",
		SeeAlso: []string{
			"https://www.python.org/download/releases/2.0.1/license/",
			"https://docs.python.org/3/license.html",
			"https://github.com/python/cpython/blob/main/LICENSE",
		},
		IsOsiApproved: false,
	},
	"ipa": {
		Reference:             "https://spdx.org/licenses/IPA.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/IPA.json",
		ReferenceNumber:       351,
		Name:                  "IPA Font License",
		LicenseID:             "IPA",
		SeeAlso: []string{
			"https://opensource.org/licenses/IPA",
		},
		IsOsiApproved: true,
	},
	"aml": {
		Reference:             "https://spdx.org/licenses/AML.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AML.json",
		ReferenceNumber:       352,
		Name:                  "Apple MIT License",
		LicenseID:             "AML",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Apple_MIT_License",
		},
		IsOsiApproved: false,
	},
	"libselinux-1.0": {
		Reference:             "https://spdx.org/licenses/libselinux-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/libselinux-1.0.json",
		ReferenceNumber:       353,
		Name:                  "libselinux public domain notice",
		LicenseID:             "libselinux-1.0",
		SeeAlso: []string{
			"https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE",
		},
		IsOsiApproved: false,
	},
	"cc-by-3.0-at": {
		Reference:             "https://spdx.org/licenses/CC-BY-3.0-AT.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-3.0-AT.json",
		ReferenceNumber:       354,
		Name:                  "Creative Commons Attribution 3.0 Austria",
		LicenseID:             "CC-BY-3.0-AT",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/3.0/at/legalcode",
		},
		IsOsiApproved: false,
	},
	"qpl-1.0-inria-2004": {
		Reference:             "https://spdx.org/licenses/QPL-1.0-INRIA-2004.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/QPL-1.0-INRIA-2004.json",
		ReferenceNumber:       355,
		Name:                  "Q Public License 1.0 - INRIA 2004 variant",
		LicenseID:             "QPL-1.0-INRIA-2004",
		SeeAlso: []string{
			"https://github.com/maranget/hevea/blob/master/LICENSE",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.1-invariants-or-later": {
		Reference:             "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.1-invariants-or-later.json",
		ReferenceNumber:       356,
		Name:                  "GNU Free Documentation License v1.1 or later - invariants",
		LicenseID:             "GFDL-1.1-invariants-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt",
		},
		IsOsiApproved: false,
	},
	"rdisc": {
		Reference:             "https://spdx.org/licenses/Rdisc.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Rdisc.json",
		ReferenceNumber:       357,
		Name:                  "Rdisc License",
		LicenseID:             "Rdisc",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Rdisc_License",
		},
		IsOsiApproved: false,
	},
	"bsd-attribution-hpnd-disclaimer": {
		Reference:             "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-Attribution-HPND-disclaimer.json",
		ReferenceNumber:       358,
		Name:                  "BSD with Attribution and HPND disclaimer",
		LicenseID:             "BSD-Attribution-HPND-disclaimer",
		SeeAlso: []string{
			"https://github.com/cyrusimap/cyrus-sasl/blob/master/COPYING",
		},
		IsOsiApproved: false,
	},
	"xerox": {
		Reference:             "https://spdx.org/licenses/Xerox.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Xerox.json",
		ReferenceNumber:       359,
		Name:                  "Xerox License",
		LicenseID:             "Xerox",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Xerox",
		},
		IsOsiApproved: false,
	},
	"lppl-1.1": {
		Reference:             "https://spdx.org/licenses/LPPL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LPPL-1.1.json",
		ReferenceNumber:       360,
		Name:                  "LaTeX Project Public License v1.1",
		LicenseID:             "LPPL-1.1",
		SeeAlso: []string{
			"http://www.latex-project.org/lppl/lppl-1-1.txt",
		},
		IsOsiApproved: false,
	},
	"ogl-uk-3.0": {
		Reference:             "https://spdx.org/licenses/OGL-UK-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OGL-UK-3.0.json",
		ReferenceNumber:       361,
		Name:                  "Open Government Licence v3.0",
		LicenseID:             "OGL-UK-3.0",
		SeeAlso: []string{
			"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",
		},
		IsOsiApproved: false,
	},
	"lgpl-3.0": {
		Reference:             "https://spdx.org/licenses/LGPL-3.0.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/LGPL-3.0.json",
		ReferenceNumber:       362,
		Name:                  "GNU Lesser General Public License v3.0 only",
		LicenseID:             "LGPL-3.0",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
			"https://www.gnu.org/licenses/lgpl+gpl-3.0.txt",
			"https://opensource.org/licenses/LGPL-3.0",
		},
		IsOsiApproved: true,
	},
	"lgpl-2.1": {
		Reference:             "https://spdx.org/licenses/LGPL-2.1.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/LGPL-2.1.json",
		ReferenceNumber:       363,
		Name:                  "GNU Lesser General Public License v2.1 only",
		LicenseID:             "LGPL-2.1",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
			"https://opensource.org/licenses/LGPL-2.1",
		},
		IsOsiApproved: true,
	},
	"minpack": {
		Reference:             "https://spdx.org/licenses/Minpack.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Minpack.json",
		ReferenceNumber:       364,
		Name:                  "Minpack License",
		LicenseID:             "Minpack",
		SeeAlso: []string{
			"http://www.netlib.org/minpack/disclaimer",
			"https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.MINPACK",
		},
		IsOsiApproved: false,
	},
	"apsl-1.2": {
		Reference:             "https://spdx.org/licenses/APSL-1.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/APSL-1.2.json",
		ReferenceNumber:       365,
		Name:                  "Apple Public Source License 1.2",
		LicenseID:             "APSL-1.2",
		SeeAlso: []string{
			"http://www.samurajdata.se/opensource/mirror/licenses/apsl.php",
		},
		IsOsiApproved: true,
	},
	"eurosym": {
		Reference:             "https://spdx.org/licenses/Eurosym.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Eurosym.json",
		ReferenceNumber:       366,
		Name:                  "Eurosym License",
		LicenseID:             "Eurosym",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Eurosym",
		},
		IsOsiApproved: false,
	},
	"bsd-advertising-acknowledgement": {
		Reference:             "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-Advertising-Acknowledgement.json",
		ReferenceNumber:       367,
		Name:                  "BSD Advertising Acknowledgement License",
		LicenseID:             "BSD-Advertising-Acknowledgement",
		SeeAlso: []string{
			"https://github.com/python-excel/xlrd/blob/master/LICENSE#L33",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-sa-2.0-uk": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-2.0-UK.json",
		ReferenceNumber:       368,
		Name:                  "Creative Commons Attribution Non Commercial Share Alike 2.0 England and Wales",
		LicenseID:             "CC-BY-NC-SA-2.0-UK",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/2.0/uk/legalcode",
		},
		IsOsiApproved: false,
	},
	"x11-distribute-modifications-variant": {
		Reference:             "https://spdx.org/licenses/X11-distribute-modifications-variant.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/X11-distribute-modifications-variant.json",
		ReferenceNumber:       369,
		Name:                  "X11 License Distribution Modification Variant",
		LicenseID:             "X11-distribute-modifications-variant",
		SeeAlso: []string{
			"https://github.com/mirror/ncurses/blob/master/COPYING",
		},
		IsOsiApproved: false,
	},
	"w3m": {
		Reference:             "https://spdx.org/licenses/w3m.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/w3m.json",
		ReferenceNumber:       370,
		Name:                  "w3m License",
		LicenseID:             "w3m",
		SeeAlso: []string{
			"https://github.com/tats/w3m/blob/master/COPYING",
		},
		IsOsiApproved: false,
	},
	"bzip2-1.0.5": {
		Reference:             "https://spdx.org/licenses/bzip2-1.0.5.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/bzip2-1.0.5.json",
		ReferenceNumber:       371,
		Name:                  "bzip2 and libbzip2 License v1.0.5",
		LicenseID:             "bzip2-1.0.5",
		SeeAlso: []string{
			"https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html",
			"http://bzip.org/1.0.5/bzip2-manual-1.0.5.html",
		},
		IsOsiApproved: false,
	},
	"pnmstitch": {
		Reference:             "https://spdx.org/licenses/pnmstitch.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/pnmstitch.json",
		ReferenceNumber:       372,
		Name:                  "pnmstitch License",
		LicenseID:             "pnmstitch",
		SeeAlso: []string{
			"https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/editor/pnmstitch.c#l2",
		},
		IsOsiApproved: false,
	},
	"cpal-1.0": {
		Reference:             "https://spdx.org/licenses/CPAL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CPAL-1.0.json",
		ReferenceNumber:       373,
		Name:                  "Common Public Attribution License 1.0",
		LicenseID:             "CPAL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/CPAL-1.0",
		},
		IsOsiApproved: true,
	},
	"sissl": {
		Reference:             "https://spdx.org/licenses/SISSL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SISSL.json",
		ReferenceNumber:       374,
		Name:                  "Sun Industry Standards Source License v1.1",
		LicenseID:             "SISSL",
		SeeAlso: []string{
			"http://www.openoffice.org/licenses/sissl_license.html",
			"https://opensource.org/licenses/SISSL",
		},
		IsOsiApproved: true,
	},
	"liliq-r-1.1": {
		Reference:             "https://spdx.org/licenses/LiLiQ-R-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LiLiQ-R-1.1.json",
		ReferenceNumber:       375,
		Name:                  "Licence Libre du Québec – Réciprocité version 1.1",
		LicenseID:             "LiLiQ-R-1.1",
		SeeAlso: []string{
			"https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/",
			"http://opensource.org/licenses/LiLiQ-R-1.1",
		},
		IsOsiApproved: true,
	},
	"cc-by-nc-sa-2.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-2.0.json",
		ReferenceNumber:       376,
		Name:                  "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic",
		LicenseID:             "CC-BY-NC-SA-2.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"unlicense": {
		Reference:             "https://spdx.org/licenses/Unlicense.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Unlicense.json",
		ReferenceNumber:       377,
		Name:                  "The Unlicense",
		LicenseID:             "Unlicense",
		SeeAlso: []string{
			"https://unlicense.org/",
		},
		IsOsiApproved: true,
	},
	"linux-openib": {
		Reference:             "https://spdx.org/licenses/Linux-OpenIB.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Linux-OpenIB.json",
		ReferenceNumber:       378,
		Name:                  "Linux Kernel Variant of OpenIB.org license",
		LicenseID:             "Linux-OpenIB",
		SeeAlso: []string{
			"https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h",
		},
		IsOsiApproved: false,
	},
	"loop": {
		Reference:             "https://spdx.org/licenses/LOOP.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LOOP.json",
		ReferenceNumber:       379,
		Name:                  "Common Lisp LOOP License",
		LicenseID:             "LOOP",
		SeeAlso: []string{
			"https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/src/lsp/loop.lsp",
			"http://git.savannah.gnu.org/cgit/gcl.git/tree/gcl/lsp/gcl_loop.lsp?h=Version_2_6_13pre",
			"https://sourceforge.net/p/sbcl/sbcl/ci/master/tree/src/code/loop.lisp",
			"https://github.com/cl-adams/adams/blob/master/LICENSE.md",
			"https://github.com/blakemcbride/eclipse-lisp/blob/master/lisp/loop.lisp",
			"https://gitlab.common-lisp.net/cmucl/cmucl/-/blob/master/src/code/loop.lisp",
		},
		IsOsiApproved: false,
	},
	"cdla-sharing-1.0": {
		Reference:             "https://spdx.org/licenses/CDLA-Sharing-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CDLA-Sharing-1.0.json",
		ReferenceNumber:       380,
		Name:                  "Community Data License Agreement Sharing 1.0",
		LicenseID:             "CDLA-Sharing-1.0",
		SeeAlso: []string{
			"https://cdla.io/sharing-1-0",
		},
		IsOsiApproved: false,
	},
	"cc-by-3.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-3.0.json",
		ReferenceNumber:       381,
		Name:                  "Creative Commons Attribution 3.0 Unported",
		LicenseID:             "CC-BY-3.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/3.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"oldap-2.4": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.4.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.4.json",
		ReferenceNumber:       382,
		Name:                  "Open LDAP Public License v2.4",
		LicenseID:             "OLDAP-2.4",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cd1284c4a91a8a380d904eee68d1583f989ed386",
		},
		IsOsiApproved: false,
	},
	"cmu-mach": {
		Reference:             "https://spdx.org/licenses/CMU-Mach.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CMU-Mach.json",
		ReferenceNumber:       383,
		Name:                  "CMU Mach License",
		LicenseID:             "CMU-Mach",
		SeeAlso: []string{
			"https://www.cs.cmu.edu/~410/licenses.html",
		},
		IsOsiApproved: false,
	},
	"liliq-p-1.1": {
		Reference:             "https://spdx.org/licenses/LiLiQ-P-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LiLiQ-P-1.1.json",
		ReferenceNumber:       384,
		Name:                  "Licence Libre du Québec – Permissive version 1.1",
		LicenseID:             "LiLiQ-P-1.1",
		SeeAlso: []string{
			"https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/",
			"http://opensource.org/licenses/LiLiQ-P-1.1",
		},
		IsOsiApproved: true,
	},
	"lgpl-2.0-only": {
		Reference:             "https://spdx.org/licenses/LGPL-2.0-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LGPL-2.0-only.json",
		ReferenceNumber:       385,
		Name:                  "GNU Library General Public License v2 only",
		LicenseID:             "LGPL-2.0-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html",
		},
		IsOsiApproved: true,
	},
	"apafml": {
		Reference:             "https://spdx.org/licenses/APAFML.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/APAFML.json",
		ReferenceNumber:       386,
		Name:                  "Adobe Postscript AFM License",
		LicenseID:             "APAFML",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM",
		},
		IsOsiApproved: false,
	},
	"entessa": {
		Reference:             "https://spdx.org/licenses/Entessa.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Entessa.json",
		ReferenceNumber:       387,
		Name:                  "Entessa Public License v1.0",
		LicenseID:             "Entessa",
		SeeAlso: []string{
			"https://opensource.org/licenses/Entessa",
		},
		IsOsiApproved: true,
	},
	"cnri-python": {
		Reference:             "https://spdx.org/licenses/CNRI-Python.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CNRI-Python.json",
		ReferenceNumber:       388,
		Name:                  "CNRI Python License",
		LicenseID:             "CNRI-Python",
		SeeAlso: []string{
			"https://opensource.org/licenses/CNRI-Python",
		},
		IsOsiApproved: true,
	},
	"ogc-1.0": {
		Reference:             "https://spdx.org/licenses/OGC-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OGC-1.0.json",
		ReferenceNumber:       389,
		Name:                  "OGC Software License, Version 1.0",
		LicenseID:             "OGC-1.0",
		SeeAlso: []string{
			"https://www.ogc.org/ogc/software/1.0",
		},
		IsOsiApproved: false,
	},
	"hpnd-uc": {
		Reference:             "https://spdx.org/licenses/HPND-UC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-UC.json",
		ReferenceNumber:       390,
		Name:                  "Historical Permission Notice and Disclaimer - University of California variant",
		LicenseID:             "HPND-UC",
		SeeAlso: []string{
			"https://core.tcl-lang.org/tk/file?name=compat/unistd.h",
		},
		IsOsiApproved: false,
	},
	"cc-by-3.0-igo": {
		Reference:             "https://spdx.org/licenses/CC-BY-3.0-IGO.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-3.0-IGO.json",
		ReferenceNumber:       391,
		Name:                  "Creative Commons Attribution 3.0 IGO",
		LicenseID:             "CC-BY-3.0-IGO",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/3.0/igo/legalcode",
		},
		IsOsiApproved: false,
	},
	"mtll": {
		Reference:             "https://spdx.org/licenses/MTLL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MTLL.json",
		ReferenceNumber:       392,
		Name:                  "Matrix Template Library License",
		LicenseID:             "MTLL",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License",
		},
		IsOsiApproved: false,
	},
	"hpnd-markus-kuhn": {
		Reference:             "https://spdx.org/licenses/HPND-Markus-Kuhn.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-Markus-Kuhn.json",
		ReferenceNumber:       393,
		Name:                  "Historical Permission Notice and Disclaimer - Markus Kuhn variant",
		LicenseID:             "HPND-Markus-Kuhn",
		SeeAlso: []string{
			"https://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c",
			"https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=readline/readline/support/wcwidth.c;h=0f5ec995796f4813abbcf4972aec0378ab74722a;hb=HEAD#l55",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-nd-3.0-igo": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-ND-3.0-IGO.json",
		ReferenceNumber:       394,
		Name:                  "Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO",
		LicenseID:             "CC-BY-NC-ND-3.0-IGO",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode",
		},
		IsOsiApproved: false,
	},
	"ms-rl": {
		Reference:             "https://spdx.org/licenses/MS-RL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MS-RL.json",
		ReferenceNumber:       395,
		Name:                  "Microsoft Reciprocal License",
		LicenseID:             "MS-RL",
		SeeAlso: []string{
			"http://www.microsoft.com/opensource/licenses.mspx",
			"https://opensource.org/licenses/MS-RL",
		},
		IsOsiApproved: true,
	},
	"amdplpa": {
		Reference:             "https://spdx.org/licenses/AMDPLPA.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AMDPLPA.json",
		ReferenceNumber:       396,
		Name:                  "AMD's plpa_map.c License",
		LicenseID:             "AMDPLPA",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License",
		},
		IsOsiApproved: false,
	},
	"lal-1.2": {
		Reference:             "https://spdx.org/licenses/LAL-1.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LAL-1.2.json",
		ReferenceNumber:       397,
		Name:                  "Licence Art Libre 1.2",
		LicenseID:             "LAL-1.2",
		SeeAlso: []string{
			"http://artlibre.org/licence/lal/licence-art-libre-12/",
		},
		IsOsiApproved: false,
	},
	"oldap-2.2.1": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.2.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.2.1.json",
		ReferenceNumber:       398,
		Name:                  "Open LDAP Public License v2.2.1",
		LicenseID:             "OLDAP-2.2.1",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=4bc786f34b50aa301be6f5600f58a980070f481e",
		},
		IsOsiApproved: false,
	},
	"curl": {
		Reference:             "https://spdx.org/licenses/curl.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/curl.json",
		ReferenceNumber:       399,
		Name:                  "curl License",
		LicenseID:             "curl",
		SeeAlso: []string{
			"https://github.com/bagder/curl/blob/master/COPYING",
		},
		IsOsiApproved: false,
	},
	"oldap-1.2": {
		Reference:             "https://spdx.org/licenses/OLDAP-1.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-1.2.json",
		ReferenceNumber:       400,
		Name:                  "Open LDAP Public License v1.2",
		LicenseID:             "OLDAP-1.2",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=42b0383c50c299977b5893ee695cf4e486fb0dc7",
		},
		IsOsiApproved: false,
	},
	"inner-net-2.0": {
		Reference:             "https://spdx.org/licenses/Inner-Net-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Inner-Net-2.0.json",
		ReferenceNumber:       401,
		Name:                  "Inner Net License v2.0",
		LicenseID:             "Inner-Net-2.0",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Inner_Net_License",
			"https://sourceware.org/git/?p=glibc.git;a=blob;f=LICENSES;h=530893b1dc9ea00755603c68fb36bd4fc38a7be8;hb=HEAD#l207",
		},
		IsOsiApproved: false,
	},
	"termreadkey": {
		Reference:             "https://spdx.org/licenses/TermReadKey.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TermReadKey.json",
		ReferenceNumber:       402,
		Name:                  "TermReadKey License",
		LicenseID:             "TermReadKey",
		SeeAlso: []string{
			"https://github.com/jonathanstowe/TermReadKey/blob/master/README#L9-L10",
		},
		IsOsiApproved: false,
	},
	"agpl-1.0": {
		Reference:             "https://spdx.org/licenses/AGPL-1.0.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/AGPL-1.0.json",
		ReferenceNumber:       403,
		Name:                  "Affero General Public License v1.0",
		LicenseID:             "AGPL-1.0",
		SeeAlso: []string{
			"http://www.affero.org/oagpl.html",
		},
		IsOsiApproved: false,
	},
	"artistic-1.0": {
		Reference:             "https://spdx.org/licenses/Artistic-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Artistic-1.0.json",
		ReferenceNumber:       404,
		Name:                  "Artistic License 1.0",
		LicenseID:             "Artistic-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/Artistic-1.0",
		},
		IsOsiApproved: true,
	},
	"cecill-1.1": {
		Reference:             "https://spdx.org/licenses/CECILL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CECILL-1.1.json",
		ReferenceNumber:       405,
		Name:                  "CeCILL Free Software License Agreement v1.1",
		LicenseID:             "CECILL-1.1",
		SeeAlso: []string{
			"http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html",
		},
		IsOsiApproved: false,
	},
	"ipl-1.0": {
		Reference:             "https://spdx.org/licenses/IPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/IPL-1.0.json",
		ReferenceNumber:       406,
		Name:                  "IBM Public License v1.0",
		LicenseID:             "IPL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/IPL-1.0",
		},
		IsOsiApproved: true,
	},
	"lpl-1.02": {
		Reference:             "https://spdx.org/licenses/LPL-1.02.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LPL-1.02.json",
		ReferenceNumber:       407,
		Name:                  "Lucent Public License v1.02",
		LicenseID:             "LPL-1.02",
		SeeAlso: []string{
			"http://plan9.bell-labs.com/plan9/license.html",
			"https://opensource.org/licenses/LPL-1.02",
		},
		IsOsiApproved: true,
	},
	"baekmuk": {
		Reference:             "https://spdx.org/licenses/Baekmuk.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Baekmuk.json",
		ReferenceNumber:       408,
		Name:                  "Baekmuk License",
		LicenseID:             "Baekmuk",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing:Baekmuk?rd=Licensing/Baekmuk",
		},
		IsOsiApproved: false,
	},
	"nlod-1.0": {
		Reference:             "https://spdx.org/licenses/NLOD-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NLOD-1.0.json",
		ReferenceNumber:       409,
		Name:                  "Norwegian Licence for Open Government Data (NLOD) 1.0",
		LicenseID:             "NLOD-1.0",
		SeeAlso: []string{
			"http://data.norge.no/nlod/en/1.0",
		},
		IsOsiApproved: false,
	},
	"sendmail-8.23": {
		Reference:             "https://spdx.org/licenses/Sendmail-8.23.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Sendmail-8.23.json",
		ReferenceNumber:       410,
		Name:                  "Sendmail License 8.23",
		LicenseID:             "Sendmail-8.23",
		SeeAlso: []string{
			"https://www.proofpoint.com/sites/default/files/sendmail-license.pdf",
			"https://web.archive.org/web/20181003101040/https://www.proofpoint.com/sites/default/files/sendmail-license.pdf",
		},
		IsOsiApproved: false,
	},
	"ngpl": {
		Reference:             "https://spdx.org/licenses/NGPL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NGPL.json",
		ReferenceNumber:       411,
		Name:                  "Nethack General Public License",
		LicenseID:             "NGPL",
		SeeAlso: []string{
			"https://opensource.org/licenses/NGPL",
		},
		IsOsiApproved: true,
	},
	"sspl-1.0": {
		Reference:             "https://spdx.org/licenses/SSPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SSPL-1.0.json",
		ReferenceNumber:       412,
		Name:                  "Server Side Public License, v 1",
		LicenseID:             "SSPL-1.0",
		SeeAlso: []string{
			"https://www.mongodb.com/licensing/server-side-public-license",
		},
		IsOsiApproved: false,
	},
	"ncsa": {
		Reference:             "https://spdx.org/licenses/NCSA.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NCSA.json",
		ReferenceNumber:       413,
		Name:                  "University of Illinois/NCSA Open Source License",
		LicenseID:             "NCSA",
		SeeAlso: []string{
			"http://otm.illinois.edu/uiuc_openSource",
			"https://opensource.org/licenses/NCSA",
		},
		IsOsiApproved: true,
	},
	"cc0-1.0": {
		Reference:             "https://spdx.org/licenses/CC0-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC0-1.0.json",
		ReferenceNumber:       414,
		Name:                  "Creative Commons Zero v1.0 Universal",
		LicenseID:             "CC0-1.0",
		SeeAlso: []string{
			"https://creativecommons.org/publicdomain/zero/1.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"cecill-c": {
		Reference:             "https://spdx.org/licenses/CECILL-C.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CECILL-C.json",
		ReferenceNumber:       415,
		Name:                  "CeCILL-C Free Software License Agreement",
		LicenseID:             "CECILL-C",
		SeeAlso: []string{
			"http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html",
		},
		IsOsiApproved: false,
	},
	"furuseth": {
		Reference:             "https://spdx.org/licenses/Furuseth.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Furuseth.json",
		ReferenceNumber:       416,
		Name:                  "Furuseth License",
		LicenseID:             "Furuseth",
		SeeAlso: []string{
			"https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT?ref_type=heads#L39-51",
		},
		IsOsiApproved: false,
	},
	"jasper-2.0": {
		Reference:             "https://spdx.org/licenses/JasPer-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/JasPer-2.0.json",
		ReferenceNumber:       417,
		Name:                  "JasPer License",
		LicenseID:             "JasPer-2.0",
		SeeAlso: []string{
			"http://www.ece.uvic.ca/~mdadams/jasper/LICENSE",
		},
		IsOsiApproved: false,
	},
	"lgpl-3.0-or-later": {
		Reference:             "https://spdx.org/licenses/LGPL-3.0-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LGPL-3.0-or-later.json",
		ReferenceNumber:       418,
		Name:                  "GNU Lesser General Public License v3.0 or later",
		LicenseID:             "LGPL-3.0-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
			"https://www.gnu.org/licenses/lgpl+gpl-3.0.txt",
			"https://opensource.org/licenses/LGPL-3.0",
		},
		IsOsiApproved: true,
	},
	"libpng": {
		Reference:             "https://spdx.org/licenses/Libpng.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Libpng.json",
		ReferenceNumber:       419,
		Name:                  "libpng License",
		LicenseID:             "Libpng",
		SeeAlso: []string{
			"http://www.libpng.org/pub/png/src/libpng-LICENSE.txt",
		},
		IsOsiApproved: false,
	},
	"linux-man-pages-copyleft-var": {
		Reference:             "https://spdx.org/licenses/Linux-man-pages-copyleft-var.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Linux-man-pages-copyleft-var.json",
		ReferenceNumber:       420,
		Name:                  "Linux man-pages Copyleft Variant",
		LicenseID:             "Linux-man-pages-copyleft-var",
		SeeAlso: []string{
			"https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/man2/set_mempolicy.2#n5",
		},
		IsOsiApproved: false,
	},
	"oldap-2.2.2": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.2.2.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.2.2.json",
		ReferenceNumber:       421,
		Name:                  "Open LDAP Public License 2.2.2",
		LicenseID:             "OLDAP-2.2.2",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=df2cc1e21eb7c160695f5b7cffd6296c151ba188",
		},
		IsOsiApproved: false,
	},
	"freebsd-doc": {
		Reference:             "https://spdx.org/licenses/FreeBSD-DOC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/FreeBSD-DOC.json",
		ReferenceNumber:       422,
		Name:                  "FreeBSD Documentation License",
		LicenseID:             "FreeBSD-DOC",
		SeeAlso: []string{
			"https://www.freebsd.org/copyright/freebsd-doc-license/",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-nd-3.0-de": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-ND-3.0-DE.json",
		ReferenceNumber:       423,
		Name:                  "Creative Commons Attribution Non Commercial No Derivatives 3.0 Germany",
		LicenseID:             "CC-BY-NC-ND-3.0-DE",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-nd/3.0/de/legalcode",
		},
		IsOsiApproved: false,
	},
	"nist-pd-fallback": {
		Reference:             "https://spdx.org/licenses/NIST-PD-fallback.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NIST-PD-fallback.json",
		ReferenceNumber:       424,
		Name:                  "NIST Public Domain Notice with license fallback",
		LicenseID:             "NIST-PD-fallback",
		SeeAlso: []string{
			"https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE",
			"https://github.com/usnistgov/fipy/blob/86aaa5c2ba2c6f1be19593c5986071cf6568cc34/LICENSE.rst",
		},
		IsOsiApproved: false,
	},
	"widget-workshop": {
		Reference:             "https://spdx.org/licenses/Widget-Workshop.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Widget-Workshop.json",
		ReferenceNumber:       425,
		Name:                  "Widget Workshop License",
		LicenseID:             "Widget-Workshop",
		SeeAlso: []string{
			"https://github.com/novnc/noVNC/blob/master/core/crypto/des.js#L24",
		},
		IsOsiApproved: false,
	},
	"rpl-1.1": {
		Reference:             "https://spdx.org/licenses/RPL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/RPL-1.1.json",
		ReferenceNumber:       426,
		Name:                  "Reciprocal Public License 1.1",
		LicenseID:             "RPL-1.1",
		SeeAlso: []string{
			"https://opensource.org/licenses/RPL-1.1",
		},
		IsOsiApproved: true,
	},
	"aswf-digital-assets-1.1": {
		Reference:             "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ASWF-Digital-Assets-1.1.json",
		ReferenceNumber:       427,
		Name:                  "ASWF Digital Assets License 1.1",
		LicenseID:             "ASWF-Digital-Assets-1.1",
		SeeAlso: []string{
			"https://github.com/AcademySoftwareFoundation/foundation/blob/main/digital_assets/aswf_digital_assets_license_v1.1.txt",
		},
		IsOsiApproved: false,
	},
	"net-snmp": {
		Reference:             "https://spdx.org/licenses/Net-SNMP.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Net-SNMP.json",
		ReferenceNumber:       428,
		Name:                  "Net-SNMP License",
		LicenseID:             "Net-SNMP",
		SeeAlso: []string{
			"http://net-snmp.sourceforge.net/about/license.html",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-sa-2.5": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-2.5.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-2.5.json",
		ReferenceNumber:       429,
		Name:                  "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic",
		LicenseID:             "CC-BY-NC-SA-2.5",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode",
		},
		IsOsiApproved: false,
	},
	"unicode-dfs-2015": {
		Reference:             "https://spdx.org/licenses/Unicode-DFS-2015.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Unicode-DFS-2015.json",
		ReferenceNumber:       430,
		Name:                  "Unicode License Agreement - Data Files and Software (2015)",
		LicenseID:             "Unicode-DFS-2015",
		SeeAlso: []string{
			"https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.2": {
		Reference:             "https://spdx.org/licenses/GFDL-1.2.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.2.json",
		ReferenceNumber:       431,
		Name:                  "GNU Free Documentation License v1.2",
		LicenseID:             "GFDL-1.2",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt",
		},
		IsOsiApproved: false,
	},
	"intel": {
		Reference:             "https://spdx.org/licenses/Intel.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Intel.json",
		ReferenceNumber:       432,
		Name:                  "Intel Open Source License",
		LicenseID:             "Intel",
		SeeAlso: []string{
			"https://opensource.org/licenses/Intel",
		},
		IsOsiApproved: true,
	},
	"sgp4": {
		Reference:             "https://spdx.org/licenses/SGP4.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SGP4.json",
		ReferenceNumber:       433,
		Name:                  "SGP4 Permission Notice",
		LicenseID:             "SGP4",
		SeeAlso: []string{
			"https://celestrak.org/publications/AIAA/2006-6753/faq.php",
		},
		IsOsiApproved: false,
	},
	"zimbra-1.3": {
		Reference:             "https://spdx.org/licenses/Zimbra-1.3.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Zimbra-1.3.json",
		ReferenceNumber:       434,
		Name:                  "Zimbra Public License v1.3",
		LicenseID:             "Zimbra-1.3",
		SeeAlso: []string{
			"http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html",
		},
		IsOsiApproved: false,
	},
	"ogtsl": {
		Reference:             "https://spdx.org/licenses/OGTSL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OGTSL.json",
		ReferenceNumber:       435,
		Name:                  "Open Group Test Suite License",
		LicenseID:             "OGTSL",
		SeeAlso: []string{
			"http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt",
			"https://opensource.org/licenses/OGTSL",
		},
		IsOsiApproved: true,
	},
	"pddl-1.0": {
		Reference:             "https://spdx.org/licenses/PDDL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/PDDL-1.0.json",
		ReferenceNumber:       436,
		Name:                  "Open Data Commons Public Domain Dedication & License 1.0",
		LicenseID:             "PDDL-1.0",
		SeeAlso: []string{
			"http://opendatacommons.org/licenses/pddl/1.0/",
			"https://opendatacommons.org/licenses/pddl/",
		},
		IsOsiApproved: false,
	},
	"unixcrypt": {
		Reference:             "https://spdx.org/licenses/UnixCrypt.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/UnixCrypt.json",
		ReferenceNumber:       437,
		Name:                  "UnixCrypt License",
		LicenseID:             "UnixCrypt",
		SeeAlso: []string{
			"https://foss.heptapod.net/python-libs/passlib/-/blob/branch/stable/LICENSE#L70",
			"https://opensource.apple.com/source/JBoss/JBoss-737/jboss-all/jetty/src/main/org/mortbay/util/UnixCrypt.java.auto.html",
			"https://archive.eclipse.org/jetty/8.0.1.v20110908/xref/org/eclipse/jetty/http/security/UnixCrypt.html",
		},
		IsOsiApproved: false,
	},
	"cern-ohl-w-2.0": {
		Reference:             "https://spdx.org/licenses/CERN-OHL-W-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CERN-OHL-W-2.0.json",
		ReferenceNumber:       438,
		Name:                  "CERN Open Hardware Licence Version 2 - Weakly Reciprocal",
		LicenseID:             "CERN-OHL-W-2.0",
		SeeAlso: []string{
			"https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2",
		},
		IsOsiApproved: true,
	},
	"gfdl-1.3-only": {
		Reference:             "https://spdx.org/licenses/GFDL-1.3-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.3-only.json",
		ReferenceNumber:       439,
		Name:                  "GNU Free Documentation License v1.3 only",
		LicenseID:             "GFDL-1.3-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/fdl-1.3.txt",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-2.5": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-2.5.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-2.5.json",
		ReferenceNumber:       440,
		Name:                  "Creative Commons Attribution Non Commercial 2.5 Generic",
		LicenseID:             "CC-BY-NC-2.5",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc/2.5/legalcode",
		},
		IsOsiApproved: false,
	},
	"erlpl-1.1": {
		Reference:             "https://spdx.org/licenses/ErlPL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ErlPL-1.1.json",
		ReferenceNumber:       441,
		Name:                  "Erlang Public License v1.1",
		LicenseID:             "ErlPL-1.1",
		SeeAlso: []string{
			"http://www.erlang.org/EPLICENSE",
		},
		IsOsiApproved: false,
	},
	"magaz": {
		Reference:             "https://spdx.org/licenses/magaz.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/magaz.json",
		ReferenceNumber:       442,
		Name:                  "magaz License",
		LicenseID:             "magaz",
		SeeAlso: []string{
			"https://mirrors.nic.cz/tex-archive/macros/latex/contrib/magaz/magaz.tex",
		},
		IsOsiApproved: false,
	},
	"borceux": {
		Reference:             "https://spdx.org/licenses/Borceux.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Borceux.json",
		ReferenceNumber:       443,
		Name:                  "Borceux license",
		LicenseID:             "Borceux",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Borceux",
		},
		IsOsiApproved: false,
	},
	"app-s2p": {
		Reference:             "https://spdx.org/licenses/App-s2p.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/App-s2p.json",
		ReferenceNumber:       444,
		Name:                  "App::s2p License",
		LicenseID:             "App-s2p",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/App-s2p",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-nd-4.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-ND-4.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-ND-4.0.json",
		ReferenceNumber:       445,
		Name:                  "Creative Commons Attribution Non Commercial No Derivatives 4.0 International",
		LicenseID:             "CC-BY-NC-ND-4.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"agpl-3.0": {
		Reference:             "https://spdx.org/licenses/AGPL-3.0.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/AGPL-3.0.json",
		ReferenceNumber:       446,
		Name:                  "GNU Affero General Public License v3.0",
		LicenseID:             "AGPL-3.0",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/agpl.txt",
			"https://opensource.org/licenses/AGPL-3.0",
		},
		IsOsiApproved: true,
	},
	"cecill-2.1": {
		Reference:             "https://spdx.org/licenses/CECILL-2.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CECILL-2.1.json",
		ReferenceNumber:       447,
		Name:                  "CeCILL Free Software License Agreement v2.1",
		LicenseID:             "CECILL-2.1",
		SeeAlso: []string{
			"http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html",
		},
		IsOsiApproved: true,
	},
	"ogl-uk-2.0": {
		Reference:             "https://spdx.org/licenses/OGL-UK-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OGL-UK-2.0.json",
		ReferenceNumber:       448,
		Name:                  "Open Government Licence v2.0",
		LicenseID:             "OGL-UK-2.0",
		SeeAlso: []string{
			"http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/",
		},
		IsOsiApproved: false,
	},
	"bsd-protection": {
		Reference:             "https://spdx.org/licenses/BSD-Protection.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-Protection.json",
		ReferenceNumber:       449,
		Name:                  "BSD Protection License",
		LicenseID:             "BSD-Protection",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/BSD_Protection_License",
		},
		IsOsiApproved: false,
	},
	"cecill-b": {
		Reference:             "https://spdx.org/licenses/CECILL-B.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CECILL-B.json",
		ReferenceNumber:       450,
		Name:                  "CeCILL-B Free Software License Agreement",
		LicenseID:             "CECILL-B",
		SeeAlso: []string{
			"http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html",
		},
		IsOsiApproved: false,
	},
	"bsd-systemics": {
		Reference:             "https://spdx.org/licenses/BSD-Systemics.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-Systemics.json",
		ReferenceNumber:       451,
		Name:                  "Systemics BSD variant license",
		LicenseID:             "BSD-Systemics",
		SeeAlso: []string{
			"https://metacpan.org/release/DPARIS/Crypt-DES-2.07/source/COPYRIGHT",
		},
		IsOsiApproved: false,
	},
	"gpl-2.0-with-classpath-exception": {
		Reference:             "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-2.0-with-classpath-exception.json",
		ReferenceNumber:       452,
		Name:                  "GNU General Public License v2.0 w/Classpath exception",
		LicenseID:             "GPL-2.0-with-classpath-exception",
		SeeAlso: []string{
			"https://www.gnu.org/software/classpath/license.html",
		},
		IsOsiApproved: false,
	},
	"osl-1.0": {
		Reference:             "https://spdx.org/licenses/OSL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OSL-1.0.json",
		ReferenceNumber:       453,
		Name:                  "Open Software License 1.0",
		LicenseID:             "OSL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/OSL-1.0",
		},
		IsOsiApproved: true,
	},
	"epics": {
		Reference:             "https://spdx.org/licenses/EPICS.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/EPICS.json",
		ReferenceNumber:       454,
		Name:                  "EPICS Open License",
		LicenseID:             "EPICS",
		SeeAlso: []string{
			"https://epics.anl.gov/license/open.php",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.3-no-invariants-only": {
		Reference:             "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.3-no-invariants-only.json",
		ReferenceNumber:       455,
		Name:                  "GNU Free Documentation License v1.3 only - no invariants",
		LicenseID:             "GFDL-1.3-no-invariants-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/fdl-1.3.txt",
		},
		IsOsiApproved: false,
	},
	"rpsl-1.0": {
		Reference:             "https://spdx.org/licenses/RPSL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/RPSL-1.0.json",
		ReferenceNumber:       456,
		Name:                  "RealNetworks Public Source License v1.0",
		LicenseID:             "RPSL-1.0",
		SeeAlso: []string{
			"https://helixcommunity.org/content/rpsl",
			"https://opensource.org/licenses/RPSL-1.0",
		},
		IsOsiApproved: true,
	},
	"cpl-1.0": {
		Reference:             "https://spdx.org/licenses/CPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CPL-1.0.json",
		ReferenceNumber:       457,
		Name:                  "Common Public License 1.0",
		LicenseID:             "CPL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/CPL-1.0",
		},
		IsOsiApproved: true,
	},
	"efl-2.0": {
		Reference:             "https://spdx.org/licenses/EFL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/EFL-2.0.json",
		ReferenceNumber:       458,
		Name:                  "Eiffel Forum License v2.0",
		LicenseID:             "EFL-2.0",
		SeeAlso: []string{
			"http://www.eiffel-nice.org/license/eiffel-forum-license-2.html",
			"https://opensource.org/licenses/EFL-2.0",
		},
		IsOsiApproved: true,
	},
	"npl-1.1": {
		Reference:             "https://spdx.org/licenses/NPL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NPL-1.1.json",
		ReferenceNumber:       459,
		Name:                  "Netscape Public License v1.1",
		LicenseID:             "NPL-1.1",
		SeeAlso: []string{
			"http://www.mozilla.org/MPL/NPL/1.1/",
		},
		IsOsiApproved: false,
	},
	"cube": {
		Reference:             "https://spdx.org/licenses/Cube.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Cube.json",
		ReferenceNumber:       460,
		Name:                  "Cube License",
		LicenseID:             "Cube",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Cube",
		},
		IsOsiApproved: false,
	},
	"hpnd-sell-regexpr": {
		Reference:             "https://spdx.org/licenses/HPND-sell-regexpr.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-sell-regexpr.json",
		ReferenceNumber:       461,
		Name:                  "Historical Permission Notice and Disclaimer - sell regexpr variant",
		LicenseID:             "HPND-sell-regexpr",
		SeeAlso: []string{
			"https://gitlab.com/bacula-org/bacula/-/blob/Branch-11.0/bacula/LICENSE-FOSS?ref_type=heads#L245",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-sa-3.0-de": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-3.0-DE.json",
		ReferenceNumber:       462,
		Name:                  "Creative Commons Attribution Non Commercial Share Alike 3.0 Germany",
		LicenseID:             "CC-BY-NC-SA-3.0-DE",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode",
		},
		IsOsiApproved: false,
	},
	"ampas": {
		Reference:             "https://spdx.org/licenses/AMPAS.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AMPAS.json",
		ReferenceNumber:       463,
		Name:                  "Academy of Motion Picture Arts and Sciences BSD",
		LicenseID:             "AMPAS",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD",
		},
		IsOsiApproved: false,
	},
	"nlod-2.0": {
		Reference:             "https://spdx.org/licenses/NLOD-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NLOD-2.0.json",
		ReferenceNumber:       464,
		Name:                  "Norwegian Licence for Open Government Data (NLOD) 2.0",
		LicenseID:             "NLOD-2.0",
		SeeAlso: []string{
			"http://data.norge.no/nlod/en/2.0",
		},
		IsOsiApproved: false,
	},
	"ttwl": {
		Reference:             "https://spdx.org/licenses/TTWL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TTWL.json",
		ReferenceNumber:       465,
		Name:                  "Text-Tabs+Wrap License",
		LicenseID:             "TTWL",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/TTWL",
			"https://github.com/ap/Text-Tabs/blob/master/lib.modern/Text/Tabs.pm#L148",
		},
		IsOsiApproved: false,
	},
	"swl": {
		Reference:             "https://spdx.org/licenses/SWL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SWL.json",
		ReferenceNumber:       466,
		Name:                  "Scheme Widget Library (SWL) Software License Agreement",
		LicenseID:             "SWL",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/SWL",
		},
		IsOsiApproved: false,
	},
	"mit-modern-variant": {
		Reference:             "https://spdx.org/licenses/MIT-Modern-Variant.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-Modern-Variant.json",
		ReferenceNumber:       467,
		Name:                  "MIT License Modern Variant",
		LicenseID:             "MIT-Modern-Variant",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing:MIT#Modern_Variants",
			"https://ptolemy.berkeley.edu/copyright.htm",
			"https://pirlwww.lpl.arizona.edu/resources/guide/software/PerlTk/Tixlic.html",
		},
		IsOsiApproved: true,
	},
	"fsfullrwd": {
		Reference:             "https://spdx.org/licenses/FSFULLRWD.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/FSFULLRWD.json",
		ReferenceNumber:       468,
		Name:                  "FSF Unlimited License (With License Retention and Warranty Disclaimer)",
		LicenseID:             "FSFULLRWD",
		SeeAlso: []string{
			"https://lists.gnu.org/archive/html/autoconf/2012-04/msg00061.html",
		},
		IsOsiApproved: false,
	},
	"ncgl-uk-2.0": {
		Reference:             "https://spdx.org/licenses/NCGL-UK-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NCGL-UK-2.0.json",
		ReferenceNumber:       469,
		Name:                  "Non-Commercial Government Licence",
		LicenseID:             "NCGL-UK-2.0",
		SeeAlso: []string{
			"http://www.nationalarchives.gov.uk/doc/non-commercial-government-licence/version/2/",
		},
		IsOsiApproved: false,
	},
	"ntp-0": {
		Reference:             "https://spdx.org/licenses/NTP-0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NTP-0.json",
		ReferenceNumber:       470,
		Name:                  "NTP No Attribution",
		LicenseID:             "NTP-0",
		SeeAlso: []string{
			"https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c",
		},
		IsOsiApproved: false,
	},
	"sgi-b-1.0": {
		Reference:             "https://spdx.org/licenses/SGI-B-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SGI-B-1.0.json",
		ReferenceNumber:       471,
		Name:                  "SGI Free Software License B v1.0",
		LicenseID:             "SGI-B-1.0",
		SeeAlso: []string{
			"http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html",
		},
		IsOsiApproved: false,
	},
	"bsd-3-clause-hp": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-HP.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-HP.json",
		ReferenceNumber:       472,
		Name:                  "Hewlett-Packard BSD variant license",
		LicenseID:             "BSD-3-Clause-HP",
		SeeAlso: []string{
			"https://github.com/zdohnal/hplip/blob/master/COPYING#L939",
		},
		IsOsiApproved: false,
	},
	"cnri-python-gpl-compatible": {
		Reference:             "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CNRI-Python-GPL-Compatible.json",
		ReferenceNumber:       473,
		Name:                  "CNRI Python Open Source GPL Compatible License Agreement",
		LicenseID:             "CNRI-Python-GPL-Compatible",
		SeeAlso: []string{
			"http://www.python.org/download/releases/1.6.1/download_win/",
		},
		IsOsiApproved: false,
	},
	"cdla-permissive-1.0": {
		Reference:             "https://spdx.org/licenses/CDLA-Permissive-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CDLA-Permissive-1.0.json",
		ReferenceNumber:       474,
		Name:                  "Community Data License Agreement Permissive 1.0",
		LicenseID:             "CDLA-Permissive-1.0",
		SeeAlso: []string{
			"https://cdla.io/permissive-1-0",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-sa-3.0-igo": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-SA-3.0-IGO.json",
		ReferenceNumber:       475,
		Name:                  "Creative Commons Attribution Non Commercial Share Alike 3.0 IGO",
		LicenseID:             "CC-BY-NC-SA-3.0-IGO",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-sa/3.0/igo/legalcode",
		},
		IsOsiApproved: false,
	},
	"gpl-2.0-with-gcc-exception": {
		Reference:             "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-2.0-with-GCC-exception.json",
		ReferenceNumber:       476,
		Name:                  "GNU General Public License v2.0 w/GCC Runtime Library exception",
		LicenseID:             "GPL-2.0-with-GCC-exception",
		SeeAlso: []string{
			"https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/libgcc1.c;h=762f5143fc6eed57b6797c82710f3538aa52b40b;hb=cb143a3ce4fb417c68f5fa2691a1b1b1053dfba9#l10",
		},
		IsOsiApproved: false,
	},
	"opl-1.0": {
		Reference:             "https://spdx.org/licenses/OPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OPL-1.0.json",
		ReferenceNumber:       477,
		Name:                  "Open Public License v1.0",
		LicenseID:             "OPL-1.0",
		SeeAlso: []string{
			"http://old.koalateam.com/jackaroo/OPL_1_0.TXT",
			"https://fedoraproject.org/wiki/Licensing/Open_Public_License",
		},
		IsOsiApproved: false,
	},
	"frameworx-1.0": {
		Reference:             "https://spdx.org/licenses/Frameworx-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Frameworx-1.0.json",
		ReferenceNumber:       478,
		Name:                  "Frameworx Open License 1.0",
		LicenseID:             "Frameworx-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/Frameworx-1.0",
		},
		IsOsiApproved: true,
	},
	"zed": {
		Reference:             "https://spdx.org/licenses/Zed.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Zed.json",
		ReferenceNumber:       479,
		Name:                  "Zed License",
		LicenseID:             "Zed",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Zed",
		},
		IsOsiApproved: false,
	},
	"rhecos-1.1": {
		Reference:             "https://spdx.org/licenses/RHeCos-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/RHeCos-1.1.json",
		ReferenceNumber:       480,
		Name:                  "Red Hat eCos Public License v1.1",
		LicenseID:             "RHeCos-1.1",
		SeeAlso: []string{
			"http://ecos.sourceware.org/old-license.html",
		},
		IsOsiApproved: false,
	},
	"boehm-gc": {
		Reference:             "https://spdx.org/licenses/Boehm-GC.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Boehm-GC.json",
		ReferenceNumber:       481,
		Name:                  "Boehm-Demers-Weiser GC License",
		LicenseID:             "Boehm-GC",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)",
			"https://github.com/uim/libgcroots/blob/master/COPYING",
			"https://github.com/ivmai/libatomic_ops/blob/master/LICENSE",
		},
		IsOsiApproved: false,
	},
	"martin-birgmeier": {
		Reference:             "https://spdx.org/licenses/Martin-Birgmeier.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Martin-Birgmeier.json",
		ReferenceNumber:       482,
		Name:                  "Martin Birgmeier License",
		LicenseID:             "Martin-Birgmeier",
		SeeAlso: []string{
			"https://github.com/Perl/perl5/blob/blead/util.c#L6136",
		},
		IsOsiApproved: false,
	},
	"cc-by-sa-3.0-at": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-3.0-AT.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-3.0-AT.json",
		ReferenceNumber:       483,
		Name:                  "Creative Commons Attribution Share Alike 3.0 Austria",
		LicenseID:             "CC-BY-SA-3.0-AT",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/3.0/at/legalcode",
		},
		IsOsiApproved: false,
	},
	"lgpl-2.1-or-later": {
		Reference:             "https://spdx.org/licenses/LGPL-2.1-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LGPL-2.1-or-later.json",
		ReferenceNumber:       484,
		Name:                  "GNU Lesser General Public License v2.1 or later",
		LicenseID:             "LGPL-2.1-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html",
			"https://opensource.org/licenses/LGPL-2.1",
		},
		IsOsiApproved: true,
	},
	"w3c-20150513": {
		Reference:             "https://spdx.org/licenses/W3C-20150513.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/W3C-20150513.json",
		ReferenceNumber:       485,
		Name:                  "W3C Software Notice and Document License (2015-05-13)",
		LicenseID:             "W3C-20150513",
		SeeAlso: []string{
			"https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document",
		},
		IsOsiApproved: false,
	},
	"kastrup": {
		Reference:             "https://spdx.org/licenses/Kastrup.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Kastrup.json",
		ReferenceNumber:       486,
		Name:                  "Kastrup License",
		LicenseID:             "Kastrup",
		SeeAlso: []string{
			"https://ctan.math.utah.edu/ctan/tex-archive/macros/generic/kastrup/binhex.dtx",
		},
		IsOsiApproved: false,
	},
	"mpl-2.0": {
		Reference:             "https://spdx.org/licenses/MPL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MPL-2.0.json",
		ReferenceNumber:       487,
		Name:                  "Mozilla Public License 2.0",
		LicenseID:             "MPL-2.0",
		SeeAlso: []string{
			"https://www.mozilla.org/MPL/2.0/",
			"https://opensource.org/licenses/MPL-2.0",
		},
		IsOsiApproved: true,
	},
	"cpol-1.02": {
		Reference:             "https://spdx.org/licenses/CPOL-1.02.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CPOL-1.02.json",
		ReferenceNumber:       488,
		Name:                  "Code Project Open License 1.02",
		LicenseID:             "CPOL-1.02",
		SeeAlso: []string{
			"http://www.codeproject.com/info/cpol10.aspx",
		},
		IsOsiApproved: false,
	},
	"vim": {
		Reference:             "https://spdx.org/licenses/Vim.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Vim.json",
		ReferenceNumber:       489,
		Name:                  "Vim License",
		LicenseID:             "Vim",
		SeeAlso: []string{
			"http://vimdoc.sourceforge.net/htmldoc/uganda.html",
		},
		IsOsiApproved: false,
	},
	"zlib-acknowledgement": {
		Reference:             "https://spdx.org/licenses/zlib-acknowledgement.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/zlib-acknowledgement.json",
		ReferenceNumber:       490,
		Name:                  "zlib/libpng License with Acknowledgement",
		LicenseID:             "zlib-acknowledgement",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement",
		},
		IsOsiApproved: false,
	},
	"gpl-3.0-with-gcc-exception": {
		Reference:             "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GPL-3.0-with-GCC-exception.json",
		ReferenceNumber:       491,
		Name:                  "GNU General Public License v3.0 w/GCC Runtime Library exception",
		LicenseID:             "GPL-3.0-with-GCC-exception",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/gcc-exception-3.1.html",
		},
		IsOsiApproved: true,
	},
	"mit-open-group": {
		Reference:             "https://spdx.org/licenses/MIT-open-group.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-open-group.json",
		ReferenceNumber:       492,
		Name:                  "MIT Open Group variant",
		LicenseID:             "MIT-open-group",
		SeeAlso: []string{
			"https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING",
			"https://gitlab.freedesktop.org/xorg/app/xvinfo/-/blob/master/COPYING",
			"https://gitlab.freedesktop.org/xorg/app/xsetroot/-/blob/master/COPYING",
			"https://gitlab.freedesktop.org/xorg/app/xauth/-/blob/master/COPYING",
		},
		IsOsiApproved: false,
	},
	"imatix": {
		Reference:             "https://spdx.org/licenses/iMatix.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/iMatix.json",
		ReferenceNumber:       493,
		Name:                  "iMatix Standard Function Library Agreement",
		LicenseID:             "iMatix",
		SeeAlso: []string{
			"http://legacy.imatix.com/html/sfl/sfl4.htm#license",
		},
		IsOsiApproved: false,
	},
	"mit-festival": {
		Reference:             "https://spdx.org/licenses/MIT-Festival.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MIT-Festival.json",
		ReferenceNumber:       494,
		Name:                  "MIT Festival Variant",
		LicenseID:             "MIT-Festival",
		SeeAlso: []string{
			"https://github.com/festvox/flite/blob/master/COPYING",
			"https://github.com/festvox/speech_tools/blob/master/COPYING",
		},
		IsOsiApproved: false,
	},
	"urt-rle": {
		Reference:             "https://spdx.org/licenses/URT-RLE.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/URT-RLE.json",
		ReferenceNumber:       495,
		Name:                  "Utah Raster Toolkit Run Length Encoded License",
		LicenseID:             "URT-RLE",
		SeeAlso: []string{
			"https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/pnmtorle.c",
			"https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/converter/other/rletopnm.c",
		},
		IsOsiApproved: false,
	},
	"c-uda-1.0": {
		Reference:             "https://spdx.org/licenses/C-UDA-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/C-UDA-1.0.json",
		ReferenceNumber:       496,
		Name:                  "Computational Use of Data Agreement v1.0",
		LicenseID:             "C-UDA-1.0",
		SeeAlso: []string{
			"https://github.com/microsoft/Computational-Use-of-Data-Agreement/blob/master/C-UDA-1.0.md",
			"https://cdla.dev/computational-use-of-data-agreement-v1-0/",
		},
		IsOsiApproved: false,
	},
	"zpl-1.1": {
		Reference:             "https://spdx.org/licenses/ZPL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ZPL-1.1.json",
		ReferenceNumber:       497,
		Name:                  "Zope Public License 1.1",
		LicenseID:             "ZPL-1.1",
		SeeAlso: []string{
			"http://old.zope.org/Resources/License/ZPL-1.1",
		},
		IsOsiApproved: false,
	},
	"crystalstacker": {
		Reference:             "https://spdx.org/licenses/CrystalStacker.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CrystalStacker.json",
		ReferenceNumber:       498,
		Name:                  "CrystalStacker License",
		LicenseID:             "CrystalStacker",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd=Licensing/CrystalStacker",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-nd-2.5": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-ND-2.5.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-ND-2.5.json",
		ReferenceNumber:       499,
		Name:                  "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic",
		LicenseID:             "CC-BY-NC-ND-2.5",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode",
		},
		IsOsiApproved: false,
	},
	"cc-by-nc-1.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-NC-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-NC-1.0.json",
		ReferenceNumber:       500,
		Name:                  "Creative Commons Attribution Non Commercial 1.0 Generic",
		LicenseID:             "CC-BY-NC-1.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nc/1.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.2-invariants-only": {
		Reference:             "https://spdx.org/licenses/GFDL-1.2-invariants-only.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.2-invariants-only.json",
		ReferenceNumber:       501,
		Name:                  "GNU Free Documentation License v1.2 only - invariants",
		LicenseID:             "GFDL-1.2-invariants-only",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt",
		},
		IsOsiApproved: false,
	},
	"hpnd-sell-variant-mit-disclaimer": {
		Reference:             "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-sell-variant-MIT-disclaimer.json",
		ReferenceNumber:       502,
		Name:                  "HPND sell variant with MIT disclaimer",
		LicenseID:             "HPND-sell-variant-MIT-disclaimer",
		SeeAlso: []string{
			"https://github.com/sigmavirus24/x11-ssh-askpass/blob/master/README",
		},
		IsOsiApproved: false,
	},
	"ms-pl": {
		Reference:             "https://spdx.org/licenses/MS-PL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/MS-PL.json",
		ReferenceNumber:       503,
		Name:                  "Microsoft Public License",
		LicenseID:             "MS-PL",
		SeeAlso: []string{
			"http://www.microsoft.com/opensource/licenses.mspx",
			"https://opensource.org/licenses/MS-PL",
		},
		IsOsiApproved: true,
	},
	"hpnd-pbmplus": {
		Reference:             "https://spdx.org/licenses/HPND-Pbmplus.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-Pbmplus.json",
		ReferenceNumber:       504,
		Name:                  "Historical Permission Notice and Disclaimer - Pbmplus variant",
		LicenseID:             "HPND-Pbmplus",
		SeeAlso: []string{
			"https://sourceforge.net/p/netpbm/code/HEAD/tree/super_stable/netpbm.c#l8",
		},
		IsOsiApproved: false,
	},
	"ofl-1.1": {
		Reference:             "https://spdx.org/licenses/OFL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OFL-1.1.json",
		ReferenceNumber:       505,
		Name:                  "SIL Open Font License 1.1",
		LicenseID:             "OFL-1.1",
		SeeAlso: []string{
			"http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web",
			"https://opensource.org/licenses/OFL-1.1",
		},
		IsOsiApproved: true,
	},
	"leptonica": {
		Reference:             "https://spdx.org/licenses/Leptonica.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Leptonica.json",
		ReferenceNumber:       506,
		Name:                  "Leptonica License",
		LicenseID:             "Leptonica",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Leptonica",
		},
		IsOsiApproved: false,
	},
	"sunpro": {
		Reference:             "https://spdx.org/licenses/SunPro.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SunPro.json",
		ReferenceNumber:       507,
		Name:                  "SunPro License",
		LicenseID:             "SunPro",
		SeeAlso: []string{
			"https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_acosh.c",
			"https://github.com/freebsd/freebsd-src/blob/main/lib/msun/src/e_lgammal.c",
		},
		IsOsiApproved: false,
	},
	"wtfpl": {
		Reference:             "https://spdx.org/licenses/WTFPL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/WTFPL.json",
		ReferenceNumber:       508,
		Name:                  "Do What The F*ck You Want To Public License",
		LicenseID:             "WTFPL",
		SeeAlso: []string{
			"http://www.wtfpl.net/about/",
			"http://sam.zoy.org/wtfpl/COPYING",
		},
		IsOsiApproved: false,
	},
	"cddl-1.0": {
		Reference:             "https://spdx.org/licenses/CDDL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CDDL-1.0.json",
		ReferenceNumber:       509,
		Name:                  "Common Development and Distribution License 1.0",
		LicenseID:             "CDDL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/cddl1",
		},
		IsOsiApproved: true,
	},
	"offis": {
		Reference:             "https://spdx.org/licenses/OFFIS.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OFFIS.json",
		ReferenceNumber:       510,
		Name:                  "OFFIS License",
		LicenseID:             "OFFIS",
		SeeAlso: []string{
			"https://sourceforge.net/p/xmedcon/code/ci/master/tree/libs/dicom/README",
		},
		IsOsiApproved: false,
	},
	"latex2e": {
		Reference:             "https://spdx.org/licenses/Latex2e.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Latex2e.json",
		ReferenceNumber:       511,
		Name:                  "Latex2e License",
		LicenseID:             "Latex2e",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Latex2e",
		},
		IsOsiApproved: false,
	},
	"gfdl-1.3-no-invariants-or-later": {
		Reference:             "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later.json",
		ReferenceNumber:       512,
		Name:                  "GNU Free Documentation License v1.3 or later - no invariants",
		LicenseID:             "GFDL-1.3-no-invariants-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/fdl-1.3.txt",
		},
		IsOsiApproved: false,
	},
	"xpp": {
		Reference:             "https://spdx.org/licenses/xpp.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/xpp.json",
		ReferenceNumber:       513,
		Name:                  "XPP License",
		LicenseID:             "xpp",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/xpp",
		},
		IsOsiApproved: false,
	},
	"lppl-1.3c": {
		Reference:             "https://spdx.org/licenses/LPPL-1.3c.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LPPL-1.3c.json",
		ReferenceNumber:       514,
		Name:                  "LaTeX Project Public License v1.3c",
		LicenseID:             "LPPL-1.3c",
		SeeAlso: []string{
			"http://www.latex-project.org/lppl/lppl-1-3c.txt",
			"https://opensource.org/licenses/LPPL-1.3c",
		},
		IsOsiApproved: true,
	},
	"xlock": {
		Reference:             "https://spdx.org/licenses/xlock.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/xlock.json",
		ReferenceNumber:       515,
		Name:                  "xlock License",
		LicenseID:             "xlock",
		SeeAlso: []string{
			"https://fossies.org/linux/tiff/contrib/ras/ras2tif.c",
		},
		IsOsiApproved: false,
	},
	"dl-de-by-2.0": {
		Reference:             "https://spdx.org/licenses/DL-DE-BY-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/DL-DE-BY-2.0.json",
		ReferenceNumber:       516,
		Name:                  "Data licence Germany – attribution – version 2.0",
		LicenseID:             "DL-DE-BY-2.0",
		SeeAlso: []string{
			"https://www.govdata.de/dl-de/by-2-0",
		},
		IsOsiApproved: false,
	},
	"vostrom": {
		Reference:             "https://spdx.org/licenses/VOSTROM.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/VOSTROM.json",
		ReferenceNumber:       517,
		Name:                  "VOSTROM Public License for Open Source",
		LicenseID:             "VOSTROM",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/VOSTROM",
		},
		IsOsiApproved: false,
	},
	"apsl-1.1": {
		Reference:             "https://spdx.org/licenses/APSL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/APSL-1.1.json",
		ReferenceNumber:       518,
		Name:                  "Apple Public Source License 1.1",
		LicenseID:             "APSL-1.1",
		SeeAlso: []string{
			"http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE",
		},
		IsOsiApproved: true,
	},
	"ecl-2.0": {
		Reference:             "https://spdx.org/licenses/ECL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ECL-2.0.json",
		ReferenceNumber:       519,
		Name:                  "Educational Community License v2.0",
		LicenseID:             "ECL-2.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/ECL-2.0",
		},
		IsOsiApproved: true,
	},
	"bzip2-1.0.6": {
		Reference:             "https://spdx.org/licenses/bzip2-1.0.6.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/bzip2-1.0.6.json",
		ReferenceNumber:       520,
		Name:                  "bzip2 and libbzip2 License v1.0.6",
		LicenseID:             "bzip2-1.0.6",
		SeeAlso: []string{
			"https://sourceware.org/git/?p=bzip2.git;a=blob;f=LICENSE;hb=bzip2-1.0.6",
			"http://bzip.org/1.0.5/bzip2-manual-1.0.5.html",
		},
		IsOsiApproved: false,
	},
	"xdebug-1.03": {
		Reference:             "https://spdx.org/licenses/Xdebug-1.03.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Xdebug-1.03.json",
		ReferenceNumber:       521,
		Name:                  "Xdebug License v 1.03",
		LicenseID:             "Xdebug-1.03",
		SeeAlso: []string{
			"https://github.com/xdebug/xdebug/blob/master/LICENSE",
		},
		IsOsiApproved: false,
	},
	"php-3.0": {
		Reference:             "https://spdx.org/licenses/PHP-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/PHP-3.0.json",
		ReferenceNumber:       522,
		Name:                  "PHP License v3.0",
		LicenseID:             "PHP-3.0",
		SeeAlso: []string{
			"http://www.php.net/license/3_0.txt",
			"https://opensource.org/licenses/PHP-3.0",
		},
		IsOsiApproved: true,
	},
	"tcl": {
		Reference:             "https://spdx.org/licenses/TCL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TCL.json",
		ReferenceNumber:       523,
		Name:                  "TCL/TK License",
		LicenseID:             "TCL",
		SeeAlso: []string{
			"http://www.tcl.tk/software/tcltk/license.html",
			"https://fedoraproject.org/wiki/Licensing/TCL",
		},
		IsOsiApproved: false,
	},
	"sgi-b-1.1": {
		Reference:             "https://spdx.org/licenses/SGI-B-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SGI-B-1.1.json",
		ReferenceNumber:       524,
		Name:                  "SGI Free Software License B v1.1",
		LicenseID:             "SGI-B-1.1",
		SeeAlso: []string{
			"http://oss.sgi.com/projects/FreeB/",
		},
		IsOsiApproved: false,
	},
	"python-2.0": {
		Reference:             "https://spdx.org/licenses/Python-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Python-2.0.json",
		ReferenceNumber:       525,
		Name:                  "Python License 2.0",
		LicenseID:             "Python-2.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/Python-2.0",
		},
		IsOsiApproved: true,
	},
	"apsl-2.0": {
		Reference:             "https://spdx.org/licenses/APSL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/APSL-2.0.json",
		ReferenceNumber:       526,
		Name:                  "Apple Public Source License 2.0",
		LicenseID:             "APSL-2.0",
		SeeAlso: []string{
			"http://www.opensource.apple.com/license/apsl/",
		},
		IsOsiApproved: true,
	},
	"wsuipa": {
		Reference:             "https://spdx.org/licenses/Wsuipa.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Wsuipa.json",
		ReferenceNumber:       527,
		Name:                  "Wsuipa License",
		LicenseID:             "Wsuipa",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Wsuipa",
		},
		IsOsiApproved: false,
	},
	"apache-1.0": {
		Reference:             "https://spdx.org/licenses/Apache-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Apache-1.0.json",
		ReferenceNumber:       528,
		Name:                  "Apache License 1.0",
		LicenseID:             "Apache-1.0",
		SeeAlso: []string{
			"http://www.apache.org/licenses/LICENSE-1.0",
		},
		IsOsiApproved: false,
	},
	"bsl-1.0": {
		Reference:             "https://spdx.org/licenses/BSL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSL-1.0.json",
		ReferenceNumber:       529,
		Name:                  "Boost Software License 1.0",
		LicenseID:             "BSL-1.0",
		SeeAlso: []string{
			"http://www.boost.org/LICENSE_1_0.txt",
			"https://opensource.org/licenses/BSL-1.0",
		},
		IsOsiApproved: true,
	},
	"antlr-pd": {
		Reference:             "https://spdx.org/licenses/ANTLR-PD.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ANTLR-PD.json",
		ReferenceNumber:       530,
		Name:                  "ANTLR Software Rights Notice",
		LicenseID:             "ANTLR-PD",
		SeeAlso: []string{
			"http://www.antlr2.org/license.html",
		},
		IsOsiApproved: false,
	},
	"lal-1.3": {
		Reference:             "https://spdx.org/licenses/LAL-1.3.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LAL-1.3.json",
		ReferenceNumber:       531,
		Name:                  "Licence Art Libre 1.3",
		LicenseID:             "LAL-1.3",
		SeeAlso: []string{
			"https://artlibre.org/",
		},
		IsOsiApproved: false,
	},
	"hpnd-export-us-modify": {
		Reference:             "https://spdx.org/licenses/HPND-export-US-modify.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-export-US-modify.json",
		ReferenceNumber:       532,
		Name:                  "HPND with US Government export control warning and modification rqmt",
		LicenseID:             "HPND-export-US-modify",
		SeeAlso: []string{
			"https://github.com/krb5/krb5/blob/krb5-1.21.2-final/NOTICE#L1157-L1182",
			"https://github.com/pythongssapi/k5test/blob/v0.10.3/K5TEST-LICENSE.txt",
		},
		IsOsiApproved: false,
	},
	"arphic-1999": {
		Reference:             "https://spdx.org/licenses/Arphic-1999.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Arphic-1999.json",
		ReferenceNumber:       533,
		Name:                  "Arphic Public License",
		LicenseID:             "Arphic-1999",
		SeeAlso: []string{
			"http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/LICENSE",
		},
		IsOsiApproved: false,
	},
	"dotseqn": {
		Reference:             "https://spdx.org/licenses/Dotseqn.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Dotseqn.json",
		ReferenceNumber:       534,
		Name:                  "Dotseqn License",
		LicenseID:             "Dotseqn",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Dotseqn",
		},
		IsOsiApproved: false,
	},
	"info-zip": {
		Reference:             "https://spdx.org/licenses/Info-ZIP.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Info-ZIP.json",
		ReferenceNumber:       535,
		Name:                  "Info-ZIP License",
		LicenseID:             "Info-ZIP",
		SeeAlso: []string{
			"http://www.info-zip.org/license.html",
		},
		IsOsiApproved: false,
	},
	"psutils": {
		Reference:             "https://spdx.org/licenses/psutils.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/psutils.json",
		ReferenceNumber:       536,
		Name:                  "psutils License",
		LicenseID:             "psutils",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/psutils",
		},
		IsOsiApproved: false,
	},
	"nist-pd": {
		Reference:             "https://spdx.org/licenses/NIST-PD.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NIST-PD.json",
		ReferenceNumber:       537,
		Name:                  "NIST Public Domain Notice",
		LicenseID:             "NIST-PD",
		SeeAlso: []string{
			"https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt",
			"https://github.com/tcheneau/Routing/blob/f09f46fcfe636107f22f2c98348188a65a135d98/README.md",
		},
		IsOsiApproved: false,
	},
	"gpl-2.0-or-later": {
		Reference:             "https://spdx.org/licenses/GPL-2.0-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GPL-2.0-or-later.json",
		ReferenceNumber:       538,
		Name:                  "GNU General Public License v2.0 or later",
		LicenseID:             "GPL-2.0-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html",
			"https://opensource.org/licenses/GPL-2.0",
		},
		IsOsiApproved: true,
	},
	"bsd-4.3reno": {
		Reference:             "https://spdx.org/licenses/BSD-4.3RENO.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-4.3RENO.json",
		ReferenceNumber:       539,
		Name:                  "BSD 4.3 RENO License",
		LicenseID:             "BSD-4.3RENO",
		SeeAlso: []string{
			"https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=libiberty/strcasecmp.c;h=131d81c2ce7881fa48c363dc5bf5fb302c61ce0b;hb=HEAD",
			"https://git.openldap.org/openldap/openldap/-/blob/master/COPYRIGHT#L55-63",
		},
		IsOsiApproved: false,
	},
	"hpnd-sell-variant": {
		Reference:             "https://spdx.org/licenses/HPND-sell-variant.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HPND-sell-variant.json",
		ReferenceNumber:       540,
		Name:                  "Historical Permission Notice and Disclaimer - sell variant",
		LicenseID:             "HPND-sell-variant",
		SeeAlso: []string{
			"https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h=v4.19",
		},
		IsOsiApproved: false,
	},
	"cnri-jython": {
		Reference:             "https://spdx.org/licenses/CNRI-Jython.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CNRI-Jython.json",
		ReferenceNumber:       541,
		Name:                  "CNRI Jython License",
		LicenseID:             "CNRI-Jython",
		SeeAlso: []string{
			"http://www.jython.org/license.html",
		},
		IsOsiApproved: false,
	},
	"coil-1.0": {
		Reference:             "https://spdx.org/licenses/COIL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/COIL-1.0.json",
		ReferenceNumber:       542,
		Name:                  "Copyfree Open Innovation License",
		LicenseID:             "COIL-1.0",
		SeeAlso: []string{
			"https://coil.apotheon.org/plaintext/01.0.txt",
		},
		IsOsiApproved: false,
	},
	"fsfap": {
		Reference:             "https://spdx.org/licenses/FSFAP.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/FSFAP.json",
		ReferenceNumber:       543,
		Name:                  "FSF All Permissive License",
		LicenseID:             "FSFAP",
		SeeAlso: []string{
			"https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html",
		},
		IsOsiApproved: false,
	},
	"lpl-1.0": {
		Reference:             "https://spdx.org/licenses/LPL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LPL-1.0.json",
		ReferenceNumber:       544,
		Name:                  "Lucent Public License Version 1.0",
		LicenseID:             "LPL-1.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/LPL-1.0",
		},
		IsOsiApproved: true,
	},
	"olfl-1.3": {
		Reference:             "https://spdx.org/licenses/OLFL-1.3.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLFL-1.3.json",
		ReferenceNumber:       545,
		Name:                  "Open Logistics Foundation License Version 1.3",
		LicenseID:             "OLFL-1.3",
		SeeAlso: []string{
			"https://openlogisticsfoundation.org/licenses/",
			"https://opensource.org/license/olfl-1-3/",
		},
		IsOsiApproved: true,
	},
	"adobe-glyph": {
		Reference:             "https://spdx.org/licenses/Adobe-Glyph.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Adobe-Glyph.json",
		ReferenceNumber:       546,
		Name:                  "Adobe Glyph List License",
		LicenseID:             "Adobe-Glyph",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph",
		},
		IsOsiApproved: false,
	},
	"nist-software": {
		Reference:             "https://spdx.org/licenses/NIST-Software.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NIST-Software.json",
		ReferenceNumber:       547,
		Name:                  "NIST Software License",
		LicenseID:             "NIST-Software",
		SeeAlso: []string{
			"https://github.com/open-quantum-safe/liboqs/blob/40b01fdbb270f8614fde30e65d30e9da18c02393/src/common/rand/rand_nist.c#L1-L15",
		},
		IsOsiApproved: false,
	},
	"ttyp0": {
		Reference:             "https://spdx.org/licenses/TTYP0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TTYP0.json",
		ReferenceNumber:       548,
		Name:                  "TTYP0 License",
		LicenseID:             "TTYP0",
		SeeAlso: []string{
			"https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/",
		},
		IsOsiApproved: false,
	},
	"lgpllr": {
		Reference:             "https://spdx.org/licenses/LGPLLR.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LGPLLR.json",
		ReferenceNumber:       549,
		Name:                  "Lesser General Public License For Linguistic Resources",
		LicenseID:             "LGPLLR",
		SeeAlso: []string{
			"http://www-igm.univ-mlv.fr/~unitex/lgpllr.html",
		},
		IsOsiApproved: false,
	},
	"cc-by-nd-1.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-ND-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-ND-1.0.json",
		ReferenceNumber:       550,
		Name:                  "Creative Commons Attribution No Derivatives 1.0 Generic",
		LicenseID:             "CC-BY-ND-1.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-nd/1.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"elastic-2.0": {
		Reference:             "https://spdx.org/licenses/Elastic-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Elastic-2.0.json",
		ReferenceNumber:       551,
		Name:                  "Elastic License 2.0",
		LicenseID:             "Elastic-2.0",
		SeeAlso: []string{
			"https://www.elastic.co/licensing/elastic-license",
			"https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt",
		},
		IsOsiApproved: false,
	},
	"fbm": {
		Reference:             "https://spdx.org/licenses/FBM.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/FBM.json",
		ReferenceNumber:       552,
		Name:                  "Fuzzy Bitmap License",
		LicenseID:             "FBM",
		SeeAlso: []string{
			"https://github.com/SWI-Prolog/packages-xpce/blob/161a40cd82004f731ba48024f9d30af388a7edf5/src/img/gifwrite.c#L21-L26",
		},
		IsOsiApproved: false,
	},
	"lppl-1.3a": {
		Reference:             "https://spdx.org/licenses/LPPL-1.3a.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/LPPL-1.3a.json",
		ReferenceNumber:       553,
		Name:                  "LaTeX Project Public License v1.3a",
		LicenseID:             "LPPL-1.3a",
		SeeAlso: []string{
			"http://www.latex-project.org/lppl/lppl-1-3a.txt",
		},
		IsOsiApproved: false,
	},
	"agpl-3.0-or-later": {
		Reference:             "https://spdx.org/licenses/AGPL-3.0-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/AGPL-3.0-or-later.json",
		ReferenceNumber:       554,
		Name:                  "GNU Affero General Public License v3.0 or later",
		LicenseID:             "AGPL-3.0-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/agpl.txt",
			"https://opensource.org/licenses/AGPL-3.0",
		},
		IsOsiApproved: true,
	},
	"barr": {
		Reference:             "https://spdx.org/licenses/Barr.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Barr.json",
		ReferenceNumber:       555,
		Name:                  "Barr License",
		LicenseID:             "Barr",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Barr",
		},
		IsOsiApproved: false,
	},
	"cdla-permissive-2.0": {
		Reference:             "https://spdx.org/licenses/CDLA-Permissive-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CDLA-Permissive-2.0.json",
		ReferenceNumber:       556,
		Name:                  "Community Data License Agreement Permissive 2.0",
		LicenseID:             "CDLA-Permissive-2.0",
		SeeAlso: []string{
			"https://cdla.dev/permissive-2-0",
		},
		IsOsiApproved: false,
	},
	"gpl-3.0-or-later": {
		Reference:             "https://spdx.org/licenses/GPL-3.0-or-later.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/GPL-3.0-or-later.json",
		ReferenceNumber:       557,
		Name:                  "GNU General Public License v3.0 or later",
		LicenseID:             "GPL-3.0-or-later",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/gpl-3.0-standalone.html",
			"https://opensource.org/licenses/GPL-3.0",
		},
		IsOsiApproved: true,
	},
	"netcdf": {
		Reference:             "https://spdx.org/licenses/NetCDF.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NetCDF.json",
		ReferenceNumber:       558,
		Name:                  "NetCDF license",
		LicenseID:             "NetCDF",
		SeeAlso: []string{
			"http://www.unidata.ucar.edu/software/netcdf/copyright.html",
		},
		IsOsiApproved: false,
	},
	"bahyph": {
		Reference:             "https://spdx.org/licenses/Bahyph.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Bahyph.json",
		ReferenceNumber:       559,
		Name:                  "Bahyph License",
		LicenseID:             "Bahyph",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Bahyph",
		},
		IsOsiApproved: false,
	},
	"cc-by-3.0-us": {
		Reference:             "https://spdx.org/licenses/CC-BY-3.0-US.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-3.0-US.json",
		ReferenceNumber:       560,
		Name:                  "Creative Commons Attribution 3.0 United States",
		LicenseID:             "CC-BY-3.0-US",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/3.0/us/legalcode",
		},
		IsOsiApproved: false,
	},
	"dtoa": {
		Reference:             "https://spdx.org/licenses/dtoa.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/dtoa.json",
		ReferenceNumber:       561,
		Name:                  "David M. Gay dtoa License",
		LicenseID:             "dtoa",
		SeeAlso: []string{
			"https://github.com/SWI-Prolog/swipl-devel/blob/master/src/os/dtoa.c",
		},
		IsOsiApproved: false,
	},
	"cc-by-2.5": {
		Reference:             "https://spdx.org/licenses/CC-BY-2.5.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-2.5.json",
		ReferenceNumber:       562,
		Name:                  "Creative Commons Attribution 2.5 Generic",
		LicenseID:             "CC-BY-2.5",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by/2.5/legalcode",
		},
		IsOsiApproved: false,
	},
	"condor-1.1": {
		Reference:             "https://spdx.org/licenses/Condor-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Condor-1.1.json",
		ReferenceNumber:       563,
		Name:                  "Condor Public License v1.1",
		LicenseID:             "Condor-1.1",
		SeeAlso: []string{
			"http://research.cs.wisc.edu/condor/license.html#condor",
			"http://web.archive.org/web/20111123062036/http://research.cs.wisc.edu/condor/license.html#condor",
		},
		IsOsiApproved: false,
	},
	"check-cvs": {
		Reference:             "https://spdx.org/licenses/check-cvs.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/check-cvs.json",
		ReferenceNumber:       564,
		Name:                  "check-cvs License",
		LicenseID:             "check-cvs",
		SeeAlso: []string{
			"http://cvs.savannah.gnu.org/viewvc/cvs/ccvs/contrib/check_cvs.in?revision=1.1.4.3&view=markup&pathrev=cvs1-11-23#l2",
		},
		IsOsiApproved: false,
	},
	"mpi-permissive": {
		Reference:             "https://spdx.org/licenses/mpi-permissive.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/mpi-permissive.json",
		ReferenceNumber:       565,
		Name:                  "mpi Permissive License",
		LicenseID:             "mpi-permissive",
		SeeAlso: []string{
			"https://sources.debian.org/src/openmpi/4.1.0-10/ompi/debuggers/msgq_interface.h/?hl=19#L19",
		},
		IsOsiApproved: false,
	},
	"rscpl": {
		Reference:             "https://spdx.org/licenses/RSCPL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/RSCPL.json",
		ReferenceNumber:       566,
		Name:                  "Ricoh Source Code Public License",
		LicenseID:             "RSCPL",
		SeeAlso: []string{
			"http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml",
			"https://opensource.org/licenses/RSCPL",
		},
		IsOsiApproved: true,
	},
	"latex2e-translated-notice": {
		Reference:             "https://spdx.org/licenses/Latex2e-translated-notice.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Latex2e-translated-notice.json",
		ReferenceNumber:       567,
		Name:                  "Latex2e with translated notice permission",
		LicenseID:             "Latex2e-translated-notice",
		SeeAlso: []string{
			"https://git.savannah.gnu.org/cgit/indent.git/tree/doc/indent.texi?id=a74c6b4ee49397cf330b333da1042bffa60ed14f#n74",
		},
		IsOsiApproved: false,
	},
	"tu-berlin-1.0": {
		Reference:             "https://spdx.org/licenses/TU-Berlin-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TU-Berlin-1.0.json",
		ReferenceNumber:       568,
		Name:                  "Technische Universitaet Berlin License 1.0",
		LicenseID:             "TU-Berlin-1.0",
		SeeAlso: []string{
			"https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT",
		},
		IsOsiApproved: false,
	},
	"smlnj": {
		Reference:             "https://spdx.org/licenses/SMLNJ.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SMLNJ.json",
		ReferenceNumber:       569,
		Name:                  "Standard ML of New Jersey License",
		LicenseID:             "SMLNJ",
		SeeAlso: []string{
			"https://www.smlnj.org/license.html",
		},
		IsOsiApproved: false,
	},
	"bsd-2-clause-freebsd": {
		Reference:             "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/BSD-2-Clause-FreeBSD.json",
		ReferenceNumber:       570,
		Name:                  "BSD 2-Clause FreeBSD License",
		LicenseID:             "BSD-2-Clause-FreeBSD",
		SeeAlso: []string{
			"http://www.freebsd.org/copyright/freebsd-license.html",
		},
		IsOsiApproved: false,
	},
	"tpdl": {
		Reference:             "https://spdx.org/licenses/TPDL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/TPDL.json",
		ReferenceNumber:       571,
		Name:                  "Time::ParseDate License",
		LicenseID:             "TPDL",
		SeeAlso: []string{
			"https://metacpan.org/pod/Time::ParseDate#LICENSE",
		},
		IsOsiApproved: false,
	},
	"multics": {
		Reference:             "https://spdx.org/licenses/Multics.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Multics.json",
		ReferenceNumber:       572,
		Name:                  "Multics License",
		LicenseID:             "Multics",
		SeeAlso: []string{
			"https://opensource.org/licenses/Multics",
		},
		IsOsiApproved: true,
	},
	"lgpl-3.0+": {
		Reference:             "https://spdx.org/licenses/LGPL-3.0+.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/LGPL-3.0+.json",
		ReferenceNumber:       573,
		Name:                  "GNU Lesser General Public License v3.0 or later",
		LicenseID:             "LGPL-3.0+",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/lgpl-3.0-standalone.html",
			"https://www.gnu.org/licenses/lgpl+gpl-3.0.txt",
			"https://opensource.org/licenses/LGPL-3.0",
		},
		IsOsiApproved: true,
	},
	"gfdl-1.3": {
		Reference:             "https://spdx.org/licenses/GFDL-1.3.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/GFDL-1.3.json",
		ReferenceNumber:       574,
		Name:                  "GNU Free Documentation License v1.3",
		LicenseID:             "GFDL-1.3",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/fdl-1.3.txt",
		},
		IsOsiApproved: false,
	},
	"bsd-4-clause": {
		Reference:             "https://spdx.org/licenses/BSD-4-Clause.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-4-Clause.json",
		ReferenceNumber:       575,
		Name:                  "BSD 4-Clause \"Original\" or \"Old\" License",
		LicenseID:             "BSD-4-Clause",
		SeeAlso: []string{
			"http://directory.fsf.org/wiki/License:BSD_4Clause",
		},
		IsOsiApproved: false,
	},
	"lgpl-2.0+": {
		Reference:             "https://spdx.org/licenses/LGPL-2.0+.html",
		IsDeprecatedLicenseID: true,
		DetailsURL:            "https://spdx.org/licenses/LGPL-2.0+.json",
		ReferenceNumber:       576,
		Name:                  "GNU Library General Public License v2 or later",
		LicenseID:             "LGPL-2.0+",
		SeeAlso: []string{
			"https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html",
		},
		IsOsiApproved: true,
	},
	"bsd-2-clause-views": {
		Reference:             "https://spdx.org/licenses/BSD-2-Clause-Views.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-2-Clause-Views.json",
		ReferenceNumber:       577,
		Name:                  "BSD 2-Clause with views sentence",
		LicenseID:             "BSD-2-Clause-Views",
		SeeAlso: []string{
			"http://www.freebsd.org/copyright/freebsd-license.html",
			"https://people.freebsd.org/~ivoras/wine/patch-wine-nvidia.sh",
			"https://github.com/protegeproject/protege/blob/master/license.txt",
		},
		IsOsiApproved: false,
	},
	"glide": {
		Reference:             "https://spdx.org/licenses/Glide.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Glide.json",
		ReferenceNumber:       578,
		Name:                  "3dfx Glide License",
		LicenseID:             "Glide",
		SeeAlso: []string{
			"http://www.users.on.net/~triforce/glidexp/COPYING.txt",
		},
		IsOsiApproved: false,
	},
	"opubl-1.0": {
		Reference:             "https://spdx.org/licenses/OPUBL-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OPUBL-1.0.json",
		ReferenceNumber:       579,
		Name:                  "Open Publication License v1.0",
		LicenseID:             "OPUBL-1.0",
		SeeAlso: []string{
			"http://opencontent.org/openpub/",
			"https://www.debian.org/opl",
			"https://www.ctan.org/license/opl",
		},
		IsOsiApproved: false,
	},
	"cc-by-sa-2.0": {
		Reference:             "https://spdx.org/licenses/CC-BY-SA-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/CC-BY-SA-2.0.json",
		ReferenceNumber:       580,
		Name:                  "Creative Commons Attribution Share Alike 2.0 Generic",
		LicenseID:             "CC-BY-SA-2.0",
		SeeAlso: []string{
			"https://creativecommons.org/licenses/by-sa/2.0/legalcode",
		},
		IsOsiApproved: false,
	},
	"haskellreport": {
		Reference:             "https://spdx.org/licenses/HaskellReport.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/HaskellReport.json",
		ReferenceNumber:       581,
		Name:                  "Haskell Language Report License",
		LicenseID:             "HaskellReport",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License",
		},
		IsOsiApproved: false,
	},
	"jpl-image": {
		Reference:             "https://spdx.org/licenses/JPL-image.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/JPL-image.json",
		ReferenceNumber:       582,
		Name:                  "JPL Image Use Policy",
		LicenseID:             "JPL-image",
		SeeAlso: []string{
			"https://www.jpl.nasa.gov/jpl-image-use-policy",
		},
		IsOsiApproved: false,
	},
	"ibm-pibs": {
		Reference:             "https://spdx.org/licenses/IBM-pibs.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/IBM-pibs.json",
		ReferenceNumber:       583,
		Name:                  "IBM PowerPC Initialization and Boot Software",
		LicenseID:             "IBM-pibs",
		SeeAlso: []string{
			"http://git.denx.de/?p=u-boot.git;a=blob;f=arch/powerpc/cpu/ppc4xx/miiphy.c;h=297155fdafa064b955e53e9832de93bfb0cfb85b;hb=9fab4bf4cc077c21e43941866f3f2c196f28670d",
		},
		IsOsiApproved: false,
	},
	"ftl": {
		Reference:             "https://spdx.org/licenses/FTL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/FTL.json",
		ReferenceNumber:       584,
		Name:                  "Freetype Project License",
		LicenseID:             "FTL",
		SeeAlso: []string{
			"http://freetype.fis.uniroma2.it/FTL.TXT",
			"http://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT",
			"http://gitlab.freedesktop.org/freetype/freetype/-/raw/master/docs/FTL.TXT",
		},
		IsOsiApproved: false,
	},
	"snia": {
		Reference:             "https://spdx.org/licenses/SNIA.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SNIA.json",
		ReferenceNumber:       585,
		Name:                  "SNIA Public License 1.1",
		LicenseID:             "SNIA",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/SNIA_Public_License",
		},
		IsOsiApproved: false,
	},
	"hippocratic-2.1": {
		Reference:             "https://spdx.org/licenses/Hippocratic-2.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Hippocratic-2.1.json",
		ReferenceNumber:       586,
		Name:                  "Hippocratic License 2.1",
		LicenseID:             "Hippocratic-2.1",
		SeeAlso: []string{
			"https://firstdonoharm.dev/version/2/1/license.html",
			"https://github.com/EthicalSource/hippocratic-license/blob/58c0e646d64ff6fbee275bfe2b9492f914e3ab2a/LICENSE.txt",
		},
		IsOsiApproved: false,
	},
	"simpl-2.0": {
		Reference:             "https://spdx.org/licenses/SimPL-2.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/SimPL-2.0.json",
		ReferenceNumber:       587,
		Name:                  "Simple Public License 2.0",
		LicenseID:             "SimPL-2.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/SimPL-2.0",
		},
		IsOsiApproved: true,
	},
	"bsd-3-clause-clear": {
		Reference:             "https://spdx.org/licenses/BSD-3-Clause-Clear.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BSD-3-Clause-Clear.json",
		ReferenceNumber:       588,
		Name:                  "BSD 3-Clause Clear License",
		LicenseID:             "BSD-3-Clause-Clear",
		SeeAlso: []string{
			"http://labs.metacarta.com/license-explanation.html#license",
		},
		IsOsiApproved: false,
	},
	"spencer-86": {
		Reference:             "https://spdx.org/licenses/Spencer-86.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Spencer-86.json",
		ReferenceNumber:       589,
		Name:                  "Spencer License 86",
		LicenseID:             "Spencer-86",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License",
		},
		IsOsiApproved: false,
	},
	"busl-1.1": {
		Reference:             "https://spdx.org/licenses/BUSL-1.1.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/BUSL-1.1.json",
		ReferenceNumber:       590,
		Name:                  "Business Source License 1.1",
		LicenseID:             "BUSL-1.1",
		SeeAlso: []string{
			"https://mariadb.com/bsl11/",
		},
		IsOsiApproved: false,
	},
	"adsl": {
		Reference:             "https://spdx.org/licenses/ADSL.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/ADSL.json",
		ReferenceNumber:       591,
		Name:                  "Amazon Digital Services License",
		LicenseID:             "ADSL",
		SeeAlso: []string{
			"https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense",
		},
		IsOsiApproved: false,
	},
	"oldap-2.3": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.3.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.3.json",
		ReferenceNumber:       592,
		Name:                  "Open LDAP Public License v2.3",
		LicenseID:             "OLDAP-2.3",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=d32cf54a32d581ab475d23c810b0a7fbaf8d63c3",
		},
		IsOsiApproved: false,
	},
	"interbase-1.0": {
		Reference:             "https://spdx.org/licenses/Interbase-1.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Interbase-1.0.json",
		ReferenceNumber:       593,
		Name:                  "Interbase Public License v1.0",
		LicenseID:             "Interbase-1.0",
		SeeAlso: []string{
			"https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html",
		},
		IsOsiApproved: false,
	},
	"oldap-2.5": {
		Reference:             "https://spdx.org/licenses/OLDAP-2.5.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/OLDAP-2.5.json",
		ReferenceNumber:       594,
		Name:                  "Open LDAP Public License v2.5",
		LicenseID:             "OLDAP-2.5",
		SeeAlso: []string{
			"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=6852b9d90022e8593c98205413380536b1b5a7cf",
		},
		IsOsiApproved: false,
	},
	"artistic-1.0-perl": {
		Reference:             "https://spdx.org/licenses/Artistic-1.0-Perl.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/Artistic-1.0-Perl.json",
		ReferenceNumber:       595,
		Name:                  "Artistic License 1.0 (Perl)",
		LicenseID:             "Artistic-1.0-Perl",
		SeeAlso: []string{
			"http://dev.perl.org/licenses/artistic.html",
		},
		IsOsiApproved: true,
	},
	"gsoap-1.3b": {
		Reference:             "https://spdx.org/licenses/gSOAP-1.3b.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/gSOAP-1.3b.json",
		ReferenceNumber:       596,
		Name:                  "gSOAP Public License v1.3b",
		LicenseID:             "gSOAP-1.3b",
		SeeAlso: []string{
			"http://www.cs.fsu.edu/~engelen/license.html",
		},
		IsOsiApproved: false,
	},
	"nposl-3.0": {
		Reference:             "https://spdx.org/licenses/NPOSL-3.0.html",
		IsDeprecatedLicenseID: false,
		DetailsURL:            "https://spdx.org/licenses/NPOSL-3.0.json",
		ReferenceNumber:       597,
		Name:                  "Non-Profit Open Software License 3.0",
		LicenseID:             "NPOSL-3.0",
		SeeAlso: []string{
			"https://opensource.org/licenses/NOSL3.0",
		},
		IsOsiApproved: true,
	},
}
0707010000006B000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001100000000grant-0.2.9/test0707010000006C000041ED0000000000000000000000026896451000000000000000000000000000000000000000000000001500000000grant-0.2.9/test/cli0707010000006D000081A400000000000000000000000168964510000003F4000000000000000000000000000000000000002300000000grant-0.2.9/test/cli/check_test.gopackage cli

import (
	"os/exec"
	"strings"
	"testing"
)

func Test_CheckCmd(t *testing.T) {
	tests := []struct {
		name             string
		args             []string
		expectedInOutput []string
	}{
		{
			name: "check command will deny all on empty config",
			args: []string{"-c", emptyConfigPath, "check", "dir:../../."},
			expectedInOutput: []string{
				"check failed",
				"license matches for rule: default-deny-all; matched with pattern *",
				"Apache-2.0",
			},
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			cmd := exec.Command(grantTmpPath, tt.args...)
			output, err := cmd.CombinedOutput()
			if err != nil && !strings.Contains(err.Error(), "exit status 1") {
				t.Fatalf("cmd.CombinedOutput() failed with %s\n %s", err, string(output))
			}
			for _, expected := range tt.expectedInOutput {
				if !strings.Contains(string(output), expected) {
					t.Errorf("expected %s to be in output, but it wasn't; output: %s", expected, string(output))
				}
			}
		})
	}
}
0707010000006E000081A400000000000000000000000168964510000004D9000000000000000000000000000000000000002200000000grant-0.2.9/test/cli/main_test.gopackage cli

import (
	"log"
	"os"
	"os/exec"
	"testing"
)

const (
	grantTmpPath    = "../../.tmp/grant"
	emptyConfigPath = "../../.tmp/grant_empty.yaml"
)

func buildBinary() (string, error) {
	buildCmd := exec.Command("go", "build", "-o", grantTmpPath, "../../cmd/grant/main.go") // Adjust the last argument to your package path if necessary
	err := buildCmd.Run()
	return grantTmpPath, err
}

func generateEmptyConfig() (string, error) {
	emptyConfigCmd := exec.Command("touch", emptyConfigPath)
	err := emptyConfigCmd.Run()
	return emptyConfigPath, err
}

// setup function that you want to run before any tests
func setup(m *testing.M) {
	_, err := buildBinary()
	if err != nil {
		log.Fatalf("Failed to build binary: %v", err)
	}
	_, err = generateEmptyConfig()
	if err != nil {
		log.Fatalf("Failed to generate empty config: %v", err)
	}
}

// teardown function to clean up after the tests
func teardown() {
	// Your cleanup code here
	println("Running teardown after all tests.")
}

// TestMain is the entry point for testing
func TestMain(m *testing.M) {
	setup(m)        // Call setup
	code := m.Run() // Run the tests and store the result
	teardown()      // Call teardown
	os.Exit(code)   // Exit with the result of the tests
}
0707010000006F000081A400000000000000000000000168964510000000E2000000000000000000000000000000000000002300000000grant-0.2.9/test/cli/utils_test.gopackage cli

import "os"

func fileExists(filename string) bool {
	info, err := os.Stat(filename)
	if os.IsNotExist(err) {
		return false
	}
	// We also check if the file might actually be a directory.
	return !info.IsDir()
}
07070100000070000081A400000000000000000000000168964510000004FB000000000000000000000000000000000000002500000000grant-0.2.9/test/cli/version_test.gopackage cli

import (
	"os/exec"
	"testing"

	"github.com/stretchr/testify/assert"
)

// Note main_test.go is used to set up and teardown the tests. This is the entry point for testing and
// responsible for building the most recent version of the grant binary.
func Test_VersionCommand(t *testing.T) {
	tests := []struct {
		name             string
		command          string
		expectedInOutput []string
	}{
		{
			name:             "text output",
			command:          "--version",
			expectedInOutput: []string{"[not provided]"},
		},
		{
			name:    "long form",
			command: "version",
			expectedInOutput: []string{
				"Application:",
				"Version:",
				"BuildDate:",
				"GitCommit:",
				"GitDescription:",
				"Platform:",
				"GoVersion:",
				"Compiler:",
			},
		},
	}

	for _, test := range tests {
		t.Run(test.name, func(t *testing.T) {
			// check if the command is available
			cmd := exec.Command(grantTmpPath, test.command)
			output, err := cmd.CombinedOutput()
			if err != nil {
				t.Fatalf("command failed: %v: cmd output: %s", err, string(output))
			}

			for _, expected := range test.expectedInOutput {
				assert.Contains(t, string(output), expected, "expected output: %s not found in command output: %s", expected, string(output))
			}
		})
	}
}
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000B00000000TRAILER!!!1577 blocks
openSUSE Build Service is sponsored by