@blamejs/exceptd-skills 0.14.11 → 0.14.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/bin/exceptd.js +83 -15
- package/data/_indexes/_meta.json +2 -2
- package/lib/cve-cli.js +7 -3
- package/lib/playbook-runner.js +41 -20
- package/lib/prefetch.js +30 -0
- package/lib/refresh-external.js +41 -0
- package/lib/rfc-cli.js +7 -2
- package/lib/schemas/playbook.schema.json +3 -1
- package/lib/scoring.js +8 -1
- package/lib/validate-playbooks.js +119 -0
- package/manifest.json +44 -44
- package/orchestrator/index.js +98 -11
- package/package.json +1 -1
- package/sbom.cdx.json +32 -32
package/orchestrator/index.js
CHANGED
|
@@ -86,7 +86,7 @@ async function main() {
|
|
|
86
86
|
await runDispatch();
|
|
87
87
|
break;
|
|
88
88
|
case 'skill':
|
|
89
|
-
runSkillContext(args
|
|
89
|
+
runSkillContext(args);
|
|
90
90
|
break;
|
|
91
91
|
case 'pipeline':
|
|
92
92
|
runPipeline(args[0] || 'manual', args[1] ? JSON.parse(args[1]) : {});
|
|
@@ -141,11 +141,23 @@ function runFrameworkGap(rawArgs) {
|
|
|
141
141
|
const jsonOut = flags.has('--json');
|
|
142
142
|
|
|
143
143
|
if (args.length < 2) {
|
|
144
|
-
|
|
144
|
+
const usage = `Usage: exceptd framework-gap <FRAMEWORK_ID|all> <SCENARIO|CVE-ID> [--json]
|
|
145
145
|
Examples:
|
|
146
146
|
exceptd framework-gap NIST-800-53 CVE-2026-31431
|
|
147
147
|
exceptd framework-gap PCI-DSS-4.0 "prompt injection"
|
|
148
|
-
exceptd framework-gap all CVE-2025-53773 --json
|
|
148
|
+
exceptd framework-gap all CVE-2025-53773 --json`;
|
|
149
|
+
// Honor --json on the missing-arg path: a JSON consumer must get a
|
|
150
|
+
// structured ok:false envelope, not plain usage text on stderr.
|
|
151
|
+
if (jsonOut) {
|
|
152
|
+
process.stdout.write(JSON.stringify({
|
|
153
|
+
ok: false,
|
|
154
|
+
verb: 'framework-gap',
|
|
155
|
+
error: 'framework-gap requires <FRAMEWORK_ID|all> and <SCENARIO|CVE-ID>',
|
|
156
|
+
usage,
|
|
157
|
+
}) + '\n');
|
|
158
|
+
} else {
|
|
159
|
+
console.error(usage);
|
|
160
|
+
}
|
|
149
161
|
// v0.13 exit-code class fix: usage error is GENERIC_FAILURE (1),
|
|
150
162
|
// not DETECTED_ESCALATE (2). Pre-v0.13 the orchestrator emitted
|
|
151
163
|
// exit 2 for usage errors, colliding with CI gates that branch on
|
|
@@ -258,12 +270,15 @@ async function runScan() {
|
|
|
258
270
|
// other verbs (validate-cves, watchlist, etc.). Previously this was a
|
|
259
271
|
// bare `process.argv.includes('--json')`, which differed in style from
|
|
260
272
|
// the verbs below and could miss `--json=true` or similar future forms.
|
|
273
|
+
if (rejectUnknownFlags('scan', args, ['--json'])) return;
|
|
261
274
|
const { flags } = parseFlags(process.argv.slice(2), []);
|
|
262
275
|
const jsonOut = flags.has('--json');
|
|
263
276
|
if (!jsonOut) console.log('[orchestrator] Scanning environment...\n');
|
|
264
277
|
const result = await scan();
|
|
265
278
|
if (jsonOut) {
|
|
266
|
-
|
|
279
|
+
// Top-level ok:true so a single JSON consumer can branch on the same
|
|
280
|
+
// envelope the ok:false error paths emit.
|
|
281
|
+
process.stdout.write(JSON.stringify({ ok: true, ...result }) + '\n');
|
|
267
282
|
return result;
|
|
268
283
|
}
|
|
269
284
|
|
|
@@ -293,13 +308,14 @@ async function runScan() {
|
|
|
293
308
|
}
|
|
294
309
|
|
|
295
310
|
async function runDispatch() {
|
|
311
|
+
if (rejectUnknownFlags('dispatch', args, ['--json'])) return;
|
|
296
312
|
const jsonOut = process.argv.includes('--json');
|
|
297
313
|
if (!jsonOut) console.log('[orchestrator] Scanning then dispatching...\n');
|
|
298
314
|
const scanResult = await scan();
|
|
299
315
|
const plan = dispatch(scanResult.findings);
|
|
300
316
|
|
|
301
317
|
if (jsonOut) {
|
|
302
|
-
process.stdout.write(JSON.stringify({ scan: scanResult, dispatch: plan }) + '\n');
|
|
318
|
+
process.stdout.write(JSON.stringify({ ok: true, scan: scanResult, dispatch: plan }) + '\n');
|
|
303
319
|
return plan;
|
|
304
320
|
}
|
|
305
321
|
|
|
@@ -334,10 +350,28 @@ async function runDispatch() {
|
|
|
334
350
|
return plan;
|
|
335
351
|
}
|
|
336
352
|
|
|
337
|
-
function runSkillContext(
|
|
353
|
+
function runSkillContext(rawArgs) {
|
|
354
|
+
// `rawArgs` is the full arg list. Filter --flags out of the positional set
|
|
355
|
+
// before treating the first positional as the skill name — pre-fix
|
|
356
|
+
// `skill --json` passed "--json" through as args[0] and reported
|
|
357
|
+
// "Skill not found: --json".
|
|
358
|
+
const argList = Array.isArray(rawArgs) ? rawArgs : (rawArgs == null ? [] : [rawArgs]);
|
|
359
|
+
const jsonOut = argList.includes('--json');
|
|
360
|
+
const positionals = argList.filter(a => typeof a === 'string' && !a.startsWith('--'));
|
|
361
|
+
const skillName = positionals[0];
|
|
362
|
+
|
|
338
363
|
if (!skillName) {
|
|
339
|
-
|
|
340
|
-
|
|
364
|
+
if (jsonOut) {
|
|
365
|
+
process.stdout.write(JSON.stringify({
|
|
366
|
+
ok: false,
|
|
367
|
+
verb: 'skill',
|
|
368
|
+
error: 'usage: exceptd skill <skill-name>',
|
|
369
|
+
hint: 'List available skills: exceptd brief --all',
|
|
370
|
+
}) + '\n');
|
|
371
|
+
} else {
|
|
372
|
+
console.error('Usage: exceptd skill <skill-name>');
|
|
373
|
+
console.error(' (Lists available skills: exceptd brief --all)');
|
|
374
|
+
}
|
|
341
375
|
safeExit(EXIT_CODES.GENERIC_FAILURE);
|
|
342
376
|
return;
|
|
343
377
|
}
|
|
@@ -381,12 +415,13 @@ function runPipeline(triggerType, payload) {
|
|
|
381
415
|
}
|
|
382
416
|
|
|
383
417
|
function runCurrency() {
|
|
418
|
+
if (rejectUnknownFlags('currency', args, ['--json'])) return;
|
|
384
419
|
const jsonOut = process.argv.includes('--json');
|
|
385
420
|
const result = runCurrencyNow();
|
|
386
421
|
const { currency_report, action_required, critical_count } = currencyCheck();
|
|
387
422
|
|
|
388
423
|
if (jsonOut) {
|
|
389
|
-
process.stdout.write(JSON.stringify({ currency_report, action_required, critical_count, generated_at: new Date().toISOString() }) + '\n');
|
|
424
|
+
process.stdout.write(JSON.stringify({ ok: true, currency_report, action_required, critical_count, generated_at: new Date().toISOString() }) + '\n');
|
|
390
425
|
return;
|
|
391
426
|
}
|
|
392
427
|
|
|
@@ -712,12 +747,52 @@ async function runWatch() {
|
|
|
712
747
|
console.log('Press Ctrl+C to stop. (SIGTERM / SIGHUP / SIGBREAK also honored.)\n');
|
|
713
748
|
}
|
|
714
749
|
|
|
750
|
+
// Known flags accepted by validate-cves. An unknown flag (typo) must be
|
|
751
|
+
// rejected before any network work — a swallowed `--ofline` previously fell
|
|
752
|
+
// through to the default live-network path and the verb hung fetching the
|
|
753
|
+
// whole catalog from NVD until killed.
|
|
754
|
+
const VALIDATE_CVES_KNOWN_FLAGS = Object.freeze([
|
|
755
|
+
'--offline', '--no-fail', '--from-cache', '--concurrency', '--since', '--air-gap',
|
|
756
|
+
]);
|
|
757
|
+
// Known flags accepted by validate-rfcs (same hang-on-typo class as
|
|
758
|
+
// validate-cves). `--live` is the explicit opt-in to the default network
|
|
759
|
+
// path; `--air-gap` forces the offline view with no egress.
|
|
760
|
+
const VALIDATE_RFCS_KNOWN_FLAGS = Object.freeze([
|
|
761
|
+
'--offline', '--no-fail', '--from-cache', '--since', '--live', '--air-gap',
|
|
762
|
+
]);
|
|
763
|
+
|
|
764
|
+
// Reject unknown --flags against a per-verb allowlist BEFORE any network work.
|
|
765
|
+
// Returns true when a rejection was emitted (caller should return); false when
|
|
766
|
+
// every flag is recognized. The base flag (text before any `=`) is what gets
|
|
767
|
+
// matched so `--from-cache=path` and `--since=2026-01-01` are accepted.
|
|
768
|
+
function rejectUnknownFlags(verb, rawArgs, knownFlags) {
|
|
769
|
+
const known = new Set(knownFlags);
|
|
770
|
+
const unknown = rawArgs
|
|
771
|
+
.filter(a => typeof a === 'string' && a.startsWith('--'))
|
|
772
|
+
.map(a => { const eq = a.indexOf('='); return eq === -1 ? a : a.slice(0, eq); })
|
|
773
|
+
.filter(base => !known.has(base));
|
|
774
|
+
if (unknown.length === 0) return false;
|
|
775
|
+
// Dedupe while preserving order.
|
|
776
|
+
const uniq = [...new Set(unknown)];
|
|
777
|
+
process.stdout.write(JSON.stringify({
|
|
778
|
+
ok: false,
|
|
779
|
+
verb,
|
|
780
|
+
error: `${verb}: unknown flag(s): ${uniq.join(', ')}`,
|
|
781
|
+
unknown_flags: uniq,
|
|
782
|
+
known_flags: knownFlags,
|
|
783
|
+
}) + '\n');
|
|
784
|
+
safeExit(EXIT_CODES.GENERIC_FAILURE);
|
|
785
|
+
return true;
|
|
786
|
+
}
|
|
787
|
+
|
|
715
788
|
async function runValidateCves(rawArgs = []) {
|
|
716
789
|
const fs = require('fs');
|
|
717
790
|
const path = require('path');
|
|
718
791
|
|
|
792
|
+
if (rejectUnknownFlags('validate-cves', rawArgs, VALIDATE_CVES_KNOWN_FLAGS)) return;
|
|
793
|
+
|
|
719
794
|
const flags = new Set(rawArgs.filter(a => a.startsWith('--')));
|
|
720
|
-
const offline = flags.has('--offline');
|
|
795
|
+
const offline = flags.has('--offline') || flags.has('--air-gap');
|
|
721
796
|
const noFail = flags.has('--no-fail');
|
|
722
797
|
// --from-cache: prefer cached upstream snapshots before falling back to live
|
|
723
798
|
// network. Accepts an optional path; defaults to .cache/upstream when bare.
|
|
@@ -963,8 +1038,10 @@ async function runValidateRfcs(rawArgs = []) {
|
|
|
963
1038
|
const fs = require('fs');
|
|
964
1039
|
const path = require('path');
|
|
965
1040
|
|
|
1041
|
+
if (rejectUnknownFlags('validate-rfcs', rawArgs, VALIDATE_RFCS_KNOWN_FLAGS)) return;
|
|
1042
|
+
|
|
966
1043
|
const flags = new Set(rawArgs.filter(a => a.startsWith('--')));
|
|
967
|
-
const offline = flags.has('--offline');
|
|
1044
|
+
const offline = flags.has('--offline') || flags.has('--air-gap');
|
|
968
1045
|
const noFail = flags.has('--no-fail');
|
|
969
1046
|
let cacheDir = null;
|
|
970
1047
|
for (let i = 0; i < rawArgs.length; i++) {
|
|
@@ -1136,11 +1213,21 @@ async function runValidateRfcs(rawArgs = []) {
|
|
|
1136
1213
|
* that should trigger a skill update. This command surfaces the union so
|
|
1137
1214
|
* maintainers can see the full horizon at a glance.
|
|
1138
1215
|
*/
|
|
1216
|
+
// Every flag any watchlist mode (default aggregator, --alerts, --org-scan)
|
|
1217
|
+
// accepts. The unknown-flag guard runs once at the top of runWatchlist so a
|
|
1218
|
+
// typo is rejected regardless of which sub-mode it would have reached.
|
|
1219
|
+
const WATCHLIST_KNOWN_FLAGS = Object.freeze([
|
|
1220
|
+
'--json', '--by-skill', '--alerts', '--org-scan',
|
|
1221
|
+
'--org', '--pattern', '--output-format', '--air-gap',
|
|
1222
|
+
]);
|
|
1223
|
+
|
|
1139
1224
|
function runWatchlist(rawArgs = []) {
|
|
1140
1225
|
const fs = require('fs');
|
|
1141
1226
|
const path = require('path');
|
|
1142
1227
|
const { parseFrontmatter, extractFrontmatterBlock } = require('../lib/lint-skills.js');
|
|
1143
1228
|
|
|
1229
|
+
if (rejectUnknownFlags('watchlist', rawArgs, WATCHLIST_KNOWN_FLAGS)) return;
|
|
1230
|
+
|
|
1144
1231
|
const byskill = rawArgs.includes('--by-skill');
|
|
1145
1232
|
const alertsMode = rawArgs.includes('--alerts');
|
|
1146
1233
|
const orgScanMode = rawArgs.includes('--org-scan');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blamejs/exceptd-skills",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.12",
|
|
4
4
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 11 catalogs (406 CVEs / 171 CWEs / 805 ATT&CK + ICS / 170 ATLAS / 468 D3FEND / 8888 RFCs), 35 jurisdictions, 10-class catalog gap detector + budget gate, real XML parser + canonical-form diff + content-pattern regression detection, Ed25519-signed.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-security",
|
package/sbom.cdx.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.6",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:3c3dcfa9-3a0d-41e3-ba8b-fc9074eb6c91",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "
|
|
7
|
+
"timestamp": "2058-01-10T17:30:17.000Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "blamejs",
|
|
11
11
|
"name": "scripts/refresh-sbom.js",
|
|
12
|
-
"version": "0.14.
|
|
12
|
+
"version": "0.14.12"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"component": {
|
|
16
|
-
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.14.
|
|
16
|
+
"bom-ref": "pkg:npm/@blamejs/exceptd-skills@0.14.12",
|
|
17
17
|
"type": "application",
|
|
18
18
|
"name": "@blamejs/exceptd-skills",
|
|
19
|
-
"version": "0.14.
|
|
19
|
+
"version": "0.14.12",
|
|
20
20
|
"description": "AI security skills grounded in mid-2026 threat reality, not stale framework documentation. 42 skills, 11 catalogs (406 CVEs / 171 CWEs / 805 ATT&CK + ICS / 170 ATLAS / 468 D3FEND / 8888 RFCs), 35 jurisdictions, 10-class catalog gap detector + budget gate, real XML parser + canonical-form diff + content-pattern regression detection, Ed25519-signed.",
|
|
21
21
|
"licenses": [
|
|
22
22
|
{
|
|
@@ -25,17 +25,17 @@
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
],
|
|
28
|
-
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.14.
|
|
28
|
+
"purl": "pkg:npm/%40blamejs/exceptd-skills@0.14.12",
|
|
29
29
|
"hashes": [
|
|
30
30
|
{
|
|
31
31
|
"alg": "SHA-256",
|
|
32
|
-
"content": "
|
|
32
|
+
"content": "0c93edb6886bb6d399d389a24226d4baa22f7779ae3996d4d7fbcf0a6e5114d6"
|
|
33
33
|
}
|
|
34
34
|
],
|
|
35
35
|
"externalReferences": [
|
|
36
36
|
{
|
|
37
37
|
"type": "distribution",
|
|
38
|
-
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.14.
|
|
38
|
+
"url": "https://www.npmjs.com/package/@blamejs/exceptd-skills/v/0.14.12"
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"type": "vcs",
|
|
@@ -116,11 +116,11 @@
|
|
|
116
116
|
"hashes": [
|
|
117
117
|
{
|
|
118
118
|
"alg": "SHA-256",
|
|
119
|
-
"content": "
|
|
119
|
+
"content": "ddd5c86511d4ea2e2fa500a67bd5cb5e1111e1fb678d6715500f3ab8729ca2e1"
|
|
120
120
|
},
|
|
121
121
|
{
|
|
122
122
|
"alg": "SHA3-512",
|
|
123
|
-
"content": "
|
|
123
|
+
"content": "7a0dfecb42ade2ab79c7e5286c2612b644a5d044b22a9f662aaef40e9793c68d9d019ae93ba8a0f52ac9134e694b00216890bc430362561fbe5757ca31d19e0c"
|
|
124
124
|
}
|
|
125
125
|
]
|
|
126
126
|
},
|
|
@@ -281,11 +281,11 @@
|
|
|
281
281
|
"hashes": [
|
|
282
282
|
{
|
|
283
283
|
"alg": "SHA-256",
|
|
284
|
-
"content": "
|
|
284
|
+
"content": "3d755197adfee59c67dafc46dc19636a491e59986fa088d8b51daee75dfab19b"
|
|
285
285
|
},
|
|
286
286
|
{
|
|
287
287
|
"alg": "SHA3-512",
|
|
288
|
-
"content": "
|
|
288
|
+
"content": "cc3309521915ada4277a09dbe9c33c13510f0508e0e710b8b9a877ebcd5a2a79c3448a08aa8d96286ade6c2dc3ef357794afdbbfb62f8d2531d4bf46e2ee7d58"
|
|
289
289
|
}
|
|
290
290
|
]
|
|
291
291
|
},
|
|
@@ -1151,11 +1151,11 @@
|
|
|
1151
1151
|
"hashes": [
|
|
1152
1152
|
{
|
|
1153
1153
|
"alg": "SHA-256",
|
|
1154
|
-
"content": "
|
|
1154
|
+
"content": "1a3246aab91e2c51e24007f3ffa6cafba5edf366444b190a4d3160656555713e"
|
|
1155
1155
|
},
|
|
1156
1156
|
{
|
|
1157
1157
|
"alg": "SHA3-512",
|
|
1158
|
-
"content": "
|
|
1158
|
+
"content": "e1cf6956135578f1391ddd1e4776008af4dc11cfc431a7224599e058363ac0d7b4cc7d0ede816d144e38fedc5ebdd3bc39e46ff2e9e164b1a06f86cc496cbc83"
|
|
1159
1159
|
}
|
|
1160
1160
|
]
|
|
1161
1161
|
},
|
|
@@ -1316,11 +1316,11 @@
|
|
|
1316
1316
|
"hashes": [
|
|
1317
1317
|
{
|
|
1318
1318
|
"alg": "SHA-256",
|
|
1319
|
-
"content": "
|
|
1319
|
+
"content": "ce4e0915fd4a758891e1799055d7f21bfeb1c283950668fe125533008c551547"
|
|
1320
1320
|
},
|
|
1321
1321
|
{
|
|
1322
1322
|
"alg": "SHA3-512",
|
|
1323
|
-
"content": "
|
|
1323
|
+
"content": "e81350df04396a41caaa15f810011fecb50c7efc25dbd3b48133337295948d9c8e5839e9d744891e330b607e9c776710daea7ed1a7b04ff66b9b7b4330f5a15e"
|
|
1324
1324
|
}
|
|
1325
1325
|
]
|
|
1326
1326
|
},
|
|
@@ -1331,11 +1331,11 @@
|
|
|
1331
1331
|
"hashes": [
|
|
1332
1332
|
{
|
|
1333
1333
|
"alg": "SHA-256",
|
|
1334
|
-
"content": "
|
|
1334
|
+
"content": "fc9d13e98934b99981965e61affae0b03bffd8d8a0ee8f6fbb6cb8f33f2cadb5"
|
|
1335
1335
|
},
|
|
1336
1336
|
{
|
|
1337
1337
|
"alg": "SHA3-512",
|
|
1338
|
-
"content": "
|
|
1338
|
+
"content": "4053e54232a55090a53ff765f43bd7c389bdd8ff7d9458c123e1e297ee613f8ed007805588c3e1b6e3857db088d344077ba4d8889efb2129797708ef5f5b58f2"
|
|
1339
1339
|
}
|
|
1340
1340
|
]
|
|
1341
1341
|
},
|
|
@@ -1346,11 +1346,11 @@
|
|
|
1346
1346
|
"hashes": [
|
|
1347
1347
|
{
|
|
1348
1348
|
"alg": "SHA-256",
|
|
1349
|
-
"content": "
|
|
1349
|
+
"content": "afb6aabb94f1044694ffacf224daadfd644141d40f03ba20aa8112e3649734b9"
|
|
1350
1350
|
},
|
|
1351
1351
|
{
|
|
1352
1352
|
"alg": "SHA3-512",
|
|
1353
|
-
"content": "
|
|
1353
|
+
"content": "d613ac08b4761b55dc1660bd99de46ca9dc3f0d8d3ec0e67b6fd5987098a9b580f42d3e88134c57773c4c969bacd64ee5f48b2bb43cb1445b94e6a5afa0f3bd9"
|
|
1354
1354
|
}
|
|
1355
1355
|
]
|
|
1356
1356
|
},
|
|
@@ -1376,11 +1376,11 @@
|
|
|
1376
1376
|
"hashes": [
|
|
1377
1377
|
{
|
|
1378
1378
|
"alg": "SHA-256",
|
|
1379
|
-
"content": "
|
|
1379
|
+
"content": "e3a047373857e9da01b0f6558e57ae23a51fe28b6eabff4e8b7e1deb308a55d9"
|
|
1380
1380
|
},
|
|
1381
1381
|
{
|
|
1382
1382
|
"alg": "SHA3-512",
|
|
1383
|
-
"content": "
|
|
1383
|
+
"content": "d5d3270cfc1f46b6b01e052c051faa83b573958f3a79338bce87938e47c14c953c3b8da5549f2b92a6cf8acca43414800581da17dde0dedbbd82c6e2479a1f4a"
|
|
1384
1384
|
}
|
|
1385
1385
|
]
|
|
1386
1386
|
},
|
|
@@ -1421,11 +1421,11 @@
|
|
|
1421
1421
|
"hashes": [
|
|
1422
1422
|
{
|
|
1423
1423
|
"alg": "SHA-256",
|
|
1424
|
-
"content": "
|
|
1424
|
+
"content": "be6b9c21024d9a52dd5c9f57c47780257784bb61568e5f7f083217e2fe982eb4"
|
|
1425
1425
|
},
|
|
1426
1426
|
{
|
|
1427
1427
|
"alg": "SHA3-512",
|
|
1428
|
-
"content": "
|
|
1428
|
+
"content": "d503b8c2750f980eaf7a0305319dcec9baaead80f304fa231ee6308940feef2c64005cbcebde22996ce6423c06feb9f757e9e76cbc32a3d93905030428d16781"
|
|
1429
1429
|
}
|
|
1430
1430
|
]
|
|
1431
1431
|
},
|
|
@@ -1451,11 +1451,11 @@
|
|
|
1451
1451
|
"hashes": [
|
|
1452
1452
|
{
|
|
1453
1453
|
"alg": "SHA-256",
|
|
1454
|
-
"content": "
|
|
1454
|
+
"content": "a491b2b6ca35d75f7d3d27696d6ae20d1ee22ade22c507de7bfcfd4bbc4d8a8d"
|
|
1455
1455
|
},
|
|
1456
1456
|
{
|
|
1457
1457
|
"alg": "SHA3-512",
|
|
1458
|
-
"content": "
|
|
1458
|
+
"content": "a47ecd510b73942d64d5e81ad455a38bb174609c02df5f531cbc4ace198721bbf4006c126dc1d2d640e9a202ca0b302e59f58c24dc97a9d30efb6099d1ef7da4"
|
|
1459
1459
|
}
|
|
1460
1460
|
]
|
|
1461
1461
|
},
|
|
@@ -1631,11 +1631,11 @@
|
|
|
1631
1631
|
"hashes": [
|
|
1632
1632
|
{
|
|
1633
1633
|
"alg": "SHA-256",
|
|
1634
|
-
"content": "
|
|
1634
|
+
"content": "32ac5e60da442fd25a7283711c0caf23a0363c1b8e8dee5ce79c80a5f26d45c8"
|
|
1635
1635
|
},
|
|
1636
1636
|
{
|
|
1637
1637
|
"alg": "SHA3-512",
|
|
1638
|
-
"content": "
|
|
1638
|
+
"content": "ed6d8990737340ab604f7354b54b2662979b5b59f853ea53e216e9b17ab6bf73fc807f1dda5bf904ccaa4081d6ae7698f0f2f326292c7bc01d56adc694d7cace"
|
|
1639
1639
|
}
|
|
1640
1640
|
]
|
|
1641
1641
|
},
|
|
@@ -1751,11 +1751,11 @@
|
|
|
1751
1751
|
"hashes": [
|
|
1752
1752
|
{
|
|
1753
1753
|
"alg": "SHA-256",
|
|
1754
|
-
"content": "
|
|
1754
|
+
"content": "9dfc540e93aa24c5c61de5a568ac4ed94a21c04cddea458bb647c17ee3a4ec48"
|
|
1755
1755
|
},
|
|
1756
1756
|
{
|
|
1757
1757
|
"alg": "SHA3-512",
|
|
1758
|
-
"content": "
|
|
1758
|
+
"content": "30f7961d052a1c680d5eb52afa18a85a669e69591f6dabd19da3c795a4dab4f87c786d852ec08020262c742001abec1c03a45194c9c81077f263749927e6ece6"
|
|
1759
1759
|
}
|
|
1760
1760
|
]
|
|
1761
1761
|
},
|
|
@@ -1811,11 +1811,11 @@
|
|
|
1811
1811
|
"hashes": [
|
|
1812
1812
|
{
|
|
1813
1813
|
"alg": "SHA-256",
|
|
1814
|
-
"content": "
|
|
1814
|
+
"content": "4c9ec7d070014f0e1fac5958c1c995ca708df52b7f19c2a36c60573e7629d5b4"
|
|
1815
1815
|
},
|
|
1816
1816
|
{
|
|
1817
1817
|
"alg": "SHA3-512",
|
|
1818
|
-
"content": "
|
|
1818
|
+
"content": "f61247ab992bfa2c7ea073a1cf550b94b0a381363b88a23d3c716b154d840d3e28f1e58358ab87b7f264c81e6cd6357fe7d5d02e9f913f9748d62d5fa3b64116"
|
|
1819
1819
|
}
|
|
1820
1820
|
]
|
|
1821
1821
|
},
|