{"spdxVersion":"SPDX-2.3","dataLicense":"CC0-1.0","SPDXID":"SPDXRef-DOCUMENT","name":"com.github.dunwu/algorithm-tutorial","documentNamespace":"https://spdx.org/spdxdocs/protobom/8dae7c1e-5c97-4b46-8bd9-b1d92ae2a288","comment":"Exact versions could not be resolved for some packages. For more information: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#dependencies-included.","creationInfo":{"creators":["Tool: protobom-v0.0.0-20260403143834-a075a09f5b04+dirty","Tool: GitHub.com-Dependency-Graph"],"created":"2026-04-05T09:23:50Z"},"packages":[{"name":"vuepress-plugin-baidu-tongji","SPDXID":"SPDXRef-npm-vuepress-plugin-baidu-tongji-1.0.1-fa810a","versionInfo":"^1.0.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress-plugin-baidu-tongji@%5E1.0.1"}]},{"name":"vuepress-theme-vdoing","SPDXID":"SPDXRef-npm-vuepress-theme-vdoing-1.11.2-8ad6bc","versionInfo":"^1.11.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress-theme-vdoing@%5E1.11.2"}]},{"name":"vuepress-plugin-demo-block","SPDXID":"SPDXRef-npm-vuepress-plugin-demo-block-0.7.2-9ed4a3","versionInfo":"^0.7.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress-plugin-demo-block@%5E0.7.2"}]},{"name":"dayjs","SPDXID":"SPDXRef-npm-dayjs-1.9.7-f4b1cb","versionInfo":"^1.9.7","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/dayjs@%5E1.9.7"}]},{"name":"vuepress-plugin-comment","SPDXID":"SPDXRef-npm-vuepress-plugin-comment-0.7.3-e6212d","versionInfo":"^0.7.3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress-plugin-comment@%5E0.7.3"}]},{"name":"vuepress-plugin-thirdparty-search","SPDXID":"SPDXRef-npm-vuepress-plugin-thirdparty-search-1.0.2-9242ac","versionInfo":"^1.0.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress-plugin-thirdparty-search@%5E1.0.2"}]},{"name":"inquirer","SPDXID":"SPDXRef-npm-inquirer-7.1.0-8fcc92","versionInfo":"^7.1.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/inquirer@%5E7.1.0"}]},{"name":"vuepress-plugin-zooming","SPDXID":"SPDXRef-npm-vuepress-plugin-zooming-1.1.7-b8a0a3","versionInfo":"^1.1.7","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress-plugin-zooming@%5E1.1.7"}]},{"name":"markdownlint-cli","SPDXID":"SPDXRef-npm-markdownlint-cli-0.25.0-31c30d","versionInfo":"^0.25.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/markdownlint-cli@%5E0.25.0"}]},{"name":"yamljs","SPDXID":"SPDXRef-npm-yamljs-0.3.0-e31b05","versionInfo":"^0.3.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/yamljs@%5E0.3.0"}]},{"name":"vuepress-plugin-baidu-autopush","SPDXID":"SPDXRef-npm-vuepress-plugin-baidu-autopush-1.0.1-b83bba","versionInfo":"^1.0.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress-plugin-baidu-autopush@%5E1.0.1"}]},{"name":"vuepress-plugin-one-click-copy","SPDXID":"SPDXRef-npm-vuepress-plugin-one-click-copy-1.0.2-fa29e3","versionInfo":"^1.0.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress-plugin-one-click-copy@%5E1.0.2"}]},{"name":"vuepress-plugin-fulltext-search","SPDXID":"SPDXRef-npm-vuepress-plugin-fulltext-search-2.2.1-c78ef8","versionInfo":"^2.2.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress-plugin-fulltext-search@%5E2.2.1"}]},{"name":"vue-toasted","SPDXID":"SPDXRef-npm-vue-toasted-1.1.25-13e389","versionInfo":"^1.1.25","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vue-toasted@%5E1.1.25"}]},{"name":"vuepress","SPDXID":"SPDXRef-npm-vuepress-1.9.5-f9ad21","versionInfo":"1.9.5","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2018-present, Yuxi","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/vuepress@1.9.5"}]},{"name":"rimraf","SPDXID":"SPDXRef-npm-rimraf-3.0.1-bfca92","versionInfo":"^3.0.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/rimraf@%5E3.0.1"}]},{"name":"markdownlint-rule-emphasis-style","SPDXID":"SPDXRef-npm-markdownlint-rule-emphasis-style-1.0.1-9fe4ad","versionInfo":"^1.0.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/markdownlint-rule-emphasis-style@%5E1.0.1"}]},{"name":"json2yaml","SPDXID":"SPDXRef-npm-json2yaml-1.1.0-cbec35","versionInfo":"^1.1.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:npm/json2yaml@%5E1.1.0"}]},{"name":"org.junit.jupiter:junit-jupiter","SPDXID":"SPDXRef-maven-org.junit.jupiter-junit-jupiter-5.8.2-75c946","versionInfo":"5.8.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"EPL-2.0","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:maven/org.junit.jupiter/junit-jupiter@5.8.2"}]},{"name":"cn.hutool:hutool-all","SPDXID":"SPDXRef-maven-cn.hutool-hutool-all-5.8.29-75c946","versionInfo":"5.8.29","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:maven/cn.hutool/hutool-all@5.8.29"}]},{"name":"org.assertj:assertj-core","SPDXID":"SPDXRef-maven-org.assertj-assertj-core-3.26.3-75c946","versionInfo":"3.26.3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:maven/org.assertj/assertj-core@3.26.3"}]},{"name":"org.projectlombok:lombok","SPDXID":"SPDXRef-maven-org.projectlombok-lombok-1.18.36-75c946","versionInfo":"1.18.36","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT AND BSD-3-Clause","copyrightText":"(c) 2009-2021 The Project Lombok Authors, Copyright (c) 2000-2011 INRIA, France Telecom, Copyright (c) 2009-2021 The Project Lombok Authors, Copyright (c) 2010 Reinier Zwitserloot","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:maven/org.projectlombok/lombok@1.18.36"}]},{"name":"org.apache.maven.plugins:maven-javadoc-plugin","SPDXID":"SPDXRef-maven-org.apache.maven.plugins-maven-javadoc-plugin-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:maven/org.apache.maven.plugins/maven-javadoc-plugin"}]},{"name":"ch.qos.logback:logback-classic","SPDXID":"SPDXRef-maven-ch.qos.logback-logback-classic-1.2.9-75c946","versionInfo":"1.2.9","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"EPL-1.0 OR LGPL-2.1-only","copyrightText":"Copyright (c) 1999-2010, QOS.ch, Copyright (c) 1999-2012, QOS.ch","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:maven/ch.qos.logback/logback-classic@1.2.9"}]},{"name":"actions/checkout","SPDXID":"SPDXRef-githubactions-actions-checkout-master-75c946","versionInfo":"master","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/checkout@master"}]},{"name":"actions/setup-node","SPDXID":"SPDXRef-githubactions-actions-setup-node-1-75c946","versionInfo":"1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:githubactions/actions/setup-node@1"}]},{"name":"com.github.dunwu/algorithm-tutorial","SPDXID":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","versionInfo":"master","downloadLocation":"git+https://github.com/dunwu/algorithm-tutorial","filesAnalyzed":false,"licenseDeclared":"CC-BY-SA-4.0","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:github/dunwu/algorithm-tutorial@master"}]}],"relationships":[{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-plugin-baidu-tongji-1.0.1-fa810a","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-theme-vdoing-1.11.2-8ad6bc","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-plugin-demo-block-0.7.2-9ed4a3","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-dayjs-1.9.7-f4b1cb","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-plugin-comment-0.7.3-e6212d","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-plugin-thirdparty-search-1.0.2-9242ac","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-inquirer-7.1.0-8fcc92","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-plugin-zooming-1.1.7-b8a0a3","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-markdownlint-cli-0.25.0-31c30d","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-yamljs-0.3.0-e31b05","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-plugin-baidu-autopush-1.0.1-b83bba","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-plugin-one-click-copy-1.0.2-fa29e3","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-plugin-fulltext-search-2.2.1-c78ef8","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vue-toasted-1.1.25-13e389","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-vuepress-1.9.5-f9ad21","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-rimraf-3.0.1-bfca92","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-markdownlint-rule-emphasis-style-1.0.1-9fe4ad","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-npm-json2yaml-1.1.0-cbec35","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-maven-org.assertj-assertj-core-3.26.3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-maven-org.projectlombok-lombok-1.18.36-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-maven-org.apache.maven.plugins-maven-javadoc-plugin-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-maven-ch.qos.logback-logback-classic-1.2.9-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-githubactions-actions-checkout-master-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-githubactions-actions-setup-node-1-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-maven-org.junit.jupiter-junit-jupiter-5.8.2-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relatedSpdxElement":"SPDXRef-maven-cn.hutool-hutool-all-5.8.29-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-DOCUMENT","relatedSpdxElement":"SPDXRef-github-dunwu-algorithm-tutorial-master-465f75","relationshipType":"DESCRIBES"}]}
