From 88120a85d57c35ce9d7a176ef6055e4cdaeb38ec Mon Sep 17 00:00:00 2001 From: m0ar Date: Wed, 17 Jan 2024 15:07:15 +0100 Subject: [PATCH] Deploying composites now build deterministic runtime files, imported to lib --- .github/workflows/publish.yml | 3 ++ package-lock.json | 5 +- packages/composedb/.gitignore | 2 - packages/composedb/package.json | 2 +- packages/composedb/scripts/composites.ts | 54 ++++++++++++++++--- .../composedb/src/__generated__/definition.js | 2 + .../src/__generated__/definition.json | 1 + packages/lib/package.json | 3 +- packages/lib/src/clients.ts | 7 ++- 9 files changed, 61 insertions(+), 18 deletions(-) delete mode 100644 packages/composedb/.gitignore create mode 100644 packages/composedb/src/__generated__/definition.js create mode 100644 packages/composedb/src/__generated__/definition.json diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 5efe544..42f883e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,6 +15,9 @@ jobs: check-latest: false registry-url: 'https://registry.npmjs.org' - run: npm ci + - run: npm --workspace packages/composedb publish --access public + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - run: npm --workspace packages/lib publish --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/package-lock.json b/package-lock.json index 9be32af..c40fb07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25807,7 +25807,7 @@ }, "packages/composedb": { "name": "@desci-labs/desci-codex-composedb", - "version": "1.0.0", + "version": "1.0.1", "license": "MIT", "dependencies": { "@composedb/types": "^0.6.0" @@ -25828,10 +25828,11 @@ }, "packages/lib": { "name": "@desci-labs/desci-codex-lib", - "version": "1.0.0", + "version": "1.0.2", "license": "MIT", "dependencies": { "@composedb/client": "^0.6.0", + "@desci-labs/desci-codex-composedb": "^1.0.1", "dids": "^4.0.4", "gql-query-builder": "^3.8.0", "graphql": "^16.8.0", diff --git a/packages/composedb/.gitignore b/packages/composedb/.gitignore deleted file mode 100644 index cd5ba07..0000000 --- a/packages/composedb/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -src/__generated__/* -!src/__generates__/*.d.ts diff --git a/packages/composedb/package.json b/packages/composedb/package.json index 71933a5..adf9ee6 100644 --- a/packages/composedb/package.json +++ b/packages/composedb/package.json @@ -1,6 +1,6 @@ { "name": "@desci-labs/desci-codex-composedb", - "version": "1.0.0", + "version": "1.0.1", "description": "ComposeDB models and scripts for Codex", "license": "MIT", "author": "Edvard Hübinette", diff --git a/packages/composedb/scripts/composites.ts b/packages/composedb/scripts/composites.ts index 7ae2203..af91fda 100644 --- a/packages/composedb/scripts/composites.ts +++ b/packages/composedb/scripts/composites.ts @@ -1,4 +1,4 @@ -import { readFileSync } from "fs"; +import { readFileSync, writeFileSync } from "fs"; import { CeramicClient } from "@ceramicnetwork/http-client"; import { createComposite, @@ -14,6 +14,8 @@ import { fromString } from "uint8arrays/from-string"; import { Ora } from "ora"; const ceramic = new CeramicClient("http://localhost:7007"); +const ENCODED_PATH = "./src/__generated__/definition.json"; +const ENCODED_RUNTIME_PATH = "./src/__generated__/definition.js"; type Models = { profile?: string; @@ -174,18 +176,19 @@ export const writeComposite = async (seed: string, spinner?: Ora) => { annotationComposite, ]); - await writeEncodedComposite(composite, "./src/__generated__/definition.json"); + await writeEncodedComposite(composite, ENCODED_PATH); spinner.info("creating composite for runtime usage"); await writeEncodedCompositeRuntime( ceramic, - "./src/__generated__/definition.json", - "./src/__generated__/definition.js", + ENCODED_PATH, + ENCODED_RUNTIME_PATH, ); + + // Fix non-determinism due to arbitrarily sorted keys in files + await orderCompositeFileKeys(); + spinner.info("deploying composite"); - const deployComposite = await readEncodedComposite( - ceramic, - "./src/__generated__/definition.json", - ); + const deployComposite = await readEncodedComposite(ceramic, ENCODED_PATH); await deployComposite.startIndexingOn(ceramic); spinner.succeed("composite deployed & ready for use"); @@ -204,6 +207,41 @@ const authenticateAdmin = async (seed: string): Promise => { await ceramic.setDID(did); }; +/** + * Repeated runs yield diffs in generated composite definition files, even + * if they are semantically the same, because the keys aren't serialized + * in order. This function fixes that, making it clear in git when they + * actually have changed. + */ +const orderCompositeFileKeys = async () => { + /* eslint-disable @typescript-eslint/no-explicit-any*/ + + /** + * Recursively order object keys to get deterministic serialization + * https://gist.github.com/davidfurlong/463a83a33b70a3b6618e97ec9679e490 + */ + const orderedReplacer = (_key: any, value: any) => + value instanceof Object && !(value instanceof Array) + ? Object.keys(value) + .sort() + .reduce((sorted, key) => { + sorted[key] = value[key]; + return sorted; + }, {} as any) + : value; + + const encoded = JSON.parse(readFileSync(ENCODED_PATH, { encoding: "ascii" })); + writeFileSync(ENCODED_PATH, JSON.stringify(encoded, orderedReplacer)); + + const { definition } = await import( + process.cwd() + "/" + ENCODED_RUNTIME_PATH + ); + const encoded_runtime_ordered = ` +export const definition = ${JSON.stringify(definition, orderedReplacer)} +`; + writeFileSync(ENCODED_RUNTIME_PATH, encoded_runtime_ordered); +}; + const runAsScript = process.argv[0].includes("/bin/node") && process.argv[1].includes("scripts/composites.ts"); diff --git a/packages/composedb/src/__generated__/definition.js b/packages/composedb/src/__generated__/definition.js new file mode 100644 index 0000000..48b8e78 --- /dev/null +++ b/packages/composedb/src/__generated__/definition.js @@ -0,0 +1,2 @@ + +export const definition = {"accountData":{"annotationList":{"name":"Annotation","type":"connection"},"attestationList":{"name":"Attestation","type":"connection"},"claimList":{"name":"Claim","type":"connection"},"contributorRelationList":{"name":"ContributorRelation","type":"connection"},"profile":{"name":"Profile","type":"node"},"referenceRelationList":{"name":"ReferenceRelation","type":"connection"},"researchComponentList":{"name":"ResearchComponent","type":"connection"},"researchFieldList":{"name":"ResearchField","type":"connection"},"researchFieldRelationList":{"name":"ResearchFieldRelation","type":"connection"},"researchObjectList":{"name":"ResearchObject","type":"connection"},"socialHandleList":{"name":"SocialHandle","type":"connection"}},"enums":{},"models":{"Annotation":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","implements":[],"interface":false},"Attestation":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","implements":[],"interface":false},"Claim":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6caxivwqgqtgt66jdqilz8bsrmrblzbd40b6owkzrjzdu8410ilj","implements":[],"interface":false},"ContributorRelation":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e","implements":[],"interface":false},"Profile":{"accountRelation":{"type":"single"},"id":"kjzl6hvfrbw6c6omw7r239e4s6wvz9rzi2gluse10qb19ohd2ogi2aly6ntqm98","implements":[],"interface":false},"ReferenceRelation":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h","implements":[],"interface":false},"ResearchComponent":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6c7hcwn0qb479irii3rd5wyeo566zagx9i6j0q39g04t5gqdtkj9","implements":[],"interface":false},"ResearchField":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6c61huauhlcd10j8amu4rtcejl9c2wuteu8obxd7rrjg3ubjz88t","implements":[],"interface":false},"ResearchFieldRelation":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho","implements":[],"interface":false},"ResearchObject":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46","implements":[],"interface":false},"SocialHandle":{"accountRelation":{"type":"list"},"id":"kjzl6hvfrbw6c5c4kdo5vb7evt577ioo3qquokfamj7cqvkh2uw7is2o0u60gxq","implements":[],"interface":false}},"objects":{"Annotation":{"claim":{"relation":{"model":"kjzl6hvfrbw6caxivwqgqtgt66jdqilz8bsrmrblzbd40b6owkzrjzdu8410ilj","property":"claimID","source":"document"},"type":"view","viewType":"relation"},"claimID":{"required":false,"type":"streamid"},"claimVersion":{"required":false,"type":"commitid"},"comment":{"required":true,"type":"string"},"dagNode":{"required":false,"type":"cid"},"locationOnFile":{"required":false,"type":"string"},"metadataPayload":{"required":false,"type":"cid"},"owner":{"type":"view","viewType":"documentAccount"},"pathToNode":{"required":false,"type":"string"},"replies":{"relation":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"targetID","source":"queryConnection"},"type":"view","viewType":"relation"},"replyCount":{"relation":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"targetID","source":"queryCount"},"type":"view","viewType":"relation"},"researchObject":{"relation":{"model":"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46","property":"researchObjectID","source":"document"},"type":"view","viewType":"relation"},"researchObjectID":{"required":true,"type":"streamid"},"researchObjectVersion":{"required":true,"type":"commitid"},"targetID":{"required":false,"type":"streamid"},"targetVersion":{"required":false,"type":"commitid"},"version":{"type":"view","viewType":"documentVersion"}},"Attestation":{"claim":{"relation":{"model":"kjzl6hvfrbw6caxivwqgqtgt66jdqilz8bsrmrblzbd40b6owkzrjzdu8410ilj","property":"claimID","source":"document"},"type":"view","viewType":"relation"},"claimID":{"required":true,"type":"streamid"},"claimVersion":{"required":true,"type":"commitid"},"owner":{"type":"view","viewType":"documentAccount"},"revoked":{"required":false,"type":"boolean"},"targetID":{"required":true,"type":"streamid"},"targetVersion":{"required":true,"type":"commitid"},"version":{"type":"view","viewType":"documentVersion"}},"Claim":{"annotationCount":{"relation":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"claimID","source":"queryCount"},"type":"view","viewType":"relation"},"annotations":{"relation":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"claimID","source":"queryConnection"},"type":"view","viewType":"relation"},"attestationCount":{"relation":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"claimID","source":"queryCount"},"type":"view","viewType":"relation"},"attestations":{"relation":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"claimID","source":"queryConnection"},"type":"view","viewType":"relation"},"badge":{"required":false,"type":"cid"},"description":{"required":true,"type":"string"},"owner":{"type":"view","viewType":"documentAccount"},"title":{"required":true,"type":"string"},"version":{"type":"view","viewType":"documentVersion"}},"ContributorRelation":{"contributor":{"relation":{"model":"kjzl6hvfrbw6c6omw7r239e4s6wvz9rzi2gluse10qb19ohd2ogi2aly6ntqm98","property":"contributorID","source":"document"},"type":"view","viewType":"relation"},"contributorID":{"required":false,"type":"streamid"},"fallbackInfo":{"required":false,"type":"string"},"owner":{"type":"view","viewType":"documentAccount"},"researchObject":{"relation":{"model":"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46","property":"researchObjectID","source":"document"},"type":"view","viewType":"relation"},"researchObjectID":{"required":true,"type":"streamid"},"researchObjectVersion":{"required":true,"type":"commitid"},"revoked":{"required":false,"type":"boolean"},"role":{"required":true,"type":"string"},"version":{"type":"view","viewType":"documentVersion"}},"Profile":{"contributionCount":{"relation":{"model":"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e","property":"contributorID","source":"queryCount"},"type":"view","viewType":"relation"},"contributions":{"relation":{"model":"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e","property":"contributorID","source":"queryConnection"},"type":"view","viewType":"relation"},"displayName":{"required":true,"type":"string"},"owner":{"type":"view","viewType":"documentAccount"},"publicKey":{"required":false,"type":"string"},"recievedAttestationCount":{"relation":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"targetID","source":"queryCount"},"type":"view","viewType":"relation"},"recievedAttestations":{"relation":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"targetID","source":"queryConnection"},"type":"view","viewType":"relation"},"version":{"type":"view","viewType":"documentVersion"}},"ReferenceRelation":{"from":{"relation":{"model":"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46","property":"fromID","source":"document"},"type":"view","viewType":"relation"},"fromID":{"required":true,"type":"streamid"},"fromVersion":{"required":true,"type":"commitid"},"owner":{"type":"view","viewType":"documentAccount"},"revoked":{"required":false,"type":"boolean"},"to":{"relation":{"model":"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46","property":"toID","source":"document"},"type":"view","viewType":"relation"},"toID":{"required":true,"type":"streamid"},"toVersion":{"required":true,"type":"commitid"},"version":{"type":"view","viewType":"documentVersion"}},"ResearchComponent":{"annotationCount":{"relation":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"targetID","source":"queryCount"},"type":"view","viewType":"relation"},"annotations":{"relation":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"targetID","source":"queryConnection"},"type":"view","viewType":"relation"},"dagNode":{"required":true,"type":"cid"},"metadata":{"required":false,"type":"cid"},"mimeType":{"required":true,"type":"string"},"name":{"required":true,"type":"string"},"owner":{"type":"view","viewType":"documentAccount"},"pathToNode":{"required":true,"type":"string"},"researchObject":{"relation":{"model":"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46","property":"researchObjectID","source":"document"},"type":"view","viewType":"relation"},"researchObjectID":{"required":true,"type":"streamid"},"researchObjectVersion":{"required":true,"type":"commitid"},"version":{"type":"view","viewType":"documentVersion"}},"ResearchField":{"owner":{"type":"view","viewType":"documentAccount"},"researchObjectCount":{"relation":{"model":"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho","property":"fieldID","source":"queryCount"},"type":"view","viewType":"relation"},"researchObjects":{"relation":{"model":"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho","property":"fieldID","source":"queryConnection"},"type":"view","viewType":"relation"},"title":{"required":true,"type":"string"},"version":{"type":"view","viewType":"documentVersion"}},"ResearchFieldRelation":{"field":{"relation":{"model":"kjzl6hvfrbw6c61huauhlcd10j8amu4rtcejl9c2wuteu8obxd7rrjg3ubjz88t","property":"fieldID","source":"document"},"type":"view","viewType":"relation"},"fieldID":{"required":true,"type":"streamid"},"owner":{"type":"view","viewType":"documentAccount"},"researchObject":{"relation":{"model":"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46","property":"researchObjectID","source":"document"},"type":"view","viewType":"relation"},"researchObjectID":{"required":true,"type":"streamid"},"researchObjectVersion":{"required":true,"type":"commitid"},"revoked":{"required":false,"type":"boolean"},"version":{"type":"view","viewType":"documentVersion"}},"ResearchObject":{"annotationCount":{"relation":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"researchObjectID","source":"queryCount"},"type":"view","viewType":"relation"},"annotations":{"relation":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"researchObjectID","source":"queryConnection"},"type":"view","viewType":"relation"},"attestationCount":{"relation":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"targetID","source":"queryCount"},"type":"view","viewType":"relation"},"attestations":{"relation":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"targetID","source":"queryConnection"},"type":"view","viewType":"relation"},"componentCount":{"relation":{"model":"kjzl6hvfrbw6c7hcwn0qb479irii3rd5wyeo566zagx9i6j0q39g04t5gqdtkj9","property":"researchObjectID","source":"queryCount"},"type":"view","viewType":"relation"},"components":{"relation":{"model":"kjzl6hvfrbw6c7hcwn0qb479irii3rd5wyeo566zagx9i6j0q39g04t5gqdtkj9","property":"researchObjectID","source":"queryConnection"},"type":"view","viewType":"relation"},"contributorCount":{"relation":{"model":"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e","property":"researchObjectID","source":"queryCount"},"type":"view","viewType":"relation"},"contributors":{"relation":{"model":"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e","property":"researchObjectID","source":"queryConnection"},"type":"view","viewType":"relation"},"incomingReferenceCount":{"relation":{"model":"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h","property":"toID","source":"queryCount"},"type":"view","viewType":"relation"},"incomingReferences":{"relation":{"model":"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h","property":"toID","source":"queryConnection"},"type":"view","viewType":"relation"},"manifest":{"required":true,"type":"cid"},"metadata":{"required":false,"type":"cid"},"outgoingReferenceCount":{"relation":{"model":"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h","property":"fromID","source":"queryCount"},"type":"view","viewType":"relation"},"outgoingReferences":{"relation":{"model":"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h","property":"fromID","source":"queryConnection"},"type":"view","viewType":"relation"},"owner":{"type":"view","viewType":"documentAccount"},"researchFields":{"relation":{"model":"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho","property":"researchObjectID","source":"queryConnection"},"type":"view","viewType":"relation"},"title":{"required":true,"type":"string"},"version":{"type":"view","viewType":"documentVersion"}},"SocialHandle":{"handle":{"required":true,"type":"string"},"owner":{"type":"view","viewType":"documentAccount"},"platform":{"required":true,"type":"string"},"version":{"type":"view","viewType":"documentVersion"}}}} diff --git a/packages/composedb/src/__generated__/definition.json b/packages/composedb/src/__generated__/definition.json new file mode 100644 index 0000000..88e063f --- /dev/null +++ b/packages/composedb/src/__generated__/definition.json @@ -0,0 +1 @@ +{"aliases":{"kjzl6hvfrbw6c5c4kdo5vb7evt577ioo3qquokfamj7cqvkh2uw7is2o0u60gxq":"SocialHandle","kjzl6hvfrbw6c61huauhlcd10j8amu4rtcejl9c2wuteu8obxd7rrjg3ubjz88t":"ResearchField","kjzl6hvfrbw6c6omw7r239e4s6wvz9rzi2gluse10qb19ohd2ogi2aly6ntqm98":"Profile","kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh":"Attestation","kjzl6hvfrbw6c7hcwn0qb479irii3rd5wyeo566zagx9i6j0q39g04t5gqdtkj9":"ResearchComponent","kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46":"ResearchObject","kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho":"ResearchFieldRelation","kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h":"ReferenceRelation","kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma":"Annotation","kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e":"ContributorRelation","kjzl6hvfrbw6caxivwqgqtgt66jdqilz8bsrmrblzbd40b6owkzrjzdu8410ilj":"Claim"},"commonEmbeds":[],"indices":{"kjzl6hvfrbw6c5c4kdo5vb7evt577ioo3qquokfamj7cqvkh2uw7is2o0u60gxq":[],"kjzl6hvfrbw6c61huauhlcd10j8amu4rtcejl9c2wuteu8obxd7rrjg3ubjz88t":[],"kjzl6hvfrbw6c6omw7r239e4s6wvz9rzi2gluse10qb19ohd2ogi2aly6ntqm98":[],"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh":[],"kjzl6hvfrbw6c7hcwn0qb479irii3rd5wyeo566zagx9i6j0q39g04t5gqdtkj9":[],"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46":[],"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho":[],"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h":[],"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma":[],"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e":[],"kjzl6hvfrbw6caxivwqgqtgt66jdqilz8bsrmrblzbd40b6owkzrjzdu8410ilj":[]},"models":{"kjzl6hvfrbw6c5c4kdo5vb7evt577ioo3qquokfamj7cqvkh2uw7is2o0u60gxq":[{"jws":{"link":"bafyreibmn65i2nuvzwo7tnkeckupgc6lywjukfyv5pl433duyrutdpxn7e","payload":"AXESICxvuo02lc2d-bVEEqjzC8vFk0UXFevXzex0xGkxvu35","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"AwqyPT2n0uGSHLw4NTYoD4m13kZNKzw2LKIcyXGeiNTARN-WlMfGNTgvRaguYzaVZMj52YJr2zjmG_PjFOiuDQ"}]},"linkedBlock":"omRkYXRhqWRuYW1lbFNvY2lhbEhhbmRsZWV2aWV3c6Jlb3duZXKhZHR5cGVvZG9jdW1lbnRBY2NvdW50Z3ZlcnNpb26hZHR5cGVvZG9jdW1lbnRWZXJzaW9uZnNjaGVtYaVkdHlwZWZvYmplY3RnJHNjaGVtYXgsaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWFocmVxdWlyZWSCaHBsYXRmb3JtZmhhbmRsZWpwcm9wZXJ0aWVzomZoYW5kbGWiZHR5cGVmc3RyaW5naW1heExlbmd0aBkBAGhwbGF0Zm9ybaJkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQEAdGFkZGl0aW9uYWxQcm9wZXJ0aWVz9Gd2ZXJzaW9uYzIuMGlpbnRlcmZhY2X0aXJlbGF0aW9uc6BqaW1wbGVtZW50c4BrZGVzY3JpcHRpb254IkEgc29jaWFsIGhhbmRsZSBvbiBvdGhlciBwbGF0Zm9ybXNvYWNjb3VudFJlbGF0aW9uoWR0eXBlZGxpc3RmaGVhZGVyo2NzZXBlbW9kZWxlbW9kZWxSzgEEAXFxCwAJaG1vZGVsLXYxa2NvbnRyb2xsZXJzgXg4ZGlkOmtleTp6Nk1rdGJLSnJNbmhWSjM3UUZUbzEyOTExeWNtMmp1S0RVeldIRFZFVHU5czVhOVQ="}],"kjzl6hvfrbw6c61huauhlcd10j8amu4rtcejl9c2wuteu8obxd7rrjg3ubjz88t":[{"jws":{"link":"bafyreibk5nbzfxittahv3i27jecsgno25filsm56vzurkrivoohmtkn7vq","payload":"AXESICrrQ5LdE5gPXaNfSQUjNdrpULkzvq5pFUUVc47Jqb-s","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"ORBMpJjYfhO4QL-j04JIgsNxTQ2AnpFS1b_8fo6OAjBQ11zgOQKHfipiPzwq9-CE8nxDv7EGWxfiRyJaqPnaCQ"}]},"linkedBlock":"omRkYXRhqWRuYW1lbVJlc2VhcmNoRmllbGRldmlld3OiZW93bmVyoWR0eXBlb2RvY3VtZW50QWNjb3VudGd2ZXJzaW9uoWR0eXBlb2RvY3VtZW50VmVyc2lvbmZzY2hlbWGlZHR5cGVmb2JqZWN0ZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkgWV0aXRsZWpwcm9wZXJ0aWVzoWV0aXRsZaJkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQEAdGFkZGl0aW9uYWxQcm9wZXJ0aWVz9Gd2ZXJzaW9uYzIuMGlpbnRlcmZhY2X0aXJlbGF0aW9uc6BqaW1wbGVtZW50c4BrZGVzY3JpcHRpb254HkEgcGFydGljdWxhciBmaWVsZCBvZiByZXNlYXJjaG9hY2NvdW50UmVsYXRpb26hZHR5cGVkbGlzdGZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VA=="}],"kjzl6hvfrbw6c6omw7r239e4s6wvz9rzi2gluse10qb19ohd2ogi2aly6ntqm98":[{"jws":{"link":"bafyreicdbyjhpsebea4g2m6scgih27y5e4s45hidvm2o3hi7ufbrvp2woa","payload":"AXESIEMOEnfIgSA4bTPSEZB9fx0nJc6dA6s07Z0foUMav1Zw","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"hD-ZOcKWbTEyPnOuLOphAXHajNnBhywtnf-7d8NAKvo3S919VWSFx6Dex6X0DBYXMkMZ2_RDSBTDbFyKW4HUCQ"}]},"linkedBlock":"omRkYXRhqWRuYW1lZ1Byb2ZpbGVldmlld3OiZW93bmVyoWR0eXBlb2RvY3VtZW50QWNjb3VudGd2ZXJzaW9uoWR0eXBlb2RvY3VtZW50VmVyc2lvbmZzY2hlbWGlZHR5cGVmb2JqZWN0ZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkgWtkaXNwbGF5TmFtZWpwcm9wZXJ0aWVzomlwdWJsaWNLZXmiZHR5cGVmc3RyaW5naW1heExlbmd0aBkCAGtkaXNwbGF5TmFtZaJkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQEAdGFkZGl0aW9uYWxQcm9wZXJ0aWVz9Gd2ZXJzaW9uYzIuMGlpbnRlcmZhY2X0aXJlbGF0aW9uc6BqaW1wbGVtZW50c4BrZGVzY3JpcHRpb25xQW4gYXV0aG9yIHByb2ZpbGVvYWNjb3VudFJlbGF0aW9uoWR0eXBlZnNpbmdsZWZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VA=="}],"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh":[{"jws":{"link":"bafyreib55qtf3wtdwbvmj7rpcjdxjqcqp2s26xulrtb67x3dakpdi534nu","payload":"AXESID3sJl3aY7BqxP4vEkd0wFB-pa9ei4zD799jAp40d3xt","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"Gz6U8QasxhVmjDoN7HqN6z8vuIYVIlgiy2uLlgFSNvHKC1wQSIPFZPKhdnCztH-gXsYOJQkO0qVk0R5PE664Aw"}]},"linkedBlock":"omRkYXRhqWRuYW1la0F0dGVzdGF0aW9uZXZpZXdzo2VjbGFpbaNkdHlwZXByZWxhdGlvbkRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjYXhpdndxZ3F0Z3Q2NmpkcWlsejhic3JtcmJsemJkNDBiNm93a3pyanpkdTg0MTBpbGpocHJvcGVydHlnY2xhaW1JRGVvd25lcqFkdHlwZW9kb2N1bWVudEFjY291bnRndmVyc2lvbqFkdHlwZW9kb2N1bWVudFZlcnNpb25mc2NoZW1hpmR0eXBlZm9iamVjdGUkZGVmc6JvQ2VyYW1pY0NvbW1pdElEo2R0eXBlZnN0cmluZ2V0aXRsZW9DZXJhbWljQ29tbWl0SURpbWF4TGVuZ3RoGMhvQ2VyYW1pY1N0cmVhbUlEo2R0eXBlZnN0cmluZ2V0aXRsZW9DZXJhbWljU3RyZWFtSURpbWF4TGVuZ3RoGGRnJHNjaGVtYXgsaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWFocmVxdWlyZWSEaHRhcmdldElEbXRhcmdldFZlcnNpb25nY2xhaW1JRGxjbGFpbVZlcnNpb25qcHJvcGVydGllc6VnY2xhaW1JRKFkJHJlZncjLyRkZWZzL0NlcmFtaWNTdHJlYW1JRGdyZXZva2VkoWR0eXBlZ2Jvb2xlYW5odGFyZ2V0SUShZCRyZWZ3Iy8kZGVmcy9DZXJhbWljU3RyZWFtSURsY2xhaW1WZXJzaW9uoWQkcmVmdyMvJGRlZnMvQ2VyYW1pY0NvbW1pdElEbXRhcmdldFZlcnNpb26hZCRyZWZ3Iy8kZGVmcy9DZXJhbWljQ29tbWl0SUR0YWRkaXRpb25hbFByb3BlcnRpZXP0Z3ZlcnNpb25jMi4waWludGVyZmFjZfRpcmVsYXRpb25zoWdjbGFpbUlEomR0eXBlaGRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjYXhpdndxZ3F0Z3Q2NmpkcWlsejhic3JtcmJsemJkNDBiNm93a3pyanpkdTg0MTBpbGpqaW1wbGVtZW50c4BrZGVzY3JpcHRpb25zR2VuZXJhbCBhdHRlc3RhdGlvbm9hY2NvdW50UmVsYXRpb26hZHR5cGVkbGlzdGZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VA=="}],"kjzl6hvfrbw6c7hcwn0qb479irii3rd5wyeo566zagx9i6j0q39g04t5gqdtkj9":[{"jws":{"link":"bafyreiea4govt6kireqdff4dexroo6iip2qtaeix4e542wkox5azezj64e","payload":"AXESIIDhnVn5SIkgMpeDJeLneQh-oTARF-E7zVlOv0GSZT7h","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"afJxrK8vi05EgEOf4_oDxRN8Ai5ZObFP0zS3lKxhwrlXg5rDOBzBSi_dKDltIdTgtAGDnI1SVAdjPf9LZilNAw"}]},"linkedBlock":"omRkYXRhqWRuYW1lcVJlc2VhcmNoQ29tcG9uZW50ZXZpZXdzo2Vvd25lcqFkdHlwZW9kb2N1bWVudEFjY291bnRndmVyc2lvbqFkdHlwZW9kb2N1bWVudFZlcnNpb25ucmVzZWFyY2hPYmplY3SjZHR5cGVwcmVsYXRpb25Eb2N1bWVudGVtb2RlbHg/a2p6bDZodmZyYnc2YzdpMGZqeTAxem5yNHJ4ajdkcW4zem1zenA0cDF6OWc3YWk2Y3duc3VtMGJhOWl2bjQ2aHByb3BlcnR5cHJlc2VhcmNoT2JqZWN0SURmc2NoZW1hpmR0eXBlZm9iamVjdGUkZGVmc6NvQ2VyYW1pY0NvbW1pdElEo2R0eXBlZnN0cmluZ2V0aXRsZW9DZXJhbWljQ29tbWl0SURpbWF4TGVuZ3RoGMhvQ2VyYW1pY1N0cmVhbUlEo2R0eXBlZnN0cmluZ2V0aXRsZW9DZXJhbWljU3RyZWFtSURpbWF4TGVuZ3RoGGRxSW50ZXJQbGFuZXRhcnlDSUSjZHR5cGVmc3RyaW5nZXRpdGxlcUludGVyUGxhbmV0YXJ5Q0lEaW1heExlbmd0aBhkZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkhmRuYW1laG1pbWVUeXBlZ2RhZ05vZGVqcGF0aFRvTm9kZXByZXNlYXJjaE9iamVjdElEdXJlc2VhcmNoT2JqZWN0VmVyc2lvbmpwcm9wZXJ0aWVzp2RuYW1lomR0eXBlZnN0cmluZ2ltYXhMZW5ndGgZAgBnZGFnTm9kZaFkJHJlZngZIy8kZGVmcy9JbnRlclBsYW5ldGFyeUNJRGhtZXRhZGF0YaFkJHJlZngZIy8kZGVmcy9JbnRlclBsYW5ldGFyeUNJRGhtaW1lVHlwZaJkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGIBqcGF0aFRvTm9kZaJkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQIAcHJlc2VhcmNoT2JqZWN0SUShZCRyZWZ3Iy8kZGVmcy9DZXJhbWljU3RyZWFtSUR1cmVzZWFyY2hPYmplY3RWZXJzaW9uoWQkcmVmdyMvJGRlZnMvQ2VyYW1pY0NvbW1pdElEdGFkZGl0aW9uYWxQcm9wZXJ0aWVz9Gd2ZXJzaW9uYzIuMGlpbnRlcmZhY2X0aXJlbGF0aW9uc6FwcmVzZWFyY2hPYmplY3RJRKJkdHlwZWhkb2N1bWVudGVtb2RlbHg/a2p6bDZodmZyYnc2YzdpMGZqeTAxem5yNHJ4ajdkcW4zem1zenA0cDF6OWc3YWk2Y3duc3VtMGJhOWl2bjQ2amltcGxlbWVudHOAa2Rlc2NyaXB0aW9ueDJBIGNvbnRleHR1YWxpemVkIERBRyBwb2ludGVyIGZvciBhIHJlc2VhcmNoIG9iamVjdG9hY2NvdW50UmVsYXRpb26hZHR5cGVkbGlzdGZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VA=="}],"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46":[{"jws":{"link":"bafyreidezz4vzpfe5scftksi54wvciyxwvbgtkkmvqardu22lgx64pzrc4","payload":"AXESIGTOeVy8pOyEWapI7y1RIxe1QmmpTKwBEdNaWa_uPzEX","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"3MiDLCJ37xYkH7GRxKK60ey_nGV9XR5QB7ocOcqTHycMkLj_JTnxwkhZqWNg9zm7SdFGRZckoVZM0hizY842Ag"}]},"linkedBlock":"omRkYXRhqWRuYW1lblJlc2VhcmNoT2JqZWN0ZXZpZXdzomVvd25lcqFkdHlwZW9kb2N1bWVudEFjY291bnRndmVyc2lvbqFkdHlwZW9kb2N1bWVudFZlcnNpb25mc2NoZW1hpmR0eXBlZm9iamVjdGUkZGVmc6FxSW50ZXJQbGFuZXRhcnlDSUSjZHR5cGVmc3RyaW5nZXRpdGxlcUludGVyUGxhbmV0YXJ5Q0lEaW1heExlbmd0aBhkZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkgmV0aXRsZWhtYW5pZmVzdGpwcm9wZXJ0aWVzo2V0aXRsZaJkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGPpobWFuaWZlc3ShZCRyZWZ4GSMvJGRlZnMvSW50ZXJQbGFuZXRhcnlDSURobWV0YWRhdGGhZCRyZWZ4GSMvJGRlZnMvSW50ZXJQbGFuZXRhcnlDSUR0YWRkaXRpb25hbFByb3BlcnRpZXP0Z3ZlcnNpb25jMi4waWludGVyZmFjZfRpcmVsYXRpb25zoGppbXBsZW1lbnRzgGtkZXNjcmlwdGlvbnFBIHJlc2VhcmNoIG9iamVjdG9hY2NvdW50UmVsYXRpb26hZHR5cGVkbGlzdGZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VA=="}],"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho":[{"jws":{"link":"bafyreigteffhybywslip4airp7jvwjhvqva7t4xygljcbkik3inhr77sfm","payload":"AXESINMhSnwHFpLQ_gERf9NbJPWFQfny-DLSIKkK2hp4__Ir","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"8o_EgazqIuVbJVElcXS7GxDK6DHFcIwd4uOAMlolv1g5Ps796LdVkOmqCCijjrYWZzA-ND2e78e6KGBv2K9qAQ"}]},"linkedBlock":"omRkYXRhqWRuYW1ldVJlc2VhcmNoRmllbGRSZWxhdGlvbmV2aWV3c6RlZmllbGSjZHR5cGVwcmVsYXRpb25Eb2N1bWVudGVtb2RlbHg/a2p6bDZodmZyYnc2YzYxaHVhdWhsY2QxMGo4YW11NHJ0Y2VqbDljMnd1dGV1OG9ieGQ3cnJqZzN1Ymp6ODh0aHByb3BlcnR5Z2ZpZWxkSURlb3duZXKhZHR5cGVvZG9jdW1lbnRBY2NvdW50Z3ZlcnNpb26hZHR5cGVvZG9jdW1lbnRWZXJzaW9ubnJlc2VhcmNoT2JqZWN0o2R0eXBlcHJlbGF0aW9uRG9jdW1lbnRlbW9kZWx4P2tqemw2aHZmcmJ3NmM3aTBmankwMXpucjRyeGo3ZHFuM3ptc3pwNHAxejlnN2FpNmN3bnN1bTBiYTlpdm40Nmhwcm9wZXJ0eXByZXNlYXJjaE9iamVjdElEZnNjaGVtYaZkdHlwZWZvYmplY3RlJGRlZnOib0NlcmFtaWNDb21taXRJRKNkdHlwZWZzdHJpbmdldGl0bGVvQ2VyYW1pY0NvbW1pdElEaW1heExlbmd0aBjIb0NlcmFtaWNTdHJlYW1JRKNkdHlwZWZzdHJpbmdldGl0bGVvQ2VyYW1pY1N0cmVhbUlEaW1heExlbmd0aBhkZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkg3ByZXNlYXJjaE9iamVjdElEdXJlc2VhcmNoT2JqZWN0VmVyc2lvbmdmaWVsZElEanByb3BlcnRpZXOkZ2ZpZWxkSUShZCRyZWZ3Iy8kZGVmcy9DZXJhbWljU3RyZWFtSURncmV2b2tlZKFkdHlwZWdib29sZWFucHJlc2VhcmNoT2JqZWN0SUShZCRyZWZ3Iy8kZGVmcy9DZXJhbWljU3RyZWFtSUR1cmVzZWFyY2hPYmplY3RWZXJzaW9uoWQkcmVmdyMvJGRlZnMvQ2VyYW1pY0NvbW1pdElEdGFkZGl0aW9uYWxQcm9wZXJ0aWVz9Gd2ZXJzaW9uYzIuMGlpbnRlcmZhY2X0aXJlbGF0aW9uc6JnZmllbGRJRKJkdHlwZWhkb2N1bWVudGVtb2RlbHg/a2p6bDZodmZyYnc2YzYxaHVhdWhsY2QxMGo4YW11NHJ0Y2VqbDljMnd1dGV1OG9ieGQ3cnJqZzN1Ymp6ODh0cHJlc2VhcmNoT2JqZWN0SUSiZHR5cGVoZG9jdW1lbnRlbW9kZWx4P2tqemw2aHZmcmJ3NmM3aTBmankwMXpucjRyeGo3ZHFuM3ptc3pwNHAxejlnN2FpNmN3bnN1bTBiYTlpdm40NmppbXBsZW1lbnRzgGtkZXNjcmlwdGlvbngxQXNzb2NpYXRpb24gYmV0d2VlbiBhIHJlc2VhcmNoIG9iamVjdCBhbmQgYSBmaWVsZG9hY2NvdW50UmVsYXRpb26hZHR5cGVkbGlzdGZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VA=="}],"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h":[{"jws":{"link":"bafyreiegbp7gcocvzjavnjugt2435iavlm4i7ucgrfynly7mzsbpcw6j5e","payload":"AXESIIYL_mE4VcpBVqaGnrm-oBVbOI_QRolw1ePszILxW8np","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"81Ypb9auuwc7KuDS3GvH9-znbg9Gj5y6hnWVWJfKBJR7XhlmzM4WVjU3RaugzMXzppMV1p3B1hn7oQh-gLJrCw"}]},"linkedBlock":"omRkYXRhqWRuYW1lcVJlZmVyZW5jZVJlbGF0aW9uZXZpZXdzpGJ0b6NkdHlwZXByZWxhdGlvbkRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjN2kwZmp5MDF6bnI0cnhqN2RxbjN6bXN6cDRwMXo5ZzdhaTZjd25zdW0wYmE5aXZuNDZocHJvcGVydHlkdG9JRGRmcm9to2R0eXBlcHJlbGF0aW9uRG9jdW1lbnRlbW9kZWx4P2tqemw2aHZmcmJ3NmM3aTBmankwMXpucjRyeGo3ZHFuM3ptc3pwNHAxejlnN2FpNmN3bnN1bTBiYTlpdm40Nmhwcm9wZXJ0eWZmcm9tSURlb3duZXKhZHR5cGVvZG9jdW1lbnRBY2NvdW50Z3ZlcnNpb26hZHR5cGVvZG9jdW1lbnRWZXJzaW9uZnNjaGVtYaZkdHlwZWZvYmplY3RlJGRlZnOib0NlcmFtaWNDb21taXRJRKNkdHlwZWZzdHJpbmdldGl0bGVvQ2VyYW1pY0NvbW1pdElEaW1heExlbmd0aBjIb0NlcmFtaWNTdHJlYW1JRKNkdHlwZWZzdHJpbmdldGl0bGVvQ2VyYW1pY1N0cmVhbUlEaW1heExlbmd0aBhkZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkhGZmcm9tSURrZnJvbVZlcnNpb25kdG9JRGl0b1ZlcnNpb25qcHJvcGVydGllc6VkdG9JRKFkJHJlZncjLyRkZWZzL0NlcmFtaWNTdHJlYW1JRGZmcm9tSUShZCRyZWZ3Iy8kZGVmcy9DZXJhbWljU3RyZWFtSURncmV2b2tlZKFkdHlwZWdib29sZWFuaXRvVmVyc2lvbqFkJHJlZncjLyRkZWZzL0NlcmFtaWNDb21taXRJRGtmcm9tVmVyc2lvbqFkJHJlZncjLyRkZWZzL0NlcmFtaWNDb21taXRJRHRhZGRpdGlvbmFsUHJvcGVydGllc/RndmVyc2lvbmMyLjBpaW50ZXJmYWNl9GlyZWxhdGlvbnOiZHRvSUSiZHR5cGVoZG9jdW1lbnRlbW9kZWx4P2tqemw2aHZmcmJ3NmM3aTBmankwMXpucjRyeGo3ZHFuM3ptc3pwNHAxejlnN2FpNmN3bnN1bTBiYTlpdm40NmZmcm9tSUSiZHR5cGVoZG9jdW1lbnRlbW9kZWx4P2tqemw2aHZmcmJ3NmM3aTBmankwMXpucjRyeGo3ZHFuM3ptc3pwNHAxejlnN2FpNmN3bnN1bTBiYTlpdm40NmppbXBsZW1lbnRzgGtkZXNjcmlwdGlvbngtSW5kaWNhdGUgYSByZWZlcmVuY2UgYmV0d2VlbiByZXNlYXJjaCBvYmplY3Rzb2FjY291bnRSZWxhdGlvbqFkdHlwZWRsaXN0ZmhlYWRlcqNjc2VwZW1vZGVsZW1vZGVsUs4BBAFxcQsACWhtb2RlbC12MWtjb250cm9sbGVyc4F4OGRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlU"}],"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma":[{"jws":{"link":"bafyreicw6vt2whszjuaegijg3pxgynx4mtixjrcmc3hf5fu5vtdfggcvn4","payload":"AXESIFb1Z6seWU0AQyEm2-5sNvxk0XTETBbOXpadrMZTGFVv","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"AB-VSvjFRHmFvvGW_4ta2lLq0c9VX9JFm2JFJf71E3Jo72p1kMgFEF1fq7JMOnHWCqQXnWP3nPFxLlfP32ytAA"}]},"linkedBlock":"omRkYXRhqWRuYW1lakFubm90YXRpb25ldmlld3OkZWNsYWlto2R0eXBlcHJlbGF0aW9uRG9jdW1lbnRlbW9kZWx4P2tqemw2aHZmcmJ3NmNheGl2d3FncXRndDY2amRxaWx6OGJzcm1yYmx6YmQ0MGI2b3drenJqemR1ODQxMGlsamhwcm9wZXJ0eWdjbGFpbUlEZW93bmVyoWR0eXBlb2RvY3VtZW50QWNjb3VudGd2ZXJzaW9uoWR0eXBlb2RvY3VtZW50VmVyc2lvbm5yZXNlYXJjaE9iamVjdKNkdHlwZXByZWxhdGlvbkRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjN2kwZmp5MDF6bnI0cnhqN2RxbjN6bXN6cDRwMXo5ZzdhaTZjd25zdW0wYmE5aXZuNDZocHJvcGVydHlwcmVzZWFyY2hPYmplY3RJRGZzY2hlbWGmZHR5cGVmb2JqZWN0ZSRkZWZzo29DZXJhbWljQ29tbWl0SUSjZHR5cGVmc3RyaW5nZXRpdGxlb0NlcmFtaWNDb21taXRJRGltYXhMZW5ndGgYyG9DZXJhbWljU3RyZWFtSUSjZHR5cGVmc3RyaW5nZXRpdGxlb0NlcmFtaWNTdHJlYW1JRGltYXhMZW5ndGgYZHFJbnRlclBsYW5ldGFyeUNJRKNkdHlwZWZzdHJpbmdldGl0bGVxSW50ZXJQbGFuZXRhcnlDSURpbWF4TGVuZ3RoGGRnJHNjaGVtYXgsaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWFocmVxdWlyZWSDZ2NvbW1lbnRwcmVzZWFyY2hPYmplY3RJRHVyZXNlYXJjaE9iamVjdFZlcnNpb25qcHJvcGVydGllc6tnY2xhaW1JRKFkJHJlZncjLyRkZWZzL0NlcmFtaWNTdHJlYW1JRGdjb21tZW50omR0eXBlZnN0cmluZ2ltYXhMZW5ndGgZBABnZGFnTm9kZaFkJHJlZngZIy8kZGVmcy9JbnRlclBsYW5ldGFyeUNJRGh0YXJnZXRJRKFkJHJlZncjLyRkZWZzL0NlcmFtaWNTdHJlYW1JRGpwYXRoVG9Ob2RlomR0eXBlZnN0cmluZ2ltYXhMZW5ndGgZAgBsY2xhaW1WZXJzaW9uoWQkcmVmdyMvJGRlZnMvQ2VyYW1pY0NvbW1pdElEbXRhcmdldFZlcnNpb26hZCRyZWZ3Iy8kZGVmcy9DZXJhbWljQ29tbWl0SURubG9jYXRpb25PbkZpbGWiZHR5cGVmc3RyaW5naW1heExlbmd0aBkCAG9tZXRhZGF0YVBheWxvYWShZCRyZWZ4GSMvJGRlZnMvSW50ZXJQbGFuZXRhcnlDSURwcmVzZWFyY2hPYmplY3RJRKFkJHJlZncjLyRkZWZzL0NlcmFtaWNTdHJlYW1JRHVyZXNlYXJjaE9iamVjdFZlcnNpb26hZCRyZWZ3Iy8kZGVmcy9DZXJhbWljQ29tbWl0SUR0YWRkaXRpb25hbFByb3BlcnRpZXP0Z3ZlcnNpb25jMi4waWludGVyZmFjZfRpcmVsYXRpb25zomdjbGFpbUlEomR0eXBlaGRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjYXhpdndxZ3F0Z3Q2NmpkcWlsejhic3JtcmJsemJkNDBiNm93a3pyanpkdTg0MTBpbGpwcmVzZWFyY2hPYmplY3RJRKJkdHlwZWhkb2N1bWVudGVtb2RlbHg/a2p6bDZodmZyYnc2YzdpMGZqeTAxem5yNHJ4ajdkcW4zem1zenA0cDF6OWc3YWk2Y3duc3VtMGJhOWl2bjQ2amltcGxlbWVudHOAa2Rlc2NyaXB0aW9uclRleHR1YWwgY29tbWVudGFyeW9hY2NvdW50UmVsYXRpb26hZHR5cGVkbGlzdGZoZWFkZXKjY3NlcGVtb2RlbGVtb2RlbFLOAQQBcXELAAlobW9kZWwtdjFrY29udHJvbGxlcnOBeDhkaWQ6a2V5Ono2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VA=="}],"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e":[{"jws":{"link":"bafyreigxqmwegoxf4qymg4v73gy7x32tlcp4pfgwpqx3bjhapkivxb7kpe","payload":"AXESINeDLEM65eQww3K_2bH771NYn8eU1nwvsKTgepFbh-p5","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"LM69sj34dm_pvdPVoFTw46bsF7BYgJ02YbLE44td1LfInE1Mdq4SI-1BDeG3MLluWXUhytoQ17kXAm413x_aDw"}]},"linkedBlock":"omRkYXRhqWRuYW1lc0NvbnRyaWJ1dG9yUmVsYXRpb25ldmlld3OkZW93bmVyoWR0eXBlb2RvY3VtZW50QWNjb3VudGd2ZXJzaW9uoWR0eXBlb2RvY3VtZW50VmVyc2lvbmtjb250cmlidXRvcqNkdHlwZXByZWxhdGlvbkRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjNm9tdzdyMjM5ZTRzNnd2ejlyemkyZ2x1c2UxMHFiMTlvaGQyb2dpMmFseTZudHFtOThocHJvcGVydHltY29udHJpYnV0b3JJRG5yZXNlYXJjaE9iamVjdKNkdHlwZXByZWxhdGlvbkRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjN2kwZmp5MDF6bnI0cnhqN2RxbjN6bXN6cDRwMXo5ZzdhaTZjd25zdW0wYmE5aXZuNDZocHJvcGVydHlwcmVzZWFyY2hPYmplY3RJRGZzY2hlbWGmZHR5cGVmb2JqZWN0ZSRkZWZzom9DZXJhbWljQ29tbWl0SUSjZHR5cGVmc3RyaW5nZXRpdGxlb0NlcmFtaWNDb21taXRJRGltYXhMZW5ndGgYyG9DZXJhbWljU3RyZWFtSUSjZHR5cGVmc3RyaW5nZXRpdGxlb0NlcmFtaWNTdHJlYW1JRGltYXhMZW5ndGgYZGckc2NoZW1heCxodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL3NjaGVtYWhyZXF1aXJlZINkcm9sZXByZXNlYXJjaE9iamVjdElEdXJlc2VhcmNoT2JqZWN0VmVyc2lvbmpwcm9wZXJ0aWVzpmRyb2xlomR0eXBlZnN0cmluZ2ltYXhMZW5ndGgZAQBncmV2b2tlZKFkdHlwZWdib29sZWFubGZhbGxiYWNrSW5mb6JkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGQQAbWNvbnRyaWJ1dG9ySUShZCRyZWZ3Iy8kZGVmcy9DZXJhbWljU3RyZWFtSURwcmVzZWFyY2hPYmplY3RJRKFkJHJlZncjLyRkZWZzL0NlcmFtaWNTdHJlYW1JRHVyZXNlYXJjaE9iamVjdFZlcnNpb26hZCRyZWZ3Iy8kZGVmcy9DZXJhbWljQ29tbWl0SUR0YWRkaXRpb25hbFByb3BlcnRpZXP0Z3ZlcnNpb25jMi4waWludGVyZmFjZfRpcmVsYXRpb25zom1jb250cmlidXRvcklEomR0eXBlaGRvY3VtZW50ZW1vZGVseD9ranpsNmh2ZnJidzZjNm9tdzdyMjM5ZTRzNnd2ejlyemkyZ2x1c2UxMHFiMTlvaGQyb2dpMmFseTZudHFtOThwcmVzZWFyY2hPYmplY3RJRKJkdHlwZWhkb2N1bWVudGVtb2RlbHg/a2p6bDZodmZyYnc2YzdpMGZqeTAxem5yNHJ4ajdkcW4zem1zenA0cDF6OWc3YWk2Y3duc3VtMGJhOWl2bjQ2amltcGxlbWVudHOAa2Rlc2NyaXB0aW9ueCdMaXN0IGEgY29udHJpYnV0b3Igb24gYSByZXNlYXJjaCBvYmplY3RvYWNjb3VudFJlbGF0aW9uoWR0eXBlZGxpc3RmaGVhZGVyo2NzZXBlbW9kZWxlbW9kZWxSzgEEAXFxCwAJaG1vZGVsLXYxa2NvbnRyb2xsZXJzgXg4ZGlkOmtleTp6Nk1rdGJLSnJNbmhWSjM3UUZUbzEyOTExeWNtMmp1S0RVeldIRFZFVHU5czVhOVQ="}],"kjzl6hvfrbw6caxivwqgqtgt66jdqilz8bsrmrblzbd40b6owkzrjzdu8410ilj":[{"jws":{"link":"bafyreiamwxwjvvcd4tfsr2hckdgj7ogkhfverhxzgcnyz5o5w7a7lysl6a","payload":"AXESIAy17JrUQ-TLKOjiUMyfuMo5akie-TCbjPXdt8H14kvw","signatures":[{"protected":"eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlUI3o2TWt0YktKck1uaFZKMzdRRlRvMTI5MTF5Y20yanVLRFV6V0hEVkVUdTlzNWE5VCJ9","signature":"83cxabZO9UhjXCGhP8piW2VSuNcL9zp1rdCH_Xblhe3-T6Vv6bf09em9Bn6f-boGAAbpSrFb2uvwg03rTvW9Bw"}]},"linkedBlock":"omRkYXRhqWRuYW1lZUNsYWltZXZpZXdzomVvd25lcqFkdHlwZW9kb2N1bWVudEFjY291bnRndmVyc2lvbqFkdHlwZW9kb2N1bWVudFZlcnNpb25mc2NoZW1hpmR0eXBlZm9iamVjdGUkZGVmc6FxSW50ZXJQbGFuZXRhcnlDSUSjZHR5cGVmc3RyaW5nZXRpdGxlcUludGVyUGxhbmV0YXJ5Q0lEaW1heExlbmd0aBhkZyRzY2hlbWF4LGh0dHBzOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LzIwMjAtMTIvc2NoZW1haHJlcXVpcmVkgmV0aXRsZWtkZXNjcmlwdGlvbmpwcm9wZXJ0aWVzo2ViYWRnZaFkJHJlZngZIy8kZGVmcy9JbnRlclBsYW5ldGFyeUNJRGV0aXRsZaJkdHlwZWZzdHJpbmdpbWF4TGVuZ3RoGGRrZGVzY3JpcHRpb26iZHR5cGVmc3RyaW5naW1heExlbmd0aBkD6HRhZGRpdGlvbmFsUHJvcGVydGllc/RndmVyc2lvbmMyLjBpaW50ZXJmYWNl9GlyZWxhdGlvbnOgamltcGxlbWVudHOAa2Rlc2NyaXB0aW9ueC5BIHJldXNhYmxlIGNsYWltIHRvIGJlIGdyYW50ZWQgdmlhIGF0dGVzdGF0aW9ub2FjY291bnRSZWxhdGlvbqFkdHlwZWRsaXN0ZmhlYWRlcqNjc2VwZW1vZGVsZW1vZGVsUs4BBAFxcQsACWhtb2RlbC12MWtjb250cm9sbGVyc4F4OGRpZDprZXk6ejZNa3RiS0pyTW5oVkozN1FGVG8xMjkxMXljbTJqdUtEVXpXSERWRVR1OXM1YTlU"}]},"version":"1.1","views":{"account":{},"models":{"kjzl6hvfrbw6c5c4kdo5vb7evt577ioo3qquokfamj7cqvkh2uw7is2o0u60gxq":{},"kjzl6hvfrbw6c61huauhlcd10j8amu4rtcejl9c2wuteu8obxd7rrjg3ubjz88t":{"researchObjectCount":{"model":"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho","property":"fieldID","type":"relationCountFrom"},"researchObjects":{"model":"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho","property":"fieldID","type":"relationFrom"}},"kjzl6hvfrbw6c6omw7r239e4s6wvz9rzi2gluse10qb19ohd2ogi2aly6ntqm98":{"contributionCount":{"model":"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e","property":"contributorID","type":"relationCountFrom"},"contributions":{"model":"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e","property":"contributorID","type":"relationFrom"},"recievedAttestationCount":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"targetID","type":"relationCountFrom"},"recievedAttestations":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"targetID","type":"relationFrom"}},"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh":{},"kjzl6hvfrbw6c7hcwn0qb479irii3rd5wyeo566zagx9i6j0q39g04t5gqdtkj9":{"annotationCount":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"targetID","type":"relationCountFrom"},"annotations":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"targetID","type":"relationFrom"}},"kjzl6hvfrbw6c7i0fjy01znr4rxj7dqn3zmszp4p1z9g7ai6cwnsum0ba9ivn46":{"annotationCount":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"researchObjectID","type":"relationCountFrom"},"annotations":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"researchObjectID","type":"relationFrom"},"attestationCount":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"targetID","type":"relationCountFrom"},"attestations":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"targetID","type":"relationFrom"},"componentCount":{"model":"kjzl6hvfrbw6c7hcwn0qb479irii3rd5wyeo566zagx9i6j0q39g04t5gqdtkj9","property":"researchObjectID","type":"relationCountFrom"},"components":{"model":"kjzl6hvfrbw6c7hcwn0qb479irii3rd5wyeo566zagx9i6j0q39g04t5gqdtkj9","property":"researchObjectID","type":"relationFrom"},"contributorCount":{"model":"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e","property":"researchObjectID","type":"relationCountFrom"},"contributors":{"model":"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e","property":"researchObjectID","type":"relationFrom"},"incomingReferenceCount":{"model":"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h","property":"toID","type":"relationCountFrom"},"incomingReferences":{"model":"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h","property":"toID","type":"relationFrom"},"outgoingReferenceCount":{"model":"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h","property":"fromID","type":"relationCountFrom"},"outgoingReferences":{"model":"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h","property":"fromID","type":"relationFrom"},"researchFields":{"model":"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho","property":"researchObjectID","type":"relationFrom"}},"kjzl6hvfrbw6c7j6dbtaot3649xx3ee61cma5jemi9jmg0rtq04y3y60cvzi2ho":{},"kjzl6hvfrbw6c7xt50k0wap1idpavw8lcrr8xjcxzr1v450yik7435olwm9gh3h":{},"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma":{"replies":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"targetID","type":"relationFrom"},"replyCount":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"targetID","type":"relationCountFrom"}},"kjzl6hvfrbw6c84qxcv7vj13tcqpywnw07r1macsipbiyzycle96tb9t2rzhx3e":{},"kjzl6hvfrbw6caxivwqgqtgt66jdqilz8bsrmrblzbd40b6owkzrjzdu8410ilj":{"annotationCount":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"claimID","type":"relationCountFrom"},"annotations":{"model":"kjzl6hvfrbw6c80h9l9kyq8fldlaqc30uvsdajvs3p6selwrntoaf39i5fhskma","property":"claimID","type":"relationFrom"},"attestationCount":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"claimID","type":"relationCountFrom"},"attestations":{"model":"kjzl6hvfrbw6c72j5csywgq6r1oskrah6h8tlrk4gqok5zmrzu6941i6srhuyeh","property":"claimID","type":"relationFrom"}}},"root":{}}} \ No newline at end of file diff --git a/packages/lib/package.json b/packages/lib/package.json index 97da15f..d45b77c 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -1,6 +1,6 @@ { "name": "@desci-labs/desci-codex-lib", - "version": "1.0.1", + "version": "1.0.2", "description": "Codex interaction primitives", "license": "MIT", "author": "Edvard Hübinette", @@ -20,6 +20,7 @@ }, "dependencies": { "@composedb/client": "^0.6.0", + "@desci-labs/desci-codex-composedb": "^1.0.1", "dids": "^4.0.4", "gql-query-builder": "^3.8.0", "graphql": "^16.8.0", diff --git a/packages/lib/src/clients.ts b/packages/lib/src/clients.ts index 1c40e84..2008ad2 100644 --- a/packages/lib/src/clients.ts +++ b/packages/lib/src/clients.ts @@ -7,7 +7,7 @@ import { CeramicClient, type CeramicClientConfig, } from "@ceramicnetwork/http-client"; -import type { Optional } from "./types.js"; +import { definition } from "@desci-labs/desci-codex-composedb/src/__generated__/definition.js"; const DEFAULT_LOCAL_CERAMIC = "http://localhost:7007"; @@ -35,9 +35,7 @@ export const newCeramicClient = ( return new CeramicClient(endpoint ?? DEFAULT_LOCAL_CERAMIC, config); }; -export const newComposeClient = ( - params: Optional, -) => { +export const newComposeClient = (params: Partial) => { if (!params.ceramic) { console.log( "[codex] ceramic client not provided; defaulting to", @@ -47,6 +45,7 @@ export const newComposeClient = ( return new ComposeClient({ ceramic: DEFAULT_LOCAL_CERAMIC, + definition, // Let passed config overwrite ceramic, if present ...params, });