diff --git a/.commitlintrc.js b/.commitlintrc.js
deleted file mode 100644
index fb20312..0000000
--- a/.commitlintrc.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// .commitlintrc.js
-/** @type {import('cz-git').UserConfig} */
-module.exports = {
- rules: {
- // @see: https://commitlint.js.org/#/reference-rules
- },
- prompt: {
- alias: { fd: "docs: fix typos" },
- messages: {
- type: "Select the type of change that you're committing:",
- scope: "Denote the SCOPE of this change (optional):",
- customScope: "Denote the SCOPE of this change:",
- subject: "Write a SHORT, IMPERATIVE tense description of the change:\n",
- body: 'Provide a LONGER description of the change (optional). Use "|" to break new line:\n',
- breaking: 'List any BREAKING CHANGES (optional). Use "|" to break new line:\n',
- footerPrefixesSelect: "Select the ISSUES type of changeList by this change (optional):",
- customFooterPrefix: "Input ISSUES prefix:",
- footer: "List any ISSUES by this change. E.g.: #31, #34:\n",
- generatingByAI: 'Generating your AI commit subject...',
- generatedSelectByAI: 'Select suitable subject by AI generated:',
- confirmCommit: "Are you sure you want to proceed with the commit above?"
- },
- types: [
- { value: "feat", name: "feat: β¨ A new feature", emoji: ":sparkles:" },
- { value: "fix", name: "fix: π A bug fix", emoji: ":bug:" },
- { value: "docs", name: "docs: π Documentation only changes", emoji: ":memo:" },
- { value: "style", name: "style: π Changes that do not affect the meaning of the code", emoji: ":lipstick:" },
- { value: "refactor", name: "refactor: β»οΈ A code change that neither fixes a bug nor adds a feature", emoji: ":recycle:" },
- { value: "perf", name: "perf: β‘οΈ A code change that improves performance", emoji: ":zap:" },
- { value: "test", name: "test: β
Adding missing tests or correcting existing tests", emoji: ":white_check_mark:" },
- { value: "build", name: "build: π¦οΈ Changes that affect the build system or external dependencies", emoji: ":package:" },
- { value: "ci", name: "ci: π‘ Changes to our CI configuration files and scripts", emoji: ":ferris_wheel:" },
- { value: "chore", name: "chore: π¨ Other changes that don't modify src or test files", emoji: ":hammer:" },
- { value: "revert", name: "revert: βͺοΈ Reverts a previous commit", emoji: ":rewind:" }
- ],
- useEmoji: true,
- emojiAlign: "center",
- useAI: false,
- aiNumber: 1,
- themeColorCode: "",
- scopes: [],
- allowCustomScopes: true,
- allowEmptyScopes: true,
- customScopesAlign: "bottom",
- customScopesAlias: "custom",
- emptyScopesAlias: "empty",
- upperCaseSubject: false,
- markBreakingChangeMode: false,
- allowBreakingChanges: ['feat', 'fix'],
- breaklineNumber: 100,
- breaklineChar: "|",
- skipQuestions: [],
- issuePrefixes: [{ value: "closed", name: "closed: ISSUES has been processed" }],
- customIssuePrefixAlign: "top",
- emptyIssuePrefixAlias: "skip",
- customIssuePrefixAlias: "custom",
- allowCustomIssuePrefix: true,
- allowEmptyIssuePrefix: true,
- confirmColorize: true,
- maxHeaderLength: Infinity,
- maxSubjectLength: Infinity,
- minSubjectLength: 0,
- scopeOverrides: undefined,
- defaultBody: "",
- defaultIssues: "",
- defaultScope: "",
- defaultSubject: ""
- }
-};
\ No newline at end of file
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 746ae31..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,19 +0,0 @@
-# EditorConfig http://EditorConfig.org
-
-# top-most EditorConfig file
-root = true
-
-# All files
-[*]
-charset = utf-8
-end_of_line = lf
-indent_size = 2
-indent_style = space
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.sol]
-indent_size = 4
-
-[*.tree]
-indent_size = 1
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
deleted file mode 100644
index 1dca9a4..0000000
--- a/.github/CONTRIBUTING.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# β€οΈβ¨ Contributing to Astral
-
-Thank you for taking the time! We are excited to have you! We'd like to make it as easiest to contribute,
-
-We encourage you to:
-
-- βοΈ Send over any question, suggestion, technical issue to our [engineering@astral.global](engineering@astral.global)
-- π Add a feature request using the `issue template`.
-- π¦Έ Add Pull request `pr template`.
-
-## πΏ GIT Flow
-
-> π‘ Do not worry about conventions, we'll be happy to amend any format, and happy to see other conventions.
-
-We are using a simple [github flow](https://githubflow.github.io/) with no develop branch (atm). `main` <- `feature-branch`
-[PR format](https://flank.github.io/flank/pr_titles/): `([optional scope]): `
-
-## ποΈ Project structure
-
-We are using a forge project from this wonderful [template](https://github.com/PaulRBerg/foundry-template) β€οΈ all info about structure
-should be there.
-
-## π Commits
-
-Often please, and please install the [cz-git](https://github.com/Zhengqbbb/cz-git) cli, the config file is in the repo for easy, emoji
-filled commits.
-
-## π
Style
-
-Please follow [solidity-style-guide](https://github.com/ethereum/solidity/blob/develop/docs/style-guide.rst) or do it better :)
-
-## β€οΈ Thank you so much!!
-
-We are working (bullishly) on our incentive structure.
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index f3dd859..0000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-custom: "https://astral.global"
-github: "astralProtocol"
diff --git a/.github/ISSUE_TEMPLATE/core-setup-issue.md b/.github/ISSUE_TEMPLATE/core-setup-issue.md
deleted file mode 100644
index 70aa0fb..0000000
--- a/.github/ISSUE_TEMPLATE/core-setup-issue.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-name: Core setup Issue
-about: Create an issue (on core setup board) to be nested to a milestone
-title: "[CORE SETUP - TASK]"
-labels: needs refinement
-assignees: ''
-project: Core Set-up
----
-
-**Tasks**
-- [ ] ...
-
-**Please Note the fields to the right_**
-- [ ] I've selected a milestone or created one.
-- [ ] I've set a suggested priority.
-- [ ] I've set an effor estimation (numerical).
diff --git a/.github/ISSUE_TEMPLATE/engineering.md b/.github/ISSUE_TEMPLATE/engineering.md
deleted file mode 100644
index 07a4510..0000000
--- a/.github/ISSUE_TEMPLATE/engineering.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-name: New Issue
-about: Create an issue (on core setup board) to be nested to a milestone
-title: "[FEAT]"
-# labels: needs refinement
-assignees: ""
-projects: ["AstralProtocol/7"]
----
-
-## π Story (required for top level issues pls)
-As a [`persona`], I'd like to [`feat`], so that [`benefit`].
-
-## π¬ Description
-A clear and concise description of what you expected to happen.
-
-## ποΈ Context
-Relevant context to this issue-story.
-
-## ποΈ TO-DO (tasks or sub-issues)
-- [ ]
-- [ ]
-
-## β
Acceptance criteria
--
--
-
-## π· Screenshots
-
-## π Notes
diff --git a/.github/scripts/rename.sh b/.github/scripts/rename.sh
deleted file mode 100755
index 62e37dd..0000000
--- a/.github/scripts/rename.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env bash
-
-# https://gist.github.com/vncsna/64825d5609c146e80de8b1fd623011ca
-set -euo pipefail
-
-# Define the input vars
-GITHUB_REPOSITORY=${1?Error: Please pass username/repo, e.g. prb/foundry-template}
-GITHUB_REPOSITORY_OWNER=${2?Error: Please pass username, e.g. prb}
-GITHUB_REPOSITORY_DESCRIPTION=${3:-""} # If null then replace with empty string
-
-echo "GITHUB_REPOSITORY: $GITHUB_REPOSITORY"
-echo "GITHUB_REPOSITORY_OWNER: $GITHUB_REPOSITORY_OWNER"
-echo "GITHUB_REPOSITORY_DESCRIPTION: $GITHUB_REPOSITORY_DESCRIPTION"
-
-# jq is like sed for JSON data
-JQ_OUTPUT=`jq \
- --arg NAME "@$GITHUB_REPOSITORY" \
- --arg AUTHOR_NAME "$GITHUB_REPOSITORY_OWNER" \
- --arg URL "https://github.com/$GITHUB_REPOSITORY_OWNER" \
- --arg DESCRIPTION "$GITHUB_REPOSITORY_DESCRIPTION" \
- '.name = $NAME | .description = $DESCRIPTION | .author |= ( .name = $AUTHOR_NAME | .url = $URL )' \
- package.json
-`
-
-# Overwrite package.json
-echo "$JQ_OUTPUT" > package.json
-
-# Make sed command compatible in both Mac and Linux environments
-# Reference: https://stackoverflow.com/a/38595160/8696958
-sedi () {
- sed --version >/dev/null 2>&1 && sed -i -- "$@" || sed -i "" "$@"
-}
-
-# Rename instances of "PaulRBerg/foundry-template" to the new repo name in README.md for badges only
-sedi "/gitpod/ s|PaulRBerg/foundry-template|"${GITHUB_REPOSITORY}"|;" "README.md"
-sedi "/gitpod-badge/ s|PaulRBerg/foundry-template|"${GITHUB_REPOSITORY}"|;" "README.md"
-sedi "/gha/ s|PaulRBerg/foundry-template|"${GITHUB_REPOSITORY}"|;" "README.md"
-sedi "/gha-badge/ s|PaulRBerg/foundry-template|"${GITHUB_REPOSITORY}"|;" "README.md"
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index 768a87a..0000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,97 +0,0 @@
-name: "CI"
-
-env:
- API_KEY_ALCHEMY: ${{ secrets.API_KEY_ALCHEMY }}
- FOUNDRY_PROFILE: "ci"
-
-on:
- workflow_dispatch:
- pull_request:
- push:
- branches:
- - "main"
-
-jobs:
- lint:
- runs-on: "ubuntu-latest"
- steps:
- - name: "Check out the repo"
- uses: "actions/checkout@v4"
-
- - name: "Install Foundry"
- uses: "foundry-rs/foundry-toolchain@v1"
-
- - name: "Install Bun"
- uses: "oven-sh/setup-bun@v1"
-
- - name: "Install the Node.js dependencies"
- run: "bun install"
-
- - name: "Lint the code"
- run: "bun run lint"
-
- - name: "Add lint summary"
- run: |
- echo "## Lint result" >> $GITHUB_STEP_SUMMARY
- echo "β
Passed" >> $GITHUB_STEP_SUMMARY
-
- build:
- runs-on: "ubuntu-latest"
- steps:
- - name: "Check out the repo"
- uses: "actions/checkout@v4"
-
- - name: "Install Foundry"
- uses: "foundry-rs/foundry-toolchain@v1"
-
- - name: "Install Bun"
- uses: "oven-sh/setup-bun@v1"
-
- - name: "Install the Node.js dependencies"
- run: "bun install"
-
- - name: "Build the contracts and print their size"
- run: "forge build --sizes"
-
- - name: "Add build summary"
- run: |
- echo "## Build result" >> $GITHUB_STEP_SUMMARY
- echo "β
Passed" >> $GITHUB_STEP_SUMMARY
-
- test:
- needs: ["lint", "build"]
- runs-on: "ubuntu-latest"
- steps:
- - name: "Check out the repo"
- uses: "actions/checkout@v4"
-
- - name: "Install Foundry"
- uses: "foundry-rs/foundry-toolchain@v1"
-
- - name: "Install Bun"
- uses: "oven-sh/setup-bun@v1"
-
- - name: "Install the Node.js dependencies"
- run: "bun install"
-
- - name: "Show the Foundry config"
- run: "forge config"
-
- - name: "Generate a fuzz seed that changes weekly to avoid burning through RPC allowance"
- run: >
- echo "FOUNDRY_FUZZ_SEED=$(
- echo $(($EPOCHSECONDS - $EPOCHSECONDS % 604800))
- )" >> $GITHUB_ENV
-
- - name: "Run the tests"
- run: "forge coverage --report lcov"
-
- - name: "Add test summary"
- run: |
- echo "## Tests result" >> $GITHUB_STEP_SUMMARY
- echo "β
Passed" >> $GITHUB_STEP_SUMMARY
- - name: Upload coverage reports to Codecov
- uses: codecov/codecov-action@v4.0.1
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- slug: AstralProtocol/astralprotocol
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index e108b40..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,20 +0,0 @@
-# directories
-cache
-coverage
-node_modules
-out
-
-# files
-*.env
-*.log
-.DS_Store
-.pnp.*
-lcov.info
-package-lock.json
-pnpm-lock.yaml
-yarn.lock
-
-# broadcasts
-!broadcast
-broadcast/*
-broadcast/*/31337/
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index aebe182..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,6 +0,0 @@
-[submodule "eas-dapp-scuffold-eth"]
- path = eas-dapp-scuffold-eth
- url = https://github.com/scaffold-eth/scaffold-eth-2
-[submodule "eas-dapp-checkin"]
- path = eas-dapp-checkin
- url = https://github.com/scaffold-eth/scaffold-eth-2
diff --git a/.gitpod.yml b/.gitpod.yml
deleted file mode 100644
index b9646d8..0000000
--- a/.gitpod.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-image: "gitpod/workspace-bun"
-
-tasks:
- - name: "Install dependencies"
- before: |
- curl -L https://foundry.paradigm.xyz | bash
- source ~/.bashrc
- foundryup
- init: "bun install"
-
-vscode:
- extensions:
- - "esbenp.prettier-vscode"
- - "NomicFoundation.hardhat-solidity"
diff --git a/legacy/packages/stac-validator-js/lib/file.d.ts b/.nojekyll
similarity index 100%
rename from legacy/packages/stac-validator-js/lib/file.d.ts
rename to .nojekyll
diff --git a/.prettierignore b/.prettierignore
deleted file mode 100644
index 244668c..0000000
--- a/.prettierignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# directories
-broadcast
-cache
-coverage
-node_modules
-out
-
-# files
-*.env
-*.log
-.DS_Store
-.pnp.*
-bun.lockb
-lcov.info
-package-lock.json
-pnpm-lock.yaml
-yarn.lock
-
diff --git a/.prettierrc.yml b/.prettierrc.yml
deleted file mode 100644
index 067bc48..0000000
--- a/.prettierrc.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-bracketSpacing: true
-printWidth: 140
-proseWrap: "always"
-singleQuote: false
-tabWidth: 2
-trailingComma: "all"
-useTabs: false
diff --git a/.solhint.json b/.solhint.json
deleted file mode 100644
index 14f780e..0000000
--- a/.solhint.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "extends": "solhint:recommended",
- "rules": {
- "code-complexity": ["error", 8],
- "compiler-version": ["error", ">=0.8.25"],
- "func-name-mixedcase": "off",
- "func-visibility": ["error", { "ignoreConstructors": true }],
- "max-line-length": ["error", 120],
- "named-parameters-mapping": "warn",
- "no-console": "off",
- "not-rely-on-time": "off",
- "one-contract-per-file": "off"
- }
-}
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 54da199..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "editor.formatOnSave": true,
- "[solidity]": {
- "editor.defaultFormatter": "JuanBlanco.solidity"
- },
- "[toml]": {
- "editor.defaultFormatter": "tamasfe.even-better-toml"
- },
- "solidity.formatter": "forge",
- "solidity.compileUsingRemoteVersion": "v0.8.25+commit.b61c2a91"
-}
diff --git a/404.html b/404.html
new file mode 100644
index 0000000..b95dfc9
--- /dev/null
+++ b/404.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Page Not Found | Astral Documentation
+
+
+
+
+
+Page Not Found We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
+
+
\ No newline at end of file
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..b8088db
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+docs.astral.global
\ No newline at end of file
diff --git a/LICENSE-MIT b/LICENSE-MIT
deleted file mode 100644
index 1874419..0000000
--- a/LICENSE-MIT
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 astralDAO
-
-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.
diff --git a/LICENSE.md b/LICENSE.md
deleted file mode 100644
index 835dc2b..0000000
--- a/LICENSE.md
+++ /dev/null
@@ -1,15 +0,0 @@
-MIT License
-
-Copyright (c) 2024 Paul Razvan Berg
-
-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.
diff --git a/README.md b/README.md
deleted file mode 100644
index 56631dd..0000000
--- a/README.md
+++ /dev/null
@@ -1,32 +0,0 @@
-[![Github Actions][gha-badge]][gha] [![Foundry][foundry-badge]][foundry] [![License: MIT][license-badge]][license]
-[![codecov][codecov-badge]][codecov]
-[![Twitter](https://img.shields.io/twitter/follow/astralprotocol?style=social)](https://twitter.com/astralprotocol)
-
-[gitpod-badge]: https://img.shields.io/badge/Gitpod-Open%20in%20Gitpod-FFB45B?logo=gitpod
-[gha]: https://github.com/AstralProtocol/astralprotocol/actions
-[gha-badge]: https://github.com/AstralProtocol/astralprotocol/actions/workflows/ci.yml/badge.svg
-[foundry]: https://getfoundry.sh/
-[foundry-badge]: https://img.shields.io/badge/Built%20with-Foundry-FFDB1C.svg
-[license]: https://opensource.org/licenses/MIT
-[license-badge]: https://img.shields.io/badge/License-MIT-blue.svg
-[codecov]: https://codecov.io/gh/AstralProtocol/astralprotocol
-[codecov-badge]: https://codecov.io/gh/AstralProtocol/astralprotocol/graph/badge.svg?token=8MPT8407FS
-
-![Astral-jambo](https://github.com/AstralProtocol/astralprotocol/assets/7093389/e2f31237-1259-47e8-8830-d8caebff9f47)
-
-# Astral Protocol
-
-Deploy, extend, and maintain GeoLocation apps in a decentralized environment. Visit [astral.global](https://astral.global).
-
-## Documentation
-
-Check out the Astral Protocol Docs hosted on [gitbook](https://astral-protocol.gitbook.io/astral).
-
-## Design
-
-![Astral-diagram](https://github.com/AstralProtocol/astralprotocol/assets/7093389/562936df-c748-4527-a743-33f6520bac64)
-
-## β€οΈ Contribute
-
-Please check our [contributing guide](https://github.com/AstralProtocol/astralprotocol/wiki/Contributing-guidelines)! We deeply appreciate
-any help, review, suggestion!
diff --git a/assets/css/styles.500dd4b8.css b/assets/css/styles.500dd4b8.css
new file mode 100644
index 0000000..1f01bcc
--- /dev/null
+++ b/assets/css/styles.500dd4b8.css
@@ -0,0 +1 @@
+.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8, ');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8, ');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8, ');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#2e8555;--ifm-color-primary-dark:#29784c;--ifm-color-primary-darker:#277148;--ifm-color-primary-darkest:#205d3b;--ifm-color-primary-light:#33925d;--ifm-color-primary-lighter:#359962;--ifm-color-primary-lightest:#3cad6e;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#0000001a;--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_mo7H:hover{text-decoration:none}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"Β« "}.pagination-nav__link--next .pagination-nav__label:after{content:" Β»"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.sidebarItemTitle_pO2u,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#29d5b0;--ifm-color-primary-lighter:#32d8b4;--ifm-color-primary-lightest:#4fddbf;--docusaurus-highlighted-code-line-bg:#0000004d}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.features_t9lD{align-items:center;display:flex;padding:2rem 0;width:100%}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{align-items:center;display:flex;justify-content:center}.authorCol_Hf19{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_ev3q{height:auto}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}}
\ No newline at end of file
diff --git a/assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png b/assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png
new file mode 100644
index 0000000..97e4164
Binary files /dev/null and b/assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png differ
diff --git a/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg b/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg
new file mode 100644
index 0000000..11bda09
Binary files /dev/null and b/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg differ
diff --git a/assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png b/assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png
new file mode 100644
index 0000000..e257edc
Binary files /dev/null and b/assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png differ
diff --git a/assets/js/003da42b.767baa12.js b/assets/js/003da42b.767baa12.js
new file mode 100644
index 0000000..9dd0d48
--- /dev/null
+++ b/assets/js/003da42b.767baa12.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[637],{6229:(o,t,e)=>{e.r(t),e.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=e(4848),r=e(8453);const i={},c="Introduction",s={id:"location-proof-protocol/introduction",title:"Introduction",description:"The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way.",source:"@site/docs/location-proof-protocol/introduction.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/introduction",permalink:"/docs/location-proof-protocol/introduction",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",next:{title:"Rationale",permalink:"/docs/location-proof-protocol/rationale"}},a={},l=[{value:"Contributing",id:"contributing",level:2}];function d(o){const t={a:"a",admonition:"admonition",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.R)(),...o.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"introduction",children:"Introduction"}),"\n",(0,n.jsx)(t.p,{children:"The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way."}),"\n",(0,n.jsx)(t.p,{children:"Given the diverse requirements and approaches for location proofs, our goal is to support innovation across a wide range of proof strategies\nwhile providing a standard data model for creating and verifying these proofs."}),"\n",(0,n.jsxs)(t.admonition,{type:"tip",children:[(0,n.jsx)(t.p,{children:"We're working on the Location Proof Protocol in a few places:"}),(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["most active work is happening in the Astral Logbook dapp (especially the\n",(0,n.jsx)(t.a,{href:"https://github.com/AstralProtocol/logbook/blob/83807d8e79fdac8c990dcb168d72b4bfd9a9607c/packages/nextjs/components/CheckinForm.tsx#L57",children:" component"}),")"]}),"\n",(0,n.jsxs)(t.li,{children:["we're planning to store code in the astralprotocol monorepo, located\n",(0,n.jsx)(t.a,{href:"https://github.com/AstralProtocol/astralprotocol/tree/main/src/contracts",children:"here on Github"}),"."]}),"\n"]}),(0,n.jsx)(t.p,{children:"The structure is subject to change \u2014 these docs are the most current!"})]}),"\n",(0,n.jsx)(t.p,{children:"This section of the monorepo currently contains:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Specifications of the core ",(0,n.jsx)(t.a,{href:"/docs/location-proof-protocol/eas-schema",children:"Ethereum Attestation Service (EAS) schema"})," for the protocol"]}),"\n",(0,n.jsxs)(t.li,{children:["Details on how to create location proofs using different ",(0,n.jsx)(t.a,{href:"/docs/location-proof-protocol/location-types",children:"location types"})]}),"\n",(0,n.jsxs)(t.li,{children:["A framework (in development) for building ",(0,n.jsx)(t.a,{href:"/docs/location-proof-protocol/strategies-recipes",children:'"recipes"'})," that allow for many different strategies for proving\nlocation to be added (WIP)"]}),"\n",(0,n.jsxs)(t.li,{children:["Information on attaching differet types of ",(0,n.jsx)(t.a,{href:"/docs/location-proof-protocol/media-types",children:"media"})," to location proofs (WIP)"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"contributing",children:"Contributing"}),"\n",(0,n.jsxs)(t.p,{children:["We welcome contributions to improve the protocol and tools. Please read our\n",(0,n.jsx)(t.a,{href:"https://github.com/AstralProtocol/astralprotocol/wiki/Contributing-guidelines",children:"contributing guidelines"})," for more details."]})]})}function p(o={}){const{wrapper:t}={...(0,r.R)(),...o.components};return t?(0,n.jsx)(t,{...o,children:(0,n.jsx)(d,{...o})}):d(o)}},8453:(o,t,e)=>{e.d(t,{R:()=>c,x:()=>s});var n=e(6540);const r={},i=n.createContext(r);function c(o){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof o?o(t):{...t,...o}}),[t,o])}function s(o){let t;return t=o.disableParentContext?"function"==typeof o.components?o.components(r):o.components||r:c(o.components),n.createElement(i.Provider,{value:t},o.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/0058b4c6.1baed65d.js b/assets/js/0058b4c6.1baed65d.js
new file mode 100644
index 0000000..4d35fe2
--- /dev/null
+++ b/assets/js/0058b4c6.1baed65d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[849],{6164:o=>{o.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Location Proof Protocol","items":[{"type":"link","label":"Introduction","href":"/docs/location-proof-protocol/introduction","docId":"location-proof-protocol/introduction","unlisted":false},{"type":"link","label":"Rationale","href":"/docs/location-proof-protocol/rationale","docId":"location-proof-protocol/rationale","unlisted":false},{"type":"link","label":"Architecture","href":"/docs/location-proof-protocol/architecture","docId":"location-proof-protocol/architecture","unlisted":false},{"type":"link","label":"EAS Schema","href":"/docs/location-proof-protocol/eas-schema","docId":"location-proof-protocol/eas-schema","unlisted":false},{"type":"link","label":"Location Types","href":"/docs/location-proof-protocol/location-types","docId":"location-proof-protocol/location-types","unlisted":false},{"type":"link","label":"Strategies + Recipes","href":"/docs/location-proof-protocol/strategies-recipes","docId":"location-proof-protocol/strategies-recipes","unlisted":false},{"type":"link","label":"Media Types","href":"/docs/location-proof-protocol/media-types","docId":"location-proof-protocol/media-types","unlisted":false}],"collapsed":true,"collapsible":true}]},"docs":{"core-concepts/decentralized-spatial-data":{"id":"core-concepts/decentralized-spatial-data","title":"Decentralized spatial data","description":""},"core-concepts/location-proofs":{"id":"core-concepts/location-proofs","title":"Location proofs","description":""},"core-concepts/onchain-geospatial":{"id":"core-concepts/onchain-geospatial","title":"Onchain geospatial","description":""},"core-concepts/what-is-spatial-data":{"id":"core-concepts/what-is-spatial-data","title":"What is spatial data?","description":""},"developer-resources/location-attestations":{"id":"developer-resources/location-attestations","title":"Location attestations","description":""},"developer-resources/quickstart":{"id":"developer-resources/quickstart","title":"Quickstart","description":""},"developer-resources/spatial-registries":{"id":"developer-resources/spatial-registries","title":"Spatial registries","description":""},"examples":{"id":"examples","title":"Content goes here...","description":""},"hello":{"id":"hello","title":"Hello","description":"This is my first Docusaurus document!# Hello"},"intro":{"id":"intro","title":"Tutorial Intro","description":"Let\'s discover Docusaurus in less than 5 minutes."},"introducing-astral":{"id":"introducing-astral","title":"Introduction","description":""},"location-proof-protocol/architecture":{"id":"location-proof-protocol/architecture","title":"Architecture","description":"We are designing the overall architecture of the onchain component of the generalized location proof protocol. If you\'d like to weigh in \u2014","sidebar":"docs"},"location-proof-protocol/eas-schema":{"id":"location-proof-protocol/eas-schema","title":"EAS Schema","description":"Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)","sidebar":"docs"},"location-proof-protocol/introduction":{"id":"location-proof-protocol/introduction","title":"Introduction","description":"The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way.","sidebar":"docs"},"location-proof-protocol/location-types":{"id":"location-proof-protocol/location-types","title":"Location Types","description":"v0.1","sidebar":"docs"},"location-proof-protocol/media-types":{"id":"location-proof-protocol/media-types","title":"Media Types","description":"Users have the capability to attach a diverse range of media types to a location proof. This functionality is powered by the use of MIME","sidebar":"docs"},"location-proof-protocol/rationale":{"id":"location-proof-protocol/rationale","title":"Rationale","description":"We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and","sidebar":"docs"},"location-proof-protocol/strategies-recipes":{"id":"location-proof-protocol/strategies-recipes","title":"Strategies + Recipes","description":"The generalized location proof protocol is designed as it is to accommodate the wide range of strategies for proving location on the","sidebar":"docs"},"spatial-registries/logbook":{"id":"spatial-registries/logbook","title":"Logbook","description":""},"spatial-registries/spatial-sol":{"id":"spatial-registries/spatial-sol","title":"Spatial.sol","description":""},"tutorial-basics/congratulations":{"id":"tutorial-basics/congratulations","title":"Congratulations!","description":"You have just learned the basics of Docusaurus and made some changes to the initial template."},"tutorial-basics/create-a-blog-post":{"id":"tutorial-basics/create-a-blog-post","title":"Create a Blog Post","description":"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed..."},"tutorial-basics/create-a-document":{"id":"tutorial-basics/create-a-document","title":"Create a Document","description":"Documents are groups of pages connected through:"},"tutorial-basics/create-a-page":{"id":"tutorial-basics/create-a-page","title":"Create a Page","description":"Add Markdown or React files to src/pages to create a standalone page:"},"tutorial-basics/deploy-your-site":{"id":"tutorial-basics/deploy-your-site","title":"Deploy your site","description":"Docusaurus is a static-site-generator (also called Jamstack)."},"tutorial-basics/markdown-features":{"id":"tutorial-basics/markdown-features","title":"Markdown Features","description":"Docusaurus supports Markdown and a few additional features."},"tutorial-extras/manage-docs-versions":{"id":"tutorial-extras/manage-docs-versions","title":"Manage Docs Versions","description":"Docusaurus can manage multiple versions of your docs."},"tutorial-extras/translate-your-site":{"id":"tutorial-extras/translate-your-site","title":"Translate your site","description":"Let\'s translate docs/intro.md to French."}}}}')}}]);
\ No newline at end of file
diff --git a/assets/js/00fb3d82.a8ad1435.js b/assets/js/00fb3d82.a8ad1435.js
new file mode 100644
index 0000000..4c7e410
--- /dev/null
+++ b/assets/js/00fb3d82.a8ad1435.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4192],{6466:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>c,toc:()=>u});var s=r(4848),n=r(8453);const o={},i="Spatial registries",c={id:"developer-resources/spatial-registries",title:"Spatial registries",description:"",source:"@site/docs/developer-resources/spatial-registries.md",sourceDirName:"developer-resources",slug:"/developer-resources/spatial-registries",permalink:"/docs/developer-resources/spatial-registries",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},a={},u=[];function l(e){const t={h1:"h1",...(0,n.R)(),...e.components};return(0,s.jsx)(t.h1,{id:"spatial-registries",children:"Spatial registries"})}function p(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>i,x:()=>c});var s=r(6540);const n={},o=s.createContext(n);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/01a85c17.4b09fa65.js b/assets/js/01a85c17.4b09fa65.js
new file mode 100644
index 0000000..3d97c5e
--- /dev/null
+++ b/assets/js/01a85c17.4b09fa65.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8209],{6535:(e,s,t)=>{t.d(s,{A:()=>v});var a=t(6540),i=t(4164),r=t(781),l=t(4581),n=t(8774),c=t(1312),o=t(6347),d=t(9169);function m(e){const{pathname:s}=(0,o.zy)();return(0,a.useMemo)((()=>e.filter((e=>function(e,s){return!(e.unlisted&&!(0,d.ys)(e.permalink,s))}(e,s)))),[e,s])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var b=t(4848);function g(e){let{sidebar:s}=e;const t=m(s.items);return(0,b.jsx)("aside",{className:"col col--3",children:(0,b.jsxs)("nav",{className:(0,i.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,c.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,b.jsx)("div",{className:(0,i.A)(u.sidebarItemTitle,"margin-bottom--md"),children:s.title}),(0,b.jsx)("ul",{className:(0,i.A)(u.sidebarItemList,"clean-list"),children:t.map((e=>(0,b.jsx)("li",{className:u.sidebarItem,children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var h=t(5600);function j(e){let{sidebar:s}=e;const t=m(s.items);return(0,b.jsx)("ul",{className:"menu__list",children:t.map((e=>(0,b.jsx)("li",{className:"menu__list-item",children:(0,b.jsx)(n.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function p(e){return(0,b.jsx)(h.GX,{component:j,props:e})}function x(e){let{sidebar:s}=e;const t=(0,l.l)();return s?.items.length?"mobile"===t?(0,b.jsx)(p,{sidebar:s}):(0,b.jsx)(g,{sidebar:s}):null}function v(e){const{sidebar:s,toc:t,children:a,...l}=e,n=s&&s.items.length>0;return(0,b.jsx)(r.A,{...l,children:(0,b.jsx)("div",{className:"container margin-vert--lg",children:(0,b.jsxs)("div",{className:"row",children:[(0,b.jsx)(x,{sidebar:s}),(0,b.jsx)("main",{className:(0,i.A)("col",{"col--7":n,"col--9 col--offset-1":!n}),children:a}),t&&(0,b.jsx)("div",{className:"col col--2",children:t})]})})})}},9158:(e,s,t)=>{t.r(s),t.d(s,{default:()=>j});t(6540);var a=t(4164),i=t(1312);const r=()=>(0,i.T)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var l=t(1213),n=t(7559),c=t(6535),o=t(6133),d=t(1107);const m={tag:"tag_Nnez"};var u=t(4848);function b(e){let{letterEntry:s}=e;return(0,u.jsxs)("article",{children:[(0,u.jsx)(d.A,{as:"h2",id:s.letter,children:s.letter}),(0,u.jsx)("ul",{className:"padding--none",children:s.tags.map((e=>(0,u.jsx)("li",{className:m.tag,children:(0,u.jsx)(o.A,{...e})},e.permalink)))}),(0,u.jsx)("hr",{})]})}function g(e){let{tags:s}=e;const t=function(e){const s={};return Object.values(e).forEach((e=>{const t=function(e){return e[0].toUpperCase()}(e.label);s[t]??=[],s[t].push(e)})),Object.entries(s).sort(((e,s)=>{let[t]=e,[a]=s;return t.localeCompare(a)})).map((e=>{let[s,t]=e;return{letter:s,tags:t.sort(((e,s)=>e.label.localeCompare(s.label)))}}))}(s);return(0,u.jsx)("section",{className:"margin-vert--lg",children:t.map((e=>(0,u.jsx)(b,{letterEntry:e},e.letter)))})}var h=t(1463);function j(e){let{tags:s,sidebar:t}=e;const i=r();return(0,u.jsxs)(l.e3,{className:(0,a.A)(n.G.wrapper.blogPages,n.G.page.blogTagsListPage),children:[(0,u.jsx)(l.be,{title:i}),(0,u.jsx)(h.A,{tag:"blog_tags_list"}),(0,u.jsxs)(c.A,{sidebar:t,children:[(0,u.jsx)(d.A,{as:"h1",children:i}),(0,u.jsx)(g,{tags:s})]})]})}},6133:(e,s,t)=>{t.d(s,{A:()=>n});t(6540);var a=t(4164),i=t(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=t(4848);function n(e){let{permalink:s,label:t,count:n,description:c}=e;return(0,l.jsxs)(i.A,{href:s,title:c,className:(0,a.A)(r.tag,n?r.tagWithCount:r.tagRegular),children:[t,n&&(0,l.jsx)("span",{children:n})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/09d5ad39.24aea618.js b/assets/js/09d5ad39.24aea618.js
new file mode 100644
index 0000000..5d20646
--- /dev/null
+++ b/assets/js/09d5ad39.24aea618.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1864],{1498:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>i});var o=n(4848),s=n(8453);const r={},c="Content goes here...",a={id:"examples",title:"Content goes here...",description:"",source:"@site/docs/examples.md",sourceDirName:".",slug:"/examples",permalink:"/docs/examples",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},u={},i=[];function d(e){const t={h1:"h1",...(0,s.R)(),...e.components};return(0,o.jsx)(t.h1,{id:"content-goes-here",children:"Content goes here..."})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>a});var o=n(6540);const s={},r=o.createContext(s);function c(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/0e384e19.00bed4f2.js b/assets/js/0e384e19.00bed4f2.js
new file mode 100644
index 0000000..41d41f9
--- /dev/null
+++ b/assets/js/0e384e19.00bed4f2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3976],{619:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=t(4848),r=t(8453);const o={sidebar_position:1},i="Tutorial Intro",a={id:"intro",title:"Tutorial Intro",description:"Let's discover Docusaurus in less than 5 minutes.",source:"@site/docs/intro.md",sourceDirName:".",slug:"/intro",permalink:"/docs/intro",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1}},l={},d=[{value:"Getting Started",id:"getting-started",level:2},{value:"What you'll need",id:"what-youll-need",level:3},{value:"Generate a new site",id:"generate-a-new-site",level:2},{value:"Start your site",id:"start-your-site",level:2}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"tutorial-intro",children:"Tutorial Intro"}),"\n",(0,s.jsxs)(n.p,{children:["Let's discover ",(0,s.jsx)(n.strong,{children:"Docusaurus in less than 5 minutes"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,s.jsxs)(n.p,{children:["Get started by ",(0,s.jsx)(n.strong,{children:"creating a new site"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Or ",(0,s.jsx)(n.strong,{children:"try Docusaurus immediately"})," with ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://docusaurus.new",children:"docusaurus.new"})}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"what-youll-need",children:"What you'll need"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"https://nodejs.org/en/download/",children:"Node.js"})," version 18.0 or above:","\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"When installing Node.js, you are recommended to check all checkboxes related to dependencies."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"generate-a-new-site",children:"Generate a new site"}),"\n",(0,s.jsxs)(n.p,{children:["Generate a new Docusaurus site using the ",(0,s.jsx)(n.strong,{children:"classic template"}),"."]}),"\n",(0,s.jsx)(n.p,{children:"The classic template will automatically be added to your project after you run the command:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"npm init docusaurus@latest my-website classic\n"})}),"\n",(0,s.jsx)(n.p,{children:"You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor."}),"\n",(0,s.jsx)(n.p,{children:"The command also installs all necessary dependencies you need to run Docusaurus."}),"\n",(0,s.jsx)(n.h2,{id:"start-your-site",children:"Start your site"}),"\n",(0,s.jsx)(n.p,{children:"Run the development server:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"cd my-website\nnpm run start\n"})}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"cd"})," command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there."]}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"npm run start"})," command builds your website locally and serves it through a development server, ready for you to view at ",(0,s.jsx)(n.a,{href:"http://localhost:3000/",children:"http://localhost:3000/"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Open ",(0,s.jsx)(n.code,{children:"docs/intro.md"})," (this page) and edit some lines: the site ",(0,s.jsx)(n.strong,{children:"reloads automatically"})," and displays your changes."]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var s=t(6540);const r={},o=s.createContext(r);function i(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/1538.a265ec9d.js b/assets/js/1538.a265ec9d.js
new file mode 100644
index 0000000..6a545fe
--- /dev/null
+++ b/assets/js/1538.a265ec9d.js
@@ -0,0 +1 @@
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1538],{7293:(e,t,n)=>{"use strict";n.d(t,{A:()=>L});var s=n(6540),o=n(4848);function a(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),a=t.filter((e=>e!==n)),c=n?.props.children;return{mdxAdmonitionTitle:c,rest:a.length>0?(0,o.jsx)(o.Fragment,{children:a}):null}}(e.children),a=e.title??t;return{...e,...a&&{title:a},children:n}}var c=n(4164),r=n(1312),i=n(7559);const l={admonition:"admonition_xJq3",admonitionHeading:"admonitionHeading_Gvgb",admonitionIcon:"admonitionIcon_Rf37",admonitionContent:"admonitionContent_BuS1"};function d(e){let{type:t,className:n,children:s}=e;return(0,o.jsx)("div",{className:(0,c.A)(i.G.common.admonition,i.G.common.admonitionType(t),l.admonition,n),children:s})}function u(e){let{icon:t,title:n}=e;return(0,o.jsxs)("div",{className:l.admonitionHeading,children:[(0,o.jsx)("span",{className:l.admonitionIcon,children:t}),n]})}function m(e){let{children:t}=e;return t?(0,o.jsx)("div",{className:l.admonitionContent,children:t}):null}function h(e){const{type:t,icon:n,title:s,children:a,className:c}=e;return(0,o.jsxs)(d,{type:t,className:c,children:[s||n?(0,o.jsx)(u,{title:s,icon:n}):null,(0,o.jsx)(m,{children:a})]})}function p(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const f={icon:(0,o.jsx)(p,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function x(e){return(0,o.jsx)(h,{...f,...e,className:(0,c.A)("alert alert--secondary",e.className),children:e.children})}function b(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const j={icon:(0,o.jsx)(b,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function g(e){return(0,o.jsx)(h,{...j,...e,className:(0,c.A)("alert alert--success",e.className),children:e.children})}function v(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const y={icon:(0,o.jsx)(v,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function N(e){return(0,o.jsx)(h,{...y,...e,className:(0,c.A)("alert alert--info",e.className),children:e.children})}function A(e){return(0,o.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const B={icon:(0,o.jsx)(A,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function k(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const w={icon:(0,o.jsx)(k,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const C={icon:(0,o.jsx)(A,{}),title:(0,o.jsx)(r.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const E={...{note:x,tip:g,info:N,warning:function(e){return(0,o.jsx)(h,{...B,...e,className:(0,c.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,o.jsx)(h,{...w,...e,className:(0,c.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,o.jsx)(x,{title:"secondary",...e}),important:e=>(0,o.jsx)(N,{title:"important",...e}),success:e=>(0,o.jsx)(g,{title:"success",...e}),caution:function(e){return(0,o.jsx)(h,{...C,...e,className:(0,c.A)("alert alert--warning",e.className),children:e.children})}}};function L(e){const t=a(e),n=(s=t.type,E[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),E.info));var s;return(0,o.jsx)(n,{...t})}},4336:(e,t,n)=>{"use strict";n.d(t,{A:()=>x});n(6540);var s=n(4164),o=n(1312),a=n(7559),c=n(8774);const r={iconEdit:"iconEdit_Z9Sw"};var i=n(4848);function l(e){let{className:t,...n}=e;return(0,i.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.A)(r.iconEdit,t),"aria-hidden":"true",...n,children:(0,i.jsx)("g",{children:(0,i.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function d(e){let{editUrl:t}=e;return(0,i.jsxs)(c.A,{to:t,className:a.G.common.editThisPage,children:[(0,i.jsx)(l,{}),(0,i.jsx)(o.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var u=n(6266);function m(e){let{lastUpdatedAt:t}=e;const n=new Date(t),s=(0,u.i)({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(n);return(0,i.jsx)(o.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,i.jsx)("b",{children:(0,i.jsx)("time",{dateTime:n.toISOString(),itemProp:"dateModified",children:s})})},children:" on {date}"})}function h(e){let{lastUpdatedBy:t}=e;return(0,i.jsx)(o.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,i.jsx)("b",{children:t})},children:" by {user}"})}function p(e){let{lastUpdatedAt:t,lastUpdatedBy:n}=e;return(0,i.jsxs)("span",{className:a.G.common.lastUpdated,children:[(0,i.jsx)(o.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t?(0,i.jsx)(m,{lastUpdatedAt:t}):"",byUser:n?(0,i.jsx)(h,{lastUpdatedBy:n}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const f={lastUpdated:"lastUpdated_JAkA"};function x(e){let{className:t,editUrl:n,lastUpdatedAt:o,lastUpdatedBy:a}=e;return(0,i.jsxs)("div",{className:(0,s.A)("row",t),children:[(0,i.jsx)("div",{className:"col",children:n&&(0,i.jsx)(d,{editUrl:n})}),(0,i.jsx)("div",{className:(0,s.A)("col",f.lastUpdated),children:(o||a)&&(0,i.jsx)(p,{lastUpdatedAt:o,lastUpdatedBy:a})})]})}},5533:(e,t,n)=>{"use strict";n.d(t,{A:()=>ie});var s=n(6540),o=n(8453),a=n(5260),c=n(2303),r=n(4164),i=n(5293),l=n(6342);function d(){const{prism:e}=(0,l.p)(),{colorMode:t}=(0,i.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var u=n(7559),m=n(8426),h=n.n(m);const p=/title=(?["'])(?.*?)\1/,f=/\{(?[\d,-]+)\}/,x={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},b={...x,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},j=Object.keys(x);function g(e,t){const n=e.map((e=>{const{start:n,end:s}=b[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function v(e,t){let n=e.replace(/\n$/,"");const{language:s,magicComments:o,metastring:a}=t;if(a&&f.test(a)){const e=a.match(f).groups.range;if(0===o.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=o[0].className,s=h()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(s),code:n}}if(void 0===s)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return g(["js","jsBlock"],t);case"jsx":case"tsx":return g(["js","jsBlock","jsx"],t);case"html":return g(["js","jsBlock","html"],t);case"python":case"py":case"bash":return g(["bash"],t);case"markdown":case"md":return g(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return g(["tex"],t);case"lua":case"haskell":case"sql":return g(["lua"],t);case"wasm":return g(["wasm"],t);case"vb":case"vba":case"visual-basic":return g(["vb","rem"],t);case"vbnet":return g(["vbnet","rem"],t);case"batch":return g(["rem"],t);case"basic":return g(["rem","f90"],t);case"fsharp":return g(["js","ml"],t);case"ocaml":case"sml":return g(["ml"],t);case"fortran":return g(["f90"],t);case"cobol":return g(["cobol"],t);default:return g(j,t)}}(s,o),r=n.split("\n"),i=Object.fromEntries(o.map((e=>[e.className,{start:0,range:""}]))),l=Object.fromEntries(o.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),d=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),u=Object.fromEntries(o.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let h=0;hvoid 0!==e));l[t]?i[l[t]].range+=`${h},`:d[t]?i[d[t]].start=h:u[t]&&(i[u[t]].range+=`${i[u[t]].start}-${h-1},`),r.splice(h,1)}n=r.join("\n");const m={};return Object.entries(i).forEach((e=>{let[t,{range:n}]=e;h()(n).forEach((e=>{m[e]??=[],m[e].push(t)}))})),{lineClassNames:m,code:n}}const y={codeBlockContainer:"codeBlockContainer_Ckt0"};var N=n(4848);function A(e){let{as:t,...n}=e;const s=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[s,o]=e;const a=t[s];a&&"string"==typeof o&&(n[a]=o)})),n}(d());return(0,N.jsx)(t,{...n,style:s,className:(0,r.A)(n.className,y.codeBlockContainer,u.G.common.codeBlock)})}const B={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function k(e){let{children:t,className:n}=e;return(0,N.jsx)(A,{as:"pre",tabIndex:0,className:(0,r.A)(B.codeBlockStandalone,"thin-scrollbar",n),children:(0,N.jsx)("code",{className:B.codeBlockLines,children:t})})}var w=n(9532);const C={attributes:!0,characterData:!0,childList:!0,subtree:!0};function E(e,t){const[n,o]=(0,s.useState)(),a=(0,s.useCallback)((()=>{o(e.current?.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,s.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=C);const o=(0,w._q)(t),a=(0,w.Be)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,a),()=>t.disconnect()}),[e,o,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}var L=n(1765);const T={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function _(e){let{line:t,classNames:n,showLineNumbers:s,getLineProps:o,getTokenProps:a}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const c=o({line:t,className:(0,r.A)(n,s&&T.codeLine)}),i=t.map(((e,t)=>(0,N.jsx)("span",{...a({token:e})},t)));return(0,N.jsxs)("span",{...c,children:[s?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsx)("span",{className:T.codeLineNumber}),(0,N.jsx)("span",{className:T.codeLineContent,children:i})]}):i,(0,N.jsx)("br",{})]})}var S=n(1312);function U(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function M(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const z={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function I(e){let{code:t,className:n}=e;const[o,a]=(0,s.useState)(!1),c=(0,s.useRef)(void 0),i=(0,s.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const s=document.createElement("textarea"),o=document.activeElement;s.value=e,s.setAttribute("readonly",""),s.style.contain="strict",s.style.position="absolute",s.style.left="-9999px",s.style.fontSize="12pt";const a=document.getSelection(),c=a.rangeCount>0&&a.getRangeAt(0);n.append(s),s.select(),s.selectionStart=0,s.selectionEnd=e.length;let r=!1;try{r=document.execCommand("copy")}catch{}s.remove(),c&&(a.removeAllRanges(),a.addRange(c)),o&&o.focus()}(t),a(!0),c.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,s.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),(0,N.jsx)("button",{type:"button","aria-label":o?(0,S.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,S.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,S.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,r.A)("clean-btn",n,z.copyButton,o&&z.copyButtonCopied),onClick:i,children:(0,N.jsxs)("span",{className:z.copyButtonIcons,"aria-hidden":"true",children:[(0,N.jsx)(U,{className:z.copyButtonIcon}),(0,N.jsx)(M,{className:z.copyButtonSuccessIcon})]})})}function H(e){return(0,N.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,N.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const R={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function V(e){let{className:t,onClick:n,isEnabled:s}=e;const o=(0,S.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,N.jsx)("button",{type:"button",onClick:n,className:(0,r.A)("clean-btn",t,s&&R.wordWrapButtonEnabled),"aria-label":o,title:o,children:(0,N.jsx)(H,{className:R.wordWrapButtonIcon,"aria-hidden":"true"})})}function $(e){let{children:t,className:n="",metastring:o,title:a,showLineNumbers:c,language:i}=e;const{prism:{defaultLanguage:u,magicComments:m}}=(0,l.p)(),h=function(e){return e?.toLowerCase()}(i??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??u),f=d(),x=function(){const[e,t]=(0,s.useState)(!1),[n,o]=(0,s.useState)(!1),a=(0,s.useRef)(null),c=(0,s.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),r=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");o(n)}),[a]);return E(a,r),(0,s.useEffect)((()=>{r()}),[e,r]),(0,s.useEffect)((()=>(window.addEventListener("resize",r,{passive:!0}),()=>{window.removeEventListener("resize",r)})),[r]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:c}}(),b=function(e){return e?.match(p)?.groups.title??""}(o)||a,{lineClassNames:j,code:g}=v(t,{metastring:o,language:h,magicComments:m}),y=c??function(e){return Boolean(e?.includes("showLineNumbers"))}(o);return(0,N.jsxs)(A,{as:"div",className:(0,r.A)(n,h&&!n.includes(`language-${h}`)&&`language-${h}`),children:[b&&(0,N.jsx)("div",{className:B.codeBlockTitle,children:b}),(0,N.jsxs)("div",{className:B.codeBlockContent,children:[(0,N.jsx)(L.f4,{theme:f,code:g,language:h??"text",children:e=>{let{className:t,style:n,tokens:s,getLineProps:o,getTokenProps:a}=e;return(0,N.jsx)("pre",{tabIndex:0,ref:x.codeBlockRef,className:(0,r.A)(t,B.codeBlock,"thin-scrollbar"),style:n,children:(0,N.jsx)("code",{className:(0,r.A)(B.codeBlockLines,y&&B.codeBlockLinesWithNumbering),children:s.map(((e,t)=>(0,N.jsx)(_,{line:e,getLineProps:o,getTokenProps:a,classNames:j[t],showLineNumbers:y},t)))})})}}),(0,N.jsxs)("div",{className:B.buttonGroup,children:[(x.isEnabled||x.isCodeScrollable)&&(0,N.jsx)(V,{className:B.codeButton,onClick:()=>x.toggle(),isEnabled:x.isEnabled}),(0,N.jsx)(I,{className:B.codeButton,code:g})]})]})]})}function W(e){let{children:t,...n}=e;const o=(0,c.A)(),a=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),r="string"==typeof a?$:k;return(0,N.jsx)(r,{...n,children:a},String(o))}function D(e){return(0,N.jsx)("code",{...e})}var P=n(8774);var q=n(3427),G=n(1422);const O={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function F(e){return!!e&&("SUMMARY"===e.tagName||F(e.parentElement))}function Z(e,t){return!!e&&(e===t||Z(e.parentElement,t))}function J(e){let{summary:t,children:n,...o}=e;(0,q.A)().collectAnchor(o.id);const a=(0,c.A)(),i=(0,s.useRef)(null),{collapsed:l,setCollapsed:d}=(0,G.u)({initialState:!o.open}),[u,m]=(0,s.useState)(o.open),h=s.isValidElement(t)?t:(0,N.jsx)("summary",{children:t??"Details"});return(0,N.jsxs)("details",{...o,ref:i,open:u,"data-collapsed":l,className:(0,r.A)(O.details,a&&O.isBrowser,o.className),onMouseDown:e=>{F(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;F(t)&&Z(t,i.current)&&(e.preventDefault(),l?(d(!1),m(!0)):d(!0))},children:[h,(0,N.jsx)(G.N,{lazy:!1,collapsed:l,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{d(e),m(!e)},children:(0,N.jsx)("div",{className:O.collapsibleContent,children:n})})]})}const Y={details:"details_b_Ee"},K="alert alert--info";function Q(e){let{...t}=e;return(0,N.jsx)(J,{...t,className:(0,r.A)(K,Y.details,t.className)})}function X(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),o=(0,N.jsx)(N.Fragment,{children:t.filter((e=>e!==n))});return(0,N.jsx)(Q,{...e,summary:n,children:o})}var ee=n(1107);function te(e){return(0,N.jsx)(ee.A,{...e})}const ne={containsTaskList:"containsTaskList_mC6p"};function se(e){if(void 0!==e)return(0,r.A)(e,e?.includes("contains-task-list")&&ne.containsTaskList)}const oe={img:"img_ev3q"};var ae=n(7293),ce=n(418);const re={Head:a.A,details:X,Details:X,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,N.jsx)(D,{...e}):(0,N.jsx)(W,{...e})},a:function(e){return(0,N.jsx)(P.A,{...e})},pre:function(e){return(0,N.jsx)(N.Fragment,{children:e.children})},ul:function(e){return(0,N.jsx)("ul",{...e,className:se(e.className)})},li:function(e){return(0,q.A)().collectAnchor(e.id),(0,N.jsx)("li",{...e})},img:function(e){return(0,N.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,r.A)(t,oe.img))});var t},h1:e=>(0,N.jsx)(te,{as:"h1",...e}),h2:e=>(0,N.jsx)(te,{as:"h2",...e}),h3:e=>(0,N.jsx)(te,{as:"h3",...e}),h4:e=>(0,N.jsx)(te,{as:"h4",...e}),h5:e=>(0,N.jsx)(te,{as:"h5",...e}),h6:e=>(0,N.jsx)(te,{as:"h6",...e}),admonition:ae.A,mermaid:ce.A};function ie(e){let{children:t}=e;return(0,N.jsx)(o.x,{components:re,children:t})}},6266:(e,t,n)=>{"use strict";n.d(t,{i:()=>o});var s=n(4586);function o(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,s.A)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,s.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}},8426:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,o,a]=t;if(s&&a){s=parseInt(s),a=parseInt(a);const e=s{"use strict";n.d(t,{R:()=>c,x:()=>r});var s=n(6540);const o={},a=s.createContext(o);function c(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/17896441.aca2f39a.js b/assets/js/17896441.aca2f39a.js
new file mode 100644
index 0000000..13333a3
--- /dev/null
+++ b/assets/js/17896441.aca2f39a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8401],{2447:(e,n,t)=>{t.r(n),t.d(n,{default:()=>ae});var s=t(6540),a=t(1213),i=t(9532),l=t(4848);const o=s.createContext(null);function r(e){let{children:n,content:t}=e;const a=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(t);return(0,l.jsx)(o.Provider,{value:a,children:n})}function c(){const e=(0,s.useContext)(o);if(null===e)throw new i.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:n,assets:t}=c();return(0,l.jsx)(a.be,{title:e.title,description:e.description,keywords:n.keywords,image:t.image??n.image})}var u=t(4164),m=t(4581),h=t(1312),v=t(9022);function b(e){const{previous:n,next:t}=e;return(0,l.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[n&&(0,l.jsx)(v.A,{...n,subLabel:(0,l.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),t&&(0,l.jsx)(v.A,{...t,subLabel:(0,l.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function x(){const{metadata:e}=c();return(0,l.jsx)(b,{previous:e.previous,next:e.next})}var g=t(4586),p=t(8774),f=t(4070),j=t(7559),A=t(5597),C=t(2252);const L={unreleased:function(e){let{siteTitle:n,versionMetadata:t}=e;return(0,l.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:n,versionLabel:(0,l.jsx)("b",{children:t.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function(e){let{siteTitle:n,versionMetadata:t}=e;return(0,l.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:n,versionLabel:(0,l.jsx)("b",{children:t.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function N(e){const n=L[e.versionMetadata.banner];return(0,l.jsx)(n,{...e})}function _(e){let{versionLabel:n,to:t,onClick:s}=e;return(0,l.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:n,latestVersionLink:(0,l.jsx)("b",{children:(0,l.jsx)(p.A,{to:t,onClick:s,children:(0,l.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function k(e){let{className:n,versionMetadata:t}=e;const{siteConfig:{title:s}}=(0,g.A)(),{pluginId:a}=(0,f.vT)({failfast:!0}),{savePreferredVersionName:i}=(0,A.g1)(a),{latestDocSuggestion:o,latestVersionSuggestion:r}=(0,f.HW)(a),c=o??(d=r).docs.find((e=>e.id===d.mainDocId));var d;return(0,l.jsxs)("div",{className:(0,u.A)(n,j.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,l.jsx)("div",{children:(0,l.jsx)(N,{siteTitle:s,versionMetadata:t})}),(0,l.jsx)("div",{className:"margin-top--md",children:(0,l.jsx)(_,{versionLabel:r.label,to:c.path,onClick:()=>i(r.name)})})]})}function T(e){let{className:n}=e;const t=(0,C.r)();return t.banner?(0,l.jsx)(k,{className:n,versionMetadata:t}):null}function H(e){let{className:n}=e;const t=(0,C.r)();return t.badge?(0,l.jsx)("span",{className:(0,u.A)(n,j.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,l.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:t.label},children:"Version: {versionLabel}"})}):null}var M=t(2053),y=t(4336);function I(){const{metadata:e}=c(),{editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s,tags:a}=e,i=a.length>0,o=!!(n||t||s);return i||o?(0,l.jsxs)("footer",{className:(0,u.A)(j.G.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,l.jsx)("div",{className:(0,u.A)("row margin-top--sm",j.G.docs.docFooterTagsRow),children:(0,l.jsx)("div",{className:"col",children:(0,l.jsx)(M.A,{tags:a})})}),o&&(0,l.jsx)(y.A,{className:(0,u.A)("margin-top--sm",j.G.docs.docFooterEditMetaRow),editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s})]}):null}var w=t(1422),E=t(5195);const B={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function O(e){let{collapsed:n,...t}=e;return(0,l.jsx)("button",{type:"button",...t,className:(0,u.A)("clean-btn",B.tocCollapsibleButton,!n&&B.tocCollapsibleButtonExpanded,t.className),children:(0,l.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const V={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function G(e){let{toc:n,className:t,minHeadingLevel:s,maxHeadingLevel:a}=e;const{collapsed:i,toggleCollapsed:o}=(0,w.u)({initialState:!0});return(0,l.jsxs)("div",{className:(0,u.A)(V.tocCollapsible,!i&&V.tocCollapsibleExpanded,t),children:[(0,l.jsx)(O,{collapsed:i,onClick:o}),(0,l.jsx)(w.N,{lazy:!0,className:V.tocCollapsibleContent,collapsed:i,children:(0,l.jsx)(E.A,{toc:n,minHeadingLevel:s,maxHeadingLevel:a})})]})}const R={tocMobile:"tocMobile_ITEo"};function S(){const{toc:e,frontMatter:n}=c();return(0,l.jsx)(G,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:(0,u.A)(j.G.docs.docTocMobile,R.tocMobile)})}var P=t(7763);function F(){const{toc:e,frontMatter:n}=c();return(0,l.jsx)(P.A,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:j.G.docs.docTocDesktop})}var U=t(1107),D=t(5533);function z(e){let{children:n}=e;const t=function(){const{metadata:e,frontMatter:n,contentTitle:t}=c();return n.hide_title||void 0!==t?null:e.title}();return(0,l.jsxs)("div",{className:(0,u.A)(j.G.docs.docMarkdown,"markdown"),children:[t&&(0,l.jsx)("header",{children:(0,l.jsx)(U.A,{as:"h1",children:t})}),(0,l.jsx)(D.A,{children:n})]})}var W=t(1754),q=t(9169),$=t(6025);function Q(e){return(0,l.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,l.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const X={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function Y(){const e=(0,$.Ay)("/");return(0,l.jsx)("li",{className:"breadcrumbs__item",children:(0,l.jsx)(p.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,l.jsx)(Q,{className:X.breadcrumbHomeIcon})})})}const Z={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function J(e){let{children:n,href:t,isLast:s}=e;const a="breadcrumbs__link";return s?(0,l.jsx)("span",{className:a,itemProp:"name",children:n}):t?(0,l.jsx)(p.A,{className:a,href:t,itemProp:"item",children:(0,l.jsx)("span",{itemProp:"name",children:n})}):(0,l.jsx)("span",{className:a,children:n})}function K(e){let{children:n,active:t,index:s,addMicrodata:a}=e;return(0,l.jsxs)("li",{...a&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":t}),children:[n,(0,l.jsx)("meta",{itemProp:"position",content:String(s+1)})]})}function ee(){const e=(0,W.OF)(),n=(0,q.Dt)();return e?(0,l.jsx)("nav",{className:(0,u.A)(j.G.docs.docBreadcrumbs,Z.breadcrumbsContainer),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,l.jsxs)("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList",children:[n&&(0,l.jsx)(Y,{}),e.map(((n,t)=>{const s=t===e.length-1,a="category"===n.type&&n.linkUnlisted?void 0:n.href;return(0,l.jsx)(K,{active:s,index:t,addMicrodata:!!a,children:(0,l.jsx)(J,{href:a,isLast:s,children:n.label})},t)}))]})}):null}var ne=t(996);const te={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function se(e){let{children:n}=e;const t=function(){const{frontMatter:e,toc:n}=c(),t=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&n.length>0;return{hidden:s,mobile:a?(0,l.jsx)(S,{}):void 0,desktop:!a||"desktop"!==t&&"ssr"!==t?void 0:(0,l.jsx)(F,{})}}(),{metadata:{unlisted:s}}=c();return(0,l.jsxs)("div",{className:"row",children:[(0,l.jsxs)("div",{className:(0,u.A)("col",!t.hidden&&te.docItemCol),children:[s&&(0,l.jsx)(ne.A,{}),(0,l.jsx)(T,{}),(0,l.jsxs)("div",{className:te.docItemContainer,children:[(0,l.jsxs)("article",{children:[(0,l.jsx)(ee,{}),(0,l.jsx)(H,{}),t.mobile,(0,l.jsx)(z,{children:n}),(0,l.jsx)(I,{})]}),(0,l.jsx)(x,{})]})]}),t.desktop&&(0,l.jsx)("div",{className:"col col--3",children:t.desktop})]})}function ae(e){const n=`docs-doc-id-${e.content.metadata.id}`,t=e.content;return(0,l.jsx)(r,{content:e.content,children:(0,l.jsxs)(a.e3,{className:n,children:[(0,l.jsx)(d,{}),(0,l.jsx)(se,{children:(0,l.jsx)(t,{})})]})})}},9022:(e,n,t)=>{t.d(n,{A:()=>l});t(6540);var s=t(4164),a=t(8774),i=t(4848);function l(e){const{permalink:n,title:t,subLabel:l,isNext:o}=e;return(0,i.jsxs)(a.A,{className:(0,s.A)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:n,children:[l&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,i.jsx)("div",{className:"pagination-nav__label",children:t})]})}},7763:(e,n,t)=>{t.d(n,{A:()=>c});t(6540);var s=t(4164),a=t(5195);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=t(4848);const o="table-of-contents__link toc-highlight",r="table-of-contents__link--active";function c(e){let{className:n,...t}=e;return(0,l.jsx)("div",{className:(0,s.A)(i.tableOfContents,"thin-scrollbar",n),children:(0,l.jsx)(a.A,{...t,linkClassName:o,linkActiveClassName:r})})}},5195:(e,n,t)=>{t.d(n,{A:()=>b});var s=t(6540),a=t(6342);function i(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const s=t.slice(2,e.level);e.parentIndex=Math.max(...s),t[e.level]=n}));const s=[];return n.forEach((e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):s.push(a)})),s}function l(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:s}=e;return n.flatMap((e=>{const n=l({toc:e.children,minHeadingLevel:t,maxHeadingLevel:s});return function(e){return e.level>=t&&e.level<=s}(e)?[{...e,children:n}]:n}))}function o(e){const n=e.getBoundingClientRect();return n.top===n.bottom?o(e.parentNode):n}function r(e,n){let{anchorTopOffset:t}=n;const s=e.find((e=>o(e).top>=t));if(s){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,s.useRef)(void 0),t=c();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:i,maxHeadingLevel:l}=e;function o(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),o=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const s=[];for(let a=n;a<=t;a+=1)s.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(s.join()))}({minHeadingLevel:i,maxHeadingLevel:l}),c=r(o,{anchorTopOffset:t.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[e,t])}var u=t(8774),m=t(4848);function h(e){let{toc:n,className:t,linkClassName:s,isChild:a}=e;return n.length?(0,m.jsx)("ul",{className:a?void 0:t,children:n.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:s??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(h,{isChild:!0,toc:e.children,className:t,linkClassName:s})]},e.id)))}):null}const v=s.memo(h);function b(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:o="table-of-contents__link",linkActiveClassName:r,minHeadingLevel:c,maxHeadingLevel:u,...h}=e;const b=(0,a.p)(),x=c??b.tableOfContents.minHeadingLevel,g=u??b.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return(0,s.useMemo)((()=>l({toc:i(n),minHeadingLevel:t,maxHeadingLevel:a})),[n,t,a])}({toc:n,minHeadingLevel:x,maxHeadingLevel:g});return d((0,s.useMemo)((()=>{if(o&&r)return{linkClassName:o,linkActiveClassName:r,minHeadingLevel:x,maxHeadingLevel:g}}),[o,r,x,g])),(0,m.jsx)(v,{toc:p,className:t,linkClassName:o,...h})}},6133:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var s=t(4164),a=t(8774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=t(4848);function o(e){let{permalink:n,label:t,count:o,description:r}=e;return(0,l.jsxs)(a.A,{href:n,title:r,className:(0,s.A)(i.tag,o?i.tagWithCount:i.tagRegular),children:[t,o&&(0,l.jsx)("span",{children:o})]})}},2053:(e,n,t)=>{t.d(n,{A:()=>r});t(6540);var s=t(4164),a=t(1312),i=t(6133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var o=t(4848);function r(e){let{tags:n}=e;return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("b",{children:(0,o.jsx)(a.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,o.jsx)("ul",{className:(0,s.A)(l.tags,"padding--none","margin-left--sm"),children:n.map((e=>(0,o.jsx)("li",{className:l.tag,children:(0,o.jsx)(i.A,{...e})},e.permalink)))})]})}},996:(e,n,t)=>{t.d(n,{A:()=>h});t(6540);var s=t(4164),a=t(1312),i=t(5260),l=t(4848);function o(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function r(){return(0,l.jsx)(a.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,l.jsx)(i.A,{children:(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(7559),u=t(7293);function m(e){let{className:n}=e;return(0,l.jsx)(u.A,{type:"caution",title:(0,l.jsx)(o,{}),className:(0,s.A)(n,d.G.common.unlistedBanner),children:(0,l.jsx)(r,{})})}function h(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(c,{}),(0,l.jsx)(m,{...e})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/18c41134.946ac897.js b/assets/js/18c41134.946ac897.js
new file mode 100644
index 0000000..3f08cfe
--- /dev/null
+++ b/assets/js/18c41134.946ac897.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9262],{3849:(e,n,s)=>{s.r(n),s.d(n,{Highlight:()=>d,assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var r=s(4848),t=s(8453);const a={sidebar_position:4},o="Markdown Features",i={id:"tutorial-basics/markdown-features",title:"Markdown Features",description:"Docusaurus supports Markdown and a few additional features.",source:"@site/docs/tutorial-basics/markdown-features.mdx",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/markdown-features",permalink:"/docs/tutorial-basics/markdown-features",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:4,frontMatter:{sidebar_position:4}},c={},d=({children:e,color:n})=>{const s={span:"span",...(0,t.R)()};return(0,r.jsx)(s.span,{style:{backgroundColor:n,borderRadius:"20px",color:"#fff",padding:"10px",cursor:"pointer"},onClick:()=>{alert(`You clicked the color ${n} with label ${e}`)},children:e})},l=[{value:"Front Matter",id:"front-matter",level:2},{value:"Links",id:"links",level:2},{value:"Images",id:"images",level:2},{value:"Code Blocks",id:"code-blocks",level:2},{value:"Admonitions",id:"admonitions",level:2},{value:"MDX and React Components",id:"mdx-and-react-components",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",img:"img",p:"p",pre:"pre",strong:"strong",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"markdown-features",children:"Markdown Features"}),"\n",(0,r.jsxs)(n.p,{children:["Docusaurus supports ",(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"https://daringfireball.net/projects/markdown/syntax",children:"Markdown"})})," and a few ",(0,r.jsx)(n.strong,{children:"additional features"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"front-matter",children:"Front Matter"}),"\n",(0,r.jsxs)(n.p,{children:["Markdown documents have metadata at the top called ",(0,r.jsx)(n.a,{href:"https://jekyllrb.com/docs/front-matter/",children:"Front Matter"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",metastring:'title="my-doc.md"',children:"// highlight-start\n---\nid: my-doc-id\ntitle: My document title\ndescription: My document description\nslug: /my-custom-url\n---\n// highlight-end\n\n## Markdown heading\n\nMarkdown text with [links](./hello.md)\n"})}),"\n",(0,r.jsx)(n.h2,{id:"links",children:"Links"}),"\n",(0,r.jsx)(n.p,{children:"Regular Markdown links are supported, using url paths or relative file paths."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:"Let's see how to [Create a page](/create-a-page).\n"})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:"Let's see how to [Create a page](./create-a-page.md).\n"})}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Result:"})," Let's see how to ",(0,r.jsx)(n.a,{href:"/docs/tutorial-basics/create-a-page",children:"Create a page"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"images",children:"Images"}),"\n",(0,r.jsx)(n.p,{children:"Regular Markdown images are supported."}),"\n",(0,r.jsxs)(n.p,{children:["You can use absolute paths to reference images in the static directory (",(0,r.jsx)(n.code,{children:"static/img/docusaurus.png"}),"):"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:"![Docusaurus logo](/img/docusaurus.png)\n"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Docusaurus logo",src:s(5923).A+"",width:"200",height:"200"})}),"\n",(0,r.jsx)(n.p,{children:"You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:"![Docusaurus logo](./img/docusaurus.png)\n"})}),"\n",(0,r.jsx)(n.h2,{id:"code-blocks",children:"Code Blocks"}),"\n",(0,r.jsx)(n.p,{children:"Markdown code blocks are supported with Syntax highlighting."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:'```jsx title="src/components/HelloDocusaurus.js"\nfunction HelloDocusaurus() {\n return Hello, Docusaurus! ;\n}\n```\n'})}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-jsx",metastring:'title="src/components/HelloDocusaurus.js"',children:"function HelloDocusaurus() {\n return Hello, Docusaurus! ;\n}\n"})}),"\n",(0,r.jsx)(n.h2,{id:"admonitions",children:"Admonitions"}),"\n",(0,r.jsx)(n.p,{children:"Docusaurus has a special syntax to create admonitions and callouts:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-md",children:":::tip[My tip]\n\nUse this awesome feature option\n\n:::\n\n:::danger[Take care]\n\nThis action is dangerous\n\n:::\n"})}),"\n",(0,r.jsx)(n.admonition,{title:"My tip",type:"tip",children:(0,r.jsx)(n.p,{children:"Use this awesome feature option"})}),"\n",(0,r.jsx)(n.admonition,{title:"Take care",type:"danger",children:(0,r.jsx)(n.p,{children:"This action is dangerous"})}),"\n",(0,r.jsx)(n.h2,{id:"mdx-and-react-components",children:"MDX and React Components"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"https://mdxjs.com/",children:"MDX"})," can make your documentation more ",(0,r.jsx)(n.strong,{children:"interactive"})," and allows using any ",(0,r.jsx)(n.strong,{children:"React components inside Markdown"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-jsx",children:"export const Highlight = ({children, color}) => (\n {\n alert(`You clicked the color ${color} with label ${children}`)\n }}>\n {children}\n \n);\n\nThis is Docusaurus green !\n\nThis is Facebook blue !\n"})}),"\n","\n",(0,r.jsxs)(n.p,{children:["This is ",(0,r.jsx)(d,{color:"#25c2a0",children:"Docusaurus green"})," !"]}),"\n",(0,r.jsxs)(n.p,{children:["This is ",(0,r.jsx)(d,{color:"#1877F2",children:"Facebook blue"})," !"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},5923:(e,n,s)=>{s.d(n,{A:()=>r});const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAT3UlEQVR42u1dCVQVV5pWXNt2N0czykl33KImZ7IgKgqIghq3KCDK+qowCek2c2K0Mx3idBxakzYxJnZiq3Gf6Bg7UdN2R51MxnTSia3gew9Rwccm7oqiiIK4sPxTt1hEHo9XvPVW1fed852Dr+67UNb/1f3/+9/731atAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO8i2CxGjDUJXzMGmcSZnmoHAF7B6GMJvYPNwq5gk1AmMS/YJMbaahtkNsRLbeghmoU4d7cDAO+NCEbhQCMjrZbe5q81bhdyVOwuXbtqZdDSZ+yau9oBgNcgGeIvmzDQJkUy1ix8ZKMtsWvuagcAXsNYs/iyLSNlIgk2GebLQjKJQ6R/32+mbcWYI8KTrm6HJwR4170yCV80Y6T1I4kklH122lFNG9e2wxMC3Ao/U1KnQLPgF2SK/xeri5TiIxlikX1DBXVANpoXSy/DzGCjYfdYs2FRiFkcxWxEu/GF0RAm3fT1Bv8JJyV+LLlV08ccnNuFCQeGAdrheWkkXxaSGueruZFDurlrzfn4QSbDGRgAqJD3JK4NMcU8oo3RIz1hOB4q6AZeCzKK0aoXCIs58DBBt9Esfip5Ke3UPkN1Eg8TdB8N+5grr+JRxPAJHiLoTgaZhf97MiuqvVqTgNPxEEEPcK0qBTIyNa6rnWw1CLooJjHMUZc6KMWnNs9xDg8Q9ACLQtMMvbhfeFi7tuoLZMhBz1NczaUw2H4OFizhAYFe5l0uM+61m53wgMAWM+C7aBr425Ey2c8umPpdxmO+oxQPWz8cvnOmTGf7Gf1DDHXs25lYxMrIfmafOdnvOe4WONZsk4XhaD7nkJpAPQN96w2a/cw+c7S/QYsC6vuq46D/CHD+7zQaRvDmYsXVbG6CEWmZQ5YGWRk0+8zR/phb1bg/9pkLgvVk/twso+EViETbfPw1PyuDHrDQ36n4o6GL1eHRn7skDhlrEnZyuvbKMN/TIglKM9AzmyfLbzL2sBjZz89sniJfg2G7Nvbwad+m3qB9OrQh/z0RTschzK1yXZAu8zi/CxQ9NJL4fT6d+kwdQG27drB6q9WxXbcO1GfaAPL78wswcBfx6Y2T6ZHxv5DJfuY1acj5Kl55JHHPtOCBaOozZQC18mltUxhWlNoyobjwDQVyng/hVhyBaYbBrEKhW0aNL2Y85LO2lB37daHhX86AAemAPC4z6R5sEt9j6nWXONr8vJ3D4qhj287tIRIIxMP7PmrKd151p1vV3MjRtmt7eiT0F+QbN4z6xQ6T/eO2XdrbbP8z3y5wtyAQT+VAxAh336wcczQVhPfsKM+ANJWsYp+xRFS7Hh2b/C6LSWBIEIgnsuh73T1b1VRA3ql/dxq5d5bd74/4OlJu21TgjtktCMT9uwbdFJDXjx5TBzQ5cigRR71I/hZJ7bpbTwf3mT4QxgSBuHtbrSHcnUlAlstwxXqdgcmjmsyTIJkIgag2SGcZ8qYCckcWyAUdTpBnsBr398yWKTAoCESd07xD3rFeHMdmqxztj81uNe5v6B+CYVAQiAeD9qPiIOkP/NIVN9l//nArg/ZNeNLh/nzjn7Tqr//rw2FQEIg6M+lN7RcY/LvR3PQHupdh6S9R+LH5ZMh8i17NfoeS81bSO6fX0cfn/ps2X/wL7bzyv/TNtYP0z5KjdLw0hwrKL1DR/Rt0r+q+Plys0d/HyMtDGib4nNlx5ur+QPcZuLPQTSa9bjk0oyuM2dX9adm4Zx57jeIzk+lXliX0Ru4KSjm1hlac/S/69MKXtP3yXvrr1b/Td8WplHbzOGWV5dPZO5fo+v0Slxi4ZgTiiUw66BoD/32BPQO/zI2Ba0cgbs6kg9aMPfFbWn5mM/258H80a+CaEYi7M+ngA7JR4ERpHgFqEogbM+lgDSelv0LfFx+B1SNIBxtzWsarlH27ABavZoF4YsOUHhliEuX4AlCOwsJC2rVrF7+JwjHGuU8Em4X9MHDn+afzOzRtzGVlZbR69WqKjY2lqKgoev/996m4uNihvqqrqyklJYU6dKhf3Kq/Pel6izuKK246bYQXLlygvXv30ldffUWZmZlO9cX6CAwMpI4dO1Lbtm3pueeeo61btzrUV1ZWFj3++ONWKxseffRRMpvNLe7vzTffrClF5ONDEydOhIuldb53ZqNTxpyfn08RERFWBsiM2mQytbi/+fPn29zCnJSU1KK+ioqKyNe3poTpU089RRs3bqTt27dTQEBAvUiuXr2quL8ff/xRFgYT7e7duxGk64E/FBsdFsfhw4epR48eNTsvO3WioKAgmjRpEvXu3Vv+rHPnzvTTTz8p7u/dd9+tqXwouS/Lly+nS5cuUUlJCa1fv17ui11j7pFSTJs2Tf4O+7tu3bpV//ndu3fr3v40Y8YMRX1VVFTQkCFD5O8sW7YMmXS98MLdQofEYbFYqFu3brLBsBGEBa11KC0tpcTERPkaa8NGGXs4ePCg/HZu06YN7du3z+r6/v3769/e6enpdvvbs2dPTeHrnj1l968xLl68SN2712yR/vbbb+3299lnn8ltn3jiCbp37x4y6XphedWdFouDBbiDBw+WDWb27NlUWVlp1aaqqooiIyPlNsOHD3/IqBrj9u3bNGjQILnt4sWLbbZbuHCh3Mbf37/J31kH9rvq+mPBuS2w0Yi18fPzk4NvW2C/iwmDtd22bRsy6RAINWvM48aNq48z2L9tgblH/fv3l9suWLDAZrt58+bJbZ5++ulmhcRGpscee8yu4a9YsUJuM2zYMNk1soXy8nLq16+f3Hbnzp0227EJAtZm4MCBVv0hkw4XS8aNGzdkV4S9bZmxMMM6f/683e+lpaVR+/Y1W5A//PBDq+vr1q2Tr7E2GRkZil2nrl27Um5ubpOTBuwaa/PNN9/Y7a/u97MRgsUmjcE+Y8JgbbZs2YJMut6oZGnJ6NGjHz5bQzKYggLlWXf2BmbxA/suC+LZbNKOHTsoLi6OWrduLXPz5s2K+2P5DNYXC5rz8h6sGbt8+bI8qrFrrI3S4JuNNOw7ycnJVtfffvvtZkcjTPNqnMtOb7BrRGPGjJFnlpiRfPDBB826VbbABNGrVy/rii/t2tGqVata7OY9++yz8ve7dOkiC41NAdfNng0dOlR2x5TCaDTKfwf77tKlS2UhsJiEuXFs0oCJ+9ChQ+pYauKOPel65sT0JJckCpXmJVhgzLLZM2fOpEWLFj00ArR0oqCp/AuLj9hI0lIwkbKRrG7mqy42YVyyZIl61mJhqYnruercdtUuI2HTzZs2baK1a9fSkSPOrURm8U1droOxb9++tGHDBixWxGJFkVJLjmEFYoMcCYuxmpsBQ5Cuu+Xu8+hk2SmoQ63L3ZFJ90w8cuD6YVi9KgWCTLrHuDB3uVwep5qqoQC1CASZdM8z+sQb9P6ZTbSjcD+KNnAvEGTSUfYHAkGQDoGhcBymeUGUHkUmHdS6wG5VlmFPOgjq/gAdEMQRbCCoZYEgkw5CIMikgxAIMukgBIJMOgiBIEgHIRBM84KgegSCTDoIgSCTzvcWXbNAv7bE0/oL0fSPG1F0+k4k3aoMp4rqmUSkL8LFAus563gCbb88h4ruR+hOCKoQCIJ07/CFDAP9rWg23a+GILgVCDLp3uGSghi6WREOMXAvEGTSPcrxUpzxtTRqQAQqEQgCck9WNzFQasksCEBVAkEm3WMjB8SBIB20QbhVmOYFbXBpQazLDYjlR25XhetGIJOyXuw5JntuF2TSNVd61EAlLpytqpa4sjCWJmSLMtdcidG2QKhV67CcxHVh2WJVLVcik65zjmVZ9QyRxmcKFHpSJMkoaGqOSHGnDPTGuXj53w1pLIvSnECk+yoPzRZPh2Un/r3x/YZZEifBxdLrcpOMB6JQyt3Fc7QokOb4OoJ0vdEs0LgTLRNGHQ/cnE07JZEcLo2SXTCtC2RCdmJ8aI64MNSSOI25YMik64COiqMxPy6M0cMI0oDCGmTSdeBWuUIcYbWBe6kGZrdacM/VIafF7sikazggb2nMYU8gJZURehJIVUhO0iPIpGt29HCdOBj/qDMXS3ohfIogXctLUDJd516xaeCvb8yhMv24WGekQP2VsFNJ3TDNq1G60r2qY4IkFLWLpIX3fMojIkEm3QsV0LMFlwuEcfS/P0N+ft29ypdf/qWnBEJhFiEJmXQIRDH7RQ2uP5fcW+zbt6PHBDIhJ/EluFhwsRRxzsl4OmgeTyZTiFdZXDzVUwLJd6uLhSBdO0H63huzdRWkM9fKreJAJl07SULGjy7H6iuTbhHXI5Ou8URhGBKFHCcKEZB7fxQ5iqUm/C41QSadk8WKrhHJJ4X6crFCLeKfkEnXiavl7HL31LJZutgPUrfcPSxXmIoNU3rcMGURsGGKpw1TyKTzKZTxmWJtnkT6OSOBxhyYRX6fPW9lML0C+3k9KdgUR47s4dSWW4kF3Gy5RSbdtXTUMEaM6NG84bVuRUNSAiThSCNNlkCDk/25FAfjqFE9XVO0IVtcW1uwoTLMInyEsj86FohSllaGU7mOyv5MPR7bIyRrXmcUjoNAQFR3h0BAVHeHQEBUdwchEFR3ByEQVHdHkA6BQCCY5oVAIBBk0tUrEH//Htwm/jyZSedWIMikc55JVxFdkkmHiwWBgAjSIRAQmXQQAkEmHYRAkEkHeRDIP0ujaOG5eJqWK8j8jfQzOyQHAkEmXfcC2XA12uaOuk1F0RAIgnRtC4Qd4XyifBZZ7kRaHefMRg5722wbjySsD9YX61MLx0OH5cwNnJwX1xXTvDoTyF3JeD8pjKHncx4Y+xTp51VXYuRrrM3CJk6ybUx22u2D/mLlPuquTc4RavqrVv2e9LthOcKqgPNRP0MmXQcCqZAMdsFZ28b/unTNf1QvGpceZ1cg48xx5NPOh4Z/PsVmG79tz1Prtj5q3ZPekD/4mZLaIZOu9dpXx+1XKBl3XFlFk9BMAw1+a4Tddo8Zhqkyk95EQbz5cLG0Xsk9S3TLUQfN8ddnErRS9seMIF3rZ4FYPC+QF3IFrQjkFjLpOAvE5UwsMGhFIBZk0rV+FsgJweMC+Vilp95a34uwBpl0rdffNXtWIKzS+9Hbs2hlYSwZThnkqWA2onx+LZr7KeDGFdxDsw3jwnIS18mnSWWLd9iIEmpJfMvtU8DIpHtwBMny/Ahii/8mBe88JxRb8BJIc3tCEUG6Nt0re/zgcozqBVLrfm3GNK+aC1Ef408cjBM5Po2qhfdS6dZTppBJd2/cEWoRuRQIY8/RfdWQSbfP3LlhSoPuxSGpcb7IpMO1UsIe/n1UkUm3OxrmCsF2jTs09aU+0kO5zQwcLhYHTBe5Fgdb1HirMlwLLtbdSVkv9lSS01ha93CCzMpP4UGQzve5g+7iHzk+z7CF97JWadIvr8EDqmJZcmTSvUSzd5aWKOX8swn1y+tVLpCD001JnezHHkdE/yYe1B17IkEm3U3BeTq/o8faK9Hy0nvVn3JrET5SvAxeeii/sfGwqqSY5DVk0j3sXh3jd/Rgm7V43+Ou8F7uSyyT+P1EizjdnkC+sDPk7x+TPrcvMukemr3K5DtA532PuyP3EZojvtvc9G6mggd3LcgoLAg49PD6FQTp7li5K6hGIE3tcVejQGSRWBKn2RpBLrXgAbK2vws0zu2PaV7t7P1whnV73NUuEHZstC2B3HFwtuVIkEn8cKxRiJFGkn8NyZgbGGw07IaROzmCZKtLIGyPu6oz6fY2VkkP5R4MEwJxlCGmOG4y6ferw525l5u2BHIdhsmRQOBiOUy2gNLhGCRb/M6ZIB3U8PZaZ5haNosbgRTcjXT8XnKFqbZGkK9gmDxtjlKPOLZwNs37j1uzHbwXYWlzOwMXwTCRKFSaKJyeK8huFU8jh5K6xNaJQqGUuVU2R476aVqzOAqGiaUmSnjmXiTXy0xePZOgLN7ISxymfL06pfhID+YcjJMTgXAah7xymu9CclfuR8jFJhTcy1EHSvgYlsE41VVq1NPccX0O1wJhFVcU3UuOmNzyfeWpcb7Ih/C1YYqnfAirsnijkt8l7iz/EZ1vUJQMnJif0NvRQnBrYZw8bZriRyDbrvE9euwpnqOs1E+OsNjhogsBh17sKT2YIhgnLxunRC7WZc3OF6ic4w1SN6WRLTJP0ehxOSRrXmfn6lwZxWgYJ8r+NKywmMbhdG5DLrkYp+ReqsbnGCa7qij1pzBOVDdh3HqN7zMN/3pjttLA/D9dVt8q6suoNmNNwl9gnPreRPV76c1czbE4WKJyUo6il8euFErxcWkROD9TUqdgk2EfjJOf3IgnRfLepViqrOY37mCbtKbmKhLH1pDvU9q6pVIi29SOmS19zWxNqC3MUM25W6Vg5KhmhRlaUavWHjgoxzAHs1scBe4ZclUOl4sjJt9AxrIoboVRUhmuNCA/F2ZJnOTRs0BC0wy9gk3iamyr5ad2lquCd1alZM2VGG6PNGBJQJbnCM+ze7+sSslKr56RPj7D0K92WQrWbnEiFLYsxZG1W2zEYMszeC0herUiQv77FGTIz7EDcRSVEPUYKMUnyGgYIY0qyVIAuVN6WMdrdyZiuYqXgvixRwX5KOjxmTWLHdnORLZchfnrEdLb9+XTCZKLEiv78GfvRXA0QsykmxXhlF8eST8UR9G6i9H0q7x4Cm10H2HZQoUkhmsSj0/IFnZOyBFeDctNGNoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsI3/BxVeQNnL1kBuAAAAAElFTkSuQmCC"},8453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>i});var r=s(6540);const t={},a=r.createContext(t);function o(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/1b6ec5d4.440a55b5.js b/assets/js/1b6ec5d4.440a55b5.js
new file mode 100644
index 0000000..4ed156b
--- /dev/null
+++ b/assets/js/1b6ec5d4.440a55b5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4365],{7850:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>s,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var n=t(4848),r=t(8453);const i={},c="Architecture",a={id:"location-proof-protocol/architecture",title:"Architecture",description:"We are designing the overall architecture of the onchain component of the generalized location proof protocol. If you'd like to weigh in \u2014",source:"@site/docs/location-proof-protocol/architecture.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/architecture",permalink:"/docs/location-proof-protocol/architecture",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Rationale",permalink:"/docs/location-proof-protocol/rationale"},next:{title:"EAS Schema",permalink:"/docs/location-proof-protocol/eas-schema"}},s={},d=[{value:"Abstract",id:"abstract",level:2}];function l(e){const o={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",p:"p",strong:"strong",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.h1,{id:"architecture",children:"Architecture"}),"\n",(0,n.jsxs)(o.p,{children:["We are designing the overall architecture of the onchain component of the generalized location proof protocol. If you'd like to weigh in \u2014\nor help us build it! \u2014\xa0reach out on ",(0,n.jsx)(o.a,{href:"https://t.me/+UkTOSXnDcDM5ZTBk",children:"Telegram"}),"."]}),"\n",(0,n.jsx)(o.p,{children:"Here's the top-level abstract of the work we're doing:"}),"\n",(0,n.jsx)(o.h2,{id:"abstract",children:"Abstract"}),"\n",(0,n.jsxs)(o.p,{children:["This spike examines two approaches of extensible contracts, managed by a ",(0,n.jsx)(o.code,{children:"*RecipeCoordinator.sol*"})," contract that controls the addition and\nupgrade of multiple implementation contracts. These implementation contracts each hold a ",(0,n.jsx)(o.em,{children:"recipe"})," for a \u201cproof-of-location\u201d strategy."]}),"\n",(0,n.jsxs)(o.p,{children:["The primary purpose of this design is to coordinate the addition, use and upgrade of these recipes / strategies, through one coordinating\ncontract \u2014 ",(0,n.jsx)(o.code,{children:"RecipeCoordinator.sol"}),". Adding recipes is a ",(0,n.jsx)(o.strong,{children:"permissionless"}),", public action taken through the ",(0,n.jsx)(o.code,{children:"RecipeCoordinator"}),". Upgrade\nfunctionality is required for both the RecipeCoordinator and, optionally, on recipe implementation contracts."]}),"\n",(0,n.jsx)(o.p,{children:"In this spike, we consider two architectural design patterns to serve this purpose: the Diamond pattern and ERC-165 interface matching."}),"\n",(0,n.jsxs)(o.admonition,{type:"note",children:[(0,n.jsxs)(o.p,{children:["For example, a team developing a proof-of-location strategy that requires users to scan NFC devices would implement the Solidity code to\nrecord and verify location proofs, then register the implementation with the ",(0,n.jsx)(o.code,{children:"RecipeCoordinator"}),"."]}),(0,n.jsxs)(o.p,{children:["The \u201crecipe\u201d would describe the shape + content of the data that needs to be included in a location proof for it to adhere to that strategy.\nThe implementation contract developed by the strategy designers would include a ",(0,n.jsx)(o.code,{children:"verify"})," method."]})]}),"\n",(0,n.jsx)(o.admonition,{type:"warning",children:(0,n.jsx)(o.p,{children:"This is all work in progress, we'd love input!"})})]})}function h(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},8453:(e,o,t)=>{t.d(o,{R:()=>c,x:()=>a});var n=t(6540);const r={},i=n.createContext(r);function c(e){const o=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(i.Provider,{value:o},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/1df93b7f.0275efec.js b/assets/js/1df93b7f.0275efec.js
new file mode 100644
index 0000000..9f47cca
--- /dev/null
+++ b/assets/js/1df93b7f.0275efec.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4583],{870:(e,a,t)=>{t.d(a,{A:()=>c});var l,r=t(6540);function n(){return n=Object.assign?Object.assign.bind():function(e){for(var a=1;a{let{title:a,titleId:t,...c}=e;return r.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",width:1088,height:687.962,viewBox:"0 0 1088 687.962","aria-labelledby":t},c),void 0===a?r.createElement("title",{id:t},"Easy to Use"):a?r.createElement("title",{id:t},a):null,l||(l=r.createElement("g",{"data-name":"Group 12"},r.createElement("g",{"data-name":"Group 11"},r.createElement("path",{fill:"#3f3d56",d:"M961.81 454.442c-5.27 45.15-16.22 81.4-31.25 110.31-20 38.52-54.21 54.04-84.77 70.28a193 193 0 0 1-27.46 11.94c-55.61 19.3-117.85 14.18-166.74 3.99a657 657 0 0 0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07 5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12 52.29-235.46 134.74-296.47 155.97-115.41 369.76-110.57 523.43 7.88 102.36 78.9 198.2 198.31 179.02 362.74","data-name":"Path 83"}),r.createElement("path",{fill:"#f2f2f2",d:"M930.56 564.752c-20 38.52-47.21 64.04-77.77 80.28a193 193 0 0 1-27.46 11.94c-55.61 19.3-117.85 14.18-166.74 3.99a657 657 0 0 0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25 1.72c-100.17 7.36-253.82-6.43-321.42-143.29L326 177.962l62.95 161.619 20.09 51.59 55.37-75.98L493 275.962l130.2 149.27 36.8-81.27 254.78 207.919 14.21 11.59Z","data-name":"Path 84"}),r.createElement("path",{d:"m302 282.962 26-57 36 83-31-60Z","data-name":"Path 85",opacity:.1}),r.createElement("path",{d:"M554.5 647.802q-14.97-.675-29.97-.67l-115.49-255.96Z","data-name":"Path 86",opacity:.1}),r.createElement("path",{d:"M464.411 315.191 493 292.962l130 150-132-128Z","data-name":"Path 87",opacity:.1}),r.createElement("path",{d:"M852.79 645.032a193 193 0 0 1-27.46 11.94L623.2 425.232Z","data-name":"Path 88",opacity:.1}),r.createElement("circle",{cx:3,cy:3,r:3,fill:"#f2f2f2","data-name":"Ellipse 11",transform:"translate(479 98.962)"}),r.createElement("circle",{cx:3,cy:3,r:3,fill:"#f2f2f2","data-name":"Ellipse 12",transform:"translate(396 201.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 13",transform:"translate(600 220.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 14",transform:"translate(180 265.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 15",transform:"translate(612 96.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 16",transform:"translate(736 192.962)"}),r.createElement("circle",{cx:2,cy:2,r:2,fill:"#f2f2f2","data-name":"Ellipse 17",transform:"translate(858 344.962)"}),r.createElement("path",{fill:"#f2f2f2",d:"M306 121.222h-2.76v-2.76h-1.48v2.76H299v1.478h2.76v2.759h1.48V122.7H306Z","data-name":"Path 89"}),r.createElement("path",{fill:"#f2f2f2",d:"M848 424.222h-2.76v-2.76h-1.48v2.76H841v1.478h2.76v2.759h1.48V425.7H848Z","data-name":"Path 90"}),r.createElement("path",{fill:"#3f3d56",d:"M1088 613.962c0 16.569-243.557 74-544 74s-544-57.431-544-74 243.557 14 544 14 544-30.568 544-14","data-name":"Path 91"}),r.createElement("path",{d:"M1088 613.962c0 16.569-243.557 74-544 74s-544-57.431-544-74 243.557 14 544 14 544-30.568 544-14","data-name":"Path 92",opacity:.1}),r.createElement("ellipse",{cx:544,cy:30,fill:"#3f3d56","data-name":"Ellipse 18",rx:544,ry:30,transform:"translate(0 583.962)"}),r.createElement("path",{fill:"#ff6584",d:"M568 571.962c0 33.137-14.775 24-33 24s-33 9.137-33-24 33-96 33-96 33 62.863 33 96","data-name":"Path 93"}),r.createElement("path",{d:"M550 584.641c0 15.062-6.716 10.909-15 10.909s-15 4.153-15-10.909 15-43.636 15-43.636 15 28.576 15 43.636","data-name":"Path 94",opacity:.1}),r.createElement("rect",{width:92,height:18,fill:"#2f2e41","data-name":"Rectangle 97",rx:9,transform:"translate(489 604.962)"}),r.createElement("rect",{width:92,height:18,fill:"#2f2e41","data-name":"Rectangle 98",rx:9,transform:"translate(489 586.962)"}),r.createElement("path",{fill:"#3f3d56",d:"M137 490.528c0 55.343 34.719 100.126 77.626 100.126","data-name":"Path 95"}),r.createElement("path",{fill:"#6c63ff",d:"M214.626 590.654c0-55.965 38.745-101.251 86.626-101.251","data-name":"Path 96"}),r.createElement("path",{fill:"#6c63ff",d:"M165.125 495.545c0 52.57 22.14 95.109 49.5 95.109","data-name":"Path 97"}),r.createElement("path",{fill:"#3f3d56",d:"M214.626 590.654c0-71.511 44.783-129.377 100.126-129.377","data-name":"Path 98"}),r.createElement("path",{fill:"#a8a8a8",d:"M198.3 591.36s11.009-.339 14.326-2.7 16.934-5.183 17.757-1.395 16.544 18.844 4.115 18.945-28.879-1.936-32.19-3.953-4.008-10.897-4.008-10.897","data-name":"Path 99"}),r.createElement("path",{d:"M234.716 604.89c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7 8.879 4.009 10.9 19.761 4.053 32.19 3.953c3.588-.029 4.827-1.305 4.759-3.2-.498 1.142-1.867 1.855-4.537 1.877","data-name":"Path 100",opacity:.2}),r.createElement("path",{fill:"#3f3d56",d:"M721.429 527.062c0 38.029 23.857 68.8 53.341 68.8","data-name":"Path 101"}),r.createElement("path",{fill:"#6c63ff",d:"M774.769 595.863c0-38.456 26.623-69.575 59.525-69.575","data-name":"Path 102"}),r.createElement("path",{fill:"#6c63ff",d:"M740.755 530.509c0 36.124 15.213 65.354 34.014 65.354","data-name":"Path 103"}),r.createElement("path",{fill:"#3f3d56",d:"M774.769 595.863c0-49.139 30.773-88.9 68.8-88.9","data-name":"Path 104"}),r.createElement("path",{fill:"#a8a8a8",d:"M763.548 596.348s7.565-.233 9.844-1.856 11.636-3.562 12.2-.958 11.368 12.949 2.828 13.018-19.844-1.33-22.119-2.716-2.753-7.488-2.753-7.488","data-name":"Path 105"}),r.createElement("path",{d:"M788.574 605.645c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479 6.1 2.755 7.487 13.579 2.785 22.119 2.716c2.465-.02 3.317-.9 3.27-2.2-.343.788-1.283 1.278-3.118 1.293","data-name":"Path 106",opacity:.2}),r.createElement("path",{fill:"#a8a8a8",d:"M893.813 618.699s11.36-1.729 14.5-4.591 16.89-7.488 18.217-3.667 19.494 17.447 6.633 19.107-30.153 1.609-33.835-.065-5.515-10.784-5.515-10.784","data-name":"Path 107"}),r.createElement("path",{d:"M933.228 628.154c-12.86 1.659-30.153 1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833 9.109 5.516 10.783 20.975 1.725 33.835.065c3.712-.479 4.836-1.956 4.529-3.906-.375 1.246-1.703 2.156-4.466 2.512","data-name":"Path 108",opacity:.2}),r.createElement("path",{fill:"#a8a8a8",d:"M614.26 617.881s9.587-1.459 12.237-3.875 14.255-6.32 15.374-3.095 16.452 14.725 5.6 16.125-25.448 1.358-28.555-.055-4.656-9.1-4.656-9.1","data-name":"Path 109"}),r.createElement("path",{d:"M647.524 625.856c-10.853 1.4-25.448 1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547 7.687 4.655 9.1 17.7 1.456 28.555.055c3.133-.4 4.081-1.651 3.822-3.3-.314 1.057-1.435 1.825-3.767 2.125","data-name":"Path 110",opacity:.2}),r.createElement("path",{fill:"#a8a8a8",d:"M122.389 613.09s7.463-1.136 9.527-3.016 11.1-4.92 11.969-2.409 12.808 11.463 4.358 12.553-19.811 1.057-22.23-.043-3.624-7.085-3.624-7.085","data-name":"Path 111"}),r.createElement("path",{d:"M148.285 619.302c-8.449 1.09-19.811 1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2 5.984 3.624 7.085 13.781 1.133 22.23.043c2.439-.315 3.177-1.285 2.976-2.566-.246.818-1.119 1.416-2.934 1.65","data-name":"Path 112",opacity:.2}),r.createElement("path",{d:"M383.7 601.318c0 30.22-42.124 20.873-93.7 20.873s-93.074 9.347-93.074-20.873 42.118-36.793 93.694-36.793 93.08 6.573 93.08 36.793","data-name":"Path 113",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"M383.7 593.881c0 30.22-42.124 20.873-93.7 20.873s-93.074 9.347-93.074-20.873 42.114-36.8 93.69-36.8 93.084 6.576 93.084 36.8","data-name":"Path 114"})),r.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M360.175 475.732h91.791v37.153h-91.791Z","data-name":"Path 40"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M277.126 597.026a21.83 21.83 0 0 1-18.908-10.927 21.829 21.829 0 0 0 18.908 32.782h21.855v-21.855Z","data-name":"Path 41"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"m375.451 481.607 76.514-4.782v-10.928a21.854 21.854 0 0 0-21.855-21.855h-98.347l-2.732-4.735a3.154 3.154 0 0 0-5.464 0l-2.732 4.732-2.732-4.732a3.154 3.154 0 0 0-5.464 0l-2.732 4.732-2.731-4.732a3.154 3.154 0 0 0-5.464 0l-2.732 4.735h-.071l-4.526-4.525a3.153 3.153 0 0 0-5.276 1.414l-1.5 5.577-5.674-1.521a3.154 3.154 0 0 0-3.863 3.864l1.52 5.679-5.575 1.494a3.155 3.155 0 0 0-1.416 5.278l4.526 4.526v.07l-4.735 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.727a3.154 3.154 0 0 0 0 5.464l4.735 2.736-4.735 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.732a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.731a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.735a3.154 3.154 0 0 0 0 5.464l4.732 2.732-4.732 2.728a3.154 3.154 0 0 0 0 5.464l4.732 2.732a21.854 21.854 0 0 0 21.858 21.855h131.13a21.854 21.854 0 0 0 21.855-21.855v-87.42l-76.514-4.782a11.632 11.632 0 0 1 0-23.219","data-name":"Path 42"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M408.255 618.882h32.782v-43.71h-32.782Z","data-name":"Path 43"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M462.893 591.563a5 5 0 0 0-.7.07c-.042-.164-.081-.329-.127-.493a5.457 5.457 0 1 0-5.4-9.372q-.181-.185-.366-.367a5.454 5.454 0 1 0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467 5.467 0 1 0-10.788 0c-.162.042-.325.08-.486.126a5.457 5.457 0 1 0-9.384 5.4 21.843 21.843 0 1 0 36.421 21.02 5.452 5.452 0 1 0 .7-10.858","data-name":"Path 44"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M419.183 553.317h32.782v-21.855h-32.782Z","data-name":"Path 45"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M462.893 545.121a2.732 2.732 0 1 0 0-5.464 3 3 0 0 0-.349.035c-.022-.082-.04-.164-.063-.246a2.733 2.733 0 0 0-1.052-5.253 2.7 2.7 0 0 0-1.648.566q-.09-.093-.184-.184a2.7 2.7 0 0 0 .553-1.633 2.732 2.732 0 0 0-5.245-1.07 10.928 10.928 0 1 0 0 21.031 2.732 2.732 0 0 0 5.245-1.07 2.7 2.7 0 0 0-.553-1.633q.093-.09.184-.184a2.7 2.7 0 0 0 1.648.566 2.732 2.732 0 0 0 1.052-5.253q.033-.122.063-.246a3 3 0 0 0 .349.035","data-name":"Path 46"}),r.createElement("path",{fillRule:"evenodd",d:"M320.836 479.556a2.73 2.73 0 0 1-2.732-2.732 8.2 8.2 0 0 0-16.391 0 2.732 2.732 0 0 1-5.464 0 13.66 13.66 0 0 1 27.319 0 2.73 2.73 0 0 1-2.732 2.732","data-name":"Path 47"}),r.createElement("path",{fill:"#ffff50",fillRule:"evenodd",d:"M364.546 618.881h65.565a21.854 21.854 0 0 0 21.855-21.855v-76.492h-65.565a21.854 21.854 0 0 0-21.855 21.855Z","data-name":"Path 48"}),r.createElement("path",{fillRule:"evenodd",d:"M435.596 554.41h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0-54.434h-54.681a1.093 1.093 0 1 1 0-2.185h54.681a1.093 1.093 0 0 1 0 2.185m0 21.652h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m0 21.855h-54.681a1.093 1.093 0 1 1 0-2.186h54.681a1.093 1.093 0 0 1 0 2.186m16.369-100.959c-.013 0-.024-.007-.037-.005-3.377.115-4.974 3.492-6.384 6.472-1.471 3.114-2.608 5.139-4.473 5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932 3.053-6.346 5.646-1.5 2.762-2.529 4.442-4.5 4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879 2.606-6.3 4.808-1.5 2.328-2.552 3.746-4.551 3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807 2.153-6.224 3.954-1.346 1.709-2.4 3.062-4.621 2.977a1.094 1.094 0 0 0-.079 2.186c3.3.11 4.967-1.967 6.417-3.81 1.286-1.635 2.4-3.045 4.582-3.12 2.1-.09 3.091 1.218 4.584 3.327 1.417 2 3.026 4.277 6.263 4.394 3.391.114 5.022-2.42 6.467-4.663 1.292-2 2.406-3.734 4.535-3.807 1.959-.073 3.026 1.475 4.529 4.022 1.417 2.4 3.023 5.121 6.324 5.241 3.415.118 5.064-2.863 6.5-5.5 1.245-2.282 2.419-4.437 4.5-4.509 1.959-.046 2.981 1.743 4.492 4.732 1.412 2.79 3.013 5.95 6.365 6.071h.185c3.348 0 4.937-3.36 6.343-6.331 1.245-2.634 2.423-5.114 4.444-5.216Z","data-name":"Path 49"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M342.691 618.882h43.71v-43.71h-43.71Z","data-name":"Path 50"}),r.createElement("g",{"data-name":"Group 8",transform:"rotate(-14.98 2188.845 -1120.376)"},r.createElement("rect",{width:92.361,height:36.462,fill:"#d8d8d8","data-name":"Rectangle 3",rx:2}),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 2",transform:"translate(1.531 23.03)"},r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 4",rx:1,transform:"translate(16.797)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 5",rx:1,transform:"translate(23.12)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 6",rx:1,transform:"translate(29.444)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 7",rx:1,transform:"translate(35.768)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 8",rx:1,transform:"translate(42.091)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 9",rx:1,transform:"translate(48.415)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 10",rx:1,transform:"translate(54.739)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 11",rx:1,transform:"translate(61.063)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 12",rx:1,transform:"translate(67.386)"}),r.createElement("path",{fillRule:"evenodd",d:"M1.093 0h13.425a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H1.093A1.093 1.093 0 0 1 0 4.243v-3.15A1.093 1.093 0 0 1 1.093 0M75 0h13.426a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H75a1.093 1.093 0 0 1-1.093-1.093v-3.15A1.093 1.093 0 0 1 75 0","data-name":"Path 51"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 3",transform:"translate(1.531 10.261)"},r.createElement("path",{fillRule:"evenodd",d:"M1.093 0h5.125A1.093 1.093 0 0 1 7.31 1.093v3.149a1.093 1.093 0 0 1-1.092 1.093H1.093A1.093 1.093 0 0 1 0 4.242V1.093A1.093 1.093 0 0 1 1.093 0","data-name":"Path 52"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 13",rx:1,transform:"translate(8.299)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 14",rx:1,transform:"translate(14.623)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 15",rx:1,transform:"translate(20.947)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 16",rx:1,transform:"translate(27.271)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 17",rx:1,transform:"translate(33.594)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 18",rx:1,transform:"translate(39.918)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 19",rx:1,transform:"translate(46.242)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 20",rx:1,transform:"translate(52.565)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 21",rx:1,transform:"translate(58.888)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 22",rx:1,transform:"translate(65.212)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 23",rx:1,transform:"translate(71.536)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 24",rx:1,transform:"translate(77.859)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 25",rx:1,transform:"translate(84.183)"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 4",transform:"rotate(180 45.525 4.773)"},r.createElement("path",{fillRule:"evenodd",d:"M1.093 0h5.126a1.093 1.093 0 0 1 1.093 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093H1.093A1.093 1.093 0 0 1 0 4.243v-3.15A1.093 1.093 0 0 1 1.093 0","data-name":"Path 53"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 26",rx:1,transform:"translate(8.299)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 27",rx:1,transform:"translate(14.623)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 28",rx:1,transform:"translate(20.947)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 29",rx:1,transform:"translate(27.271)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 30",rx:1,transform:"translate(33.594)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 31",rx:1,transform:"translate(39.918)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 32",rx:1,transform:"translate(46.242)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 33",rx:1,transform:"translate(52.565)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 34",rx:1,transform:"translate(58.889)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 35",rx:1,transform:"translate(65.213)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 36",rx:1,transform:"translate(71.537)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 37",rx:1,transform:"translate(77.86)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 38",rx:1,transform:"translate(84.183)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 39",rx:1,transform:"translate(8.299)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 40",rx:1,transform:"translate(14.623)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 41",rx:1,transform:"translate(20.947)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 42",rx:1,transform:"translate(27.271)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 43",rx:1,transform:"translate(33.594)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 44",rx:1,transform:"translate(39.918)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 45",rx:1,transform:"translate(46.242)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 46",rx:1,transform:"translate(52.565)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 47",rx:1,transform:"translate(58.889)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 48",rx:1,transform:"translate(65.213)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 49",rx:1,transform:"translate(71.537)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 50",rx:1,transform:"translate(77.86)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 51",rx:1,transform:"translate(84.183)"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 6"},r.createElement("path",{fillRule:"evenodd",d:"M2.624 16.584h7.3a1.093 1.093 0 0 1 1.092 1.093v3.15a1.093 1.093 0 0 1-1.093 1.093h-7.3a1.093 1.093 0 0 1-1.092-1.093v-3.149a1.093 1.093 0 0 1 1.093-1.094","data-name":"Path 54"}),r.createElement("g",{"data-name":"Group 5",transform:"translate(12.202 16.584)"},r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 52",rx:1}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 53",rx:1,transform:"translate(6.324)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 54",rx:1,transform:"translate(12.647)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 55",rx:1,transform:"translate(18.971)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 56",rx:1,transform:"translate(25.295)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 57",rx:1,transform:"translate(31.619)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 58",rx:1,transform:"translate(37.942)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 59",rx:1,transform:"translate(44.265)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 60",rx:1,transform:"translate(50.589)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 61",rx:1,transform:"translate(56.912)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 62",rx:1,transform:"translate(63.236)"})),r.createElement("path",{fillRule:"evenodd",d:"M83.053 16.584h6.906a1.093 1.093 0 0 1 1.091 1.093v3.15a1.093 1.093 0 0 1-1.091 1.093h-6.907a1.093 1.093 0 0 1-1.093-1.093v-3.149a1.093 1.093 0 0 1 1.093-1.094Z","data-name":"Path 55"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 7",transform:"translate(1.531 29.627)"},r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 63",rx:1}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 64",rx:1,transform:"translate(6.324)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 65",rx:1,transform:"translate(12.647)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 66",rx:1,transform:"translate(18.971)"}),r.createElement("path",{fillRule:"evenodd",d:"M26.387 0h30.422a1.093 1.093 0 0 1 1.093 1.093v3.151a1.093 1.093 0 0 1-1.093 1.093H26.387a1.093 1.093 0 0 1-1.093-1.093V1.093A1.093 1.093 0 0 1 26.387 0m33.594 0h3.942a1.093 1.093 0 0 1 1.093 1.093v3.151a1.093 1.093 0 0 1-1.093 1.093h-3.942a1.093 1.093 0 0 1-1.093-1.093V1.093A1.093 1.093 0 0 1 59.981 0","data-name":"Path 56"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 67",rx:1,transform:"translate(66.003)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 68",rx:1,transform:"translate(72.327)"}),r.createElement("rect",{width:5.336,height:5.336,"data-name":"Rectangle 69",rx:1,transform:"translate(84.183)"}),r.createElement("path",{d:"M78.254 2.273v-1.18A1.093 1.093 0 0 1 79.347 0h3.15a1.093 1.093 0 0 1 1.093 1.093v1.18Z","data-name":"Path 57"}),r.createElement("path",{d:"M83.591 3.063v1.18a1.093 1.093 0 0 1-1.093 1.093h-3.15a1.093 1.093 0 0 1-1.093-1.093v-1.18Z","data-name":"Path 58"})),r.createElement("rect",{width:88.927,height:2.371,fill:"#4a4a4a","data-name":"Rectangle 70",rx:1.085,transform:"translate(1.925 1.17)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 71",opacity:.136,rx:.723,transform:"translate(4.1 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 72",opacity:.136,rx:.723,transform:"translate(10.923 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 73",opacity:.136,rx:.723,transform:"translate(16.173 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 74",opacity:.136,rx:.723,transform:"translate(21.421 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 75",opacity:.136,rx:.723,transform:"translate(26.671 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 76",opacity:.136,rx:.723,transform:"translate(33.232 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 77",opacity:.136,rx:.723,transform:"translate(38.48 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 78",opacity:.136,rx:.723,transform:"translate(43.73 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 79",opacity:.136,rx:.723,transform:"translate(48.978 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 80",opacity:.136,rx:.723,transform:"translate(55.54 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 81",opacity:.136,rx:.723,transform:"translate(60.788 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 82",opacity:.136,rx:.723,transform:"translate(66.038 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 83",opacity:.136,rx:.723,transform:"translate(72.599 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 84",opacity:.136,rx:.723,transform:"translate(77.847 1.566)"}),r.createElement("rect",{width:4.986,height:1.581,fill:"#d8d8d8","data-name":"Rectangle 85",opacity:.136,rx:.723,transform:"translate(83.097 1.566)"})),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M408.256 591.563a5.4 5.4 0 0 0-.7.07c-.042-.164-.081-.329-.127-.493a5.457 5.457 0 1 0-5.4-9.372q-.181-.185-.366-.367a5.454 5.454 0 1 0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467 5.467 0 1 0-10.788 0c-.162.042-.325.08-.486.126a5.457 5.457 0 1 0-9.384 5.4 21.843 21.843 0 1 0 36.421 21.02 5.452 5.452 0 1 0 .7-10.858","data-name":"Path 59"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M342.691 553.317h43.71v-21.855h-43.71Z","data-name":"Path 60"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M397.328 545.121a2.732 2.732 0 1 0 0-5.464 3 3 0 0 0-.349.035c-.022-.082-.04-.164-.063-.246a2.733 2.733 0 0 0-1.052-5.253 2.7 2.7 0 0 0-1.648.566q-.09-.093-.184-.184a2.7 2.7 0 0 0 .553-1.633 2.732 2.732 0 0 0-5.245-1.07 10.928 10.928 0 1 0 0 21.031 2.732 2.732 0 0 0 5.245-1.07 2.7 2.7 0 0 0-.553-1.633q.093-.09.184-.184a2.7 2.7 0 0 0 1.648.566 2.732 2.732 0 0 0 1.052-5.253q.033-.122.063-.246a3 3 0 0 0 .349.035","data-name":"Path 61"}),r.createElement("path",{fillRule:"evenodd",d:"M408.256 464.531a3 3 0 0 1-.535-.055 2.8 2.8 0 0 1-.514-.153 3 3 0 0 1-.471-.251 4 4 0 0 1-.415-.339 3 3 0 0 1-.338-.415 2.7 2.7 0 0 1-.459-1.517 3 3 0 0 1 .055-.535 3 3 0 0 1 .152-.514 3 3 0 0 1 .252-.47 2.6 2.6 0 0 1 .753-.754 3 3 0 0 1 .471-.251 2.8 2.8 0 0 1 .514-.153 2.5 2.5 0 0 1 1.071 0 2.7 2.7 0 0 1 .983.4 4 4 0 0 1 .415.339 4 4 0 0 1 .339.415 3 3 0 0 1 .251.47 2.9 2.9 0 0 1 .208 1.049 2.77 2.77 0 0 1-.8 1.934 4 4 0 0 1-.415.339 2.72 2.72 0 0 1-1.519.459m21.855-1.366a2.8 2.8 0 0 1-1.935-.8 4 4 0 0 1-.338-.415 2.7 2.7 0 0 1-.459-1.519 2.8 2.8 0 0 1 .8-1.934 4 4 0 0 1 .415-.339 3 3 0 0 1 .471-.251 2.8 2.8 0 0 1 .514-.153 2.5 2.5 0 0 1 1.071 0 2.7 2.7 0 0 1 .983.4 4 4 0 0 1 .415.339 2.8 2.8 0 0 1 .8 1.934 3 3 0 0 1-.055.535 3 3 0 0 1-.153.514 4 4 0 0 1-.251.47 4 4 0 0 1-.339.415 4 4 0 0 1-.415.339 2.72 2.72 0 0 1-1.519.459","data-name":"Path 62"}))))}},6740:(e,a,t)=>{t.d(a,{A:()=>c});var l,r=t(6540);function n(){return n=Object.assign?Object.assign.bind():function(e){for(var a=1;a{let{title:a,titleId:t,...c}=e;return r.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",width:1041.277,height:554.141,viewBox:"0 0 1041.277 554.141","aria-labelledby":t},c),void 0===a?r.createElement("title",{id:t},"Powered by React"):a?r.createElement("title",{id:t},a):null,l||(l=r.createElement("g",{"data-name":"Group 24"},r.createElement("g",{"data-name":"Group 23",transform:"translate(-.011 -.035)"},r.createElement("path",{fill:"#f2f2f2",d:"M961.48 438.21q-1.74 3.75-3.47 7.4-2.7 5.67-5.33 11.12c-.78 1.61-1.56 3.19-2.32 4.77-8.6 17.57-16.63 33.11-23.45 45.89a73.21 73.21 0 0 1-63.81 38.7l-151.65 1.65h-1.6l-13 .14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107 1.16-95.51 1-11.11.12-69 .75h-.08l-44.75.48h-.48l-141.5 1.53-42.33.46a88 88 0 0 1-10.79-.54c-1.22-.14-2.44-.3-3.65-.49a87.38 87.38 0 0 1-51.29-27.54c-18.21-20.03-31.46-43.4-40.36-68.76q-1.93-5.49-3.6-11.12c-30.81-104.15 6.75-238.52 74.35-328.44q4.25-5.64 8.64-11l.07-.08c20.79-25.52 44.1-46.84 68.93-62 44-26.91 92.75-34.49 140.7-11.9 40.57 19.12 78.45 28.11 115.17 30.55 3.71.24 7.42.42 11.11.53 84.23 2.65 163.17-27.7 255.87-47.29 3.69-.78 7.39-1.55 11.12-2.28C763 .54 836.36-6.4 923.6 8.19a189 189 0 0 1 26.76 6.4q5.77 1.86 11.12 4c41.64 16.94 64.35 48.24 74 87.46q1.37 5.46 2.37 11.11c17.11 94.34-33 228.16-76.37 321.05","data-name":"Path 299"}),r.createElement("path",{d:"M497.02 445.61a95 95 0 0 1-1.87 11.12h93.7v-11.12Zm-78.25 62.81 11.11-.09v-27.47c-3.81-.17-7.52-.34-11.11-.52Zm-232.92-62.81v11.12h198.5v-11.12Zm849.68-339.52h-74V18.6q-5.35-2.17-11.12-4v91.49H696.87V13.67c-3.73.73-7.43 1.5-11.12 2.28v90.14H429.88V63.24c-3.69-.11-7.4-.29-11.11-.53v43.38H162.9v-62c-24.83 15.16-48.14 36.48-68.93 62h-.07v.08q-4.4 5.4-8.64 11h8.64v328.44h-83q1.66 5.63 3.6 11.12h79.39v93.62a87 87 0 0 0 12.2 2.79c1.21.19 2.43.35 3.65.49a88 88 0 0 0 10.79.54l42.33-.46v-97h255.91v94.21l11.11-.12v-94.07h255.87v91.36l11.12-.12v-91.24h253.49v4.77c.76-1.58 1.54-3.16 2.32-4.77q2.63-5.45 5.33-11.12 1.73-3.64 3.47-7.4v-321h76.42q-1.01-5.69-2.37-11.12M162.9 445.61V117.17h255.87v328.44Zm267 0V117.17h255.85v328.44Zm520.48 0H696.87V117.17h253.49Z","data-name":"Path 300",opacity:.1}),r.createElement("path",{fill:"#65617d",d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l46.65-28 93.6-.78 2-.01.66-.01 2-.03 44.94-.37 2.01-.01.64-.01 2-.01 14.41-.12.38-.01 35.55-.3h.29l277.4-2.34 6.79-.05h.68l5.18-.05 37.65-.31 2-.03 1.85-.02h.96l11.71-.09 2.32-.03 3.11-.02 9.75-.09 15.47-.13 2-.02 3.48-.02h.65l74.71-.64Z","data-name":"Path 301"}),r.createElement("path",{d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l46.65-28 93.6-.78 2-.01.66-.01 2-.03 44.94-.37 2.01-.01.64-.01 2-.01 14.41-.12.38-.01 35.55-.3h.29l277.4-2.34 6.79-.05h.68l5.18-.05 37.65-.31 2-.03 1.85-.02h.96l11.71-.09 2.32-.03 3.11-.02 9.75-.09 15.47-.13 2-.02 3.48-.02h.65l74.71-.64Z","data-name":"Path 302",opacity:.2}),r.createElement("path",{fill:"#3f3d56",d:"M296.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z","data-name":"Path 303"}),r.createElement("path",{d:"M296.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z","data-name":"Path 304",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"M298.1 483.66v24.49a6.13 6.13 0 0 1-3.5 5.54 6 6 0 0 1-2.5.6l-34.9.74a6 6 0 0 1-2.7-.57 6.12 6.12 0 0 1-3.57-5.57v-25.23Z","data-name":"Path 305"}),r.createElement("path",{fill:"#3f3d56",d:"M680.92 483.65h47.17v31.5h-47.17z","data-name":"Rectangle 137"}),r.createElement("path",{d:"M680.92 483.65h47.17v31.5h-47.17z","data-name":"Rectangle 138",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"M678.92 483.65h47.17v31.5h-47.17z","data-name":"Rectangle 139"}),r.createElement("path",{d:"M298.09 483.65v4.97l-47.17 1.26v-6.23Z","data-name":"Path 306",opacity:.1}),r.createElement("path",{fill:"#65617d",d:"M381.35 312.36v168.2a4 4 0 0 1-3.85 3.95l-191.65 5.1h-.05a4 4 0 0 1-3.95-3.95v-173.3a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.95 3.95","data-name":"Path 307"}),r.createElement("path",{d:"M185.85 308.41v181.2h-.05a4 4 0 0 1-3.95-3.95v-173.3a4 4 0 0 1 3.95-3.95Z","data-name":"Path 308",opacity:.1}),r.createElement("path",{fill:"#39374d",d:"M194.59 319.15h177.5V467.4l-177.5 4Z","data-name":"Path 309"}),r.createElement("path",{d:"M726.09 483.65v6.41l-47.17-1.26v-5.15Z","data-name":"Path 310",opacity:.1}),r.createElement("path",{fill:"#65617d",d:"M788.35 312.36v173.3a4 4 0 0 1-4 3.95l-191.69-5.1a4 4 0 0 1-3.85-3.95v-168.2a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.99 3.95","data-name":"Path 311"}),r.createElement("path",{d:"M788.35 312.36v173.3a4 4 0 0 1-4 3.95v-181.2a4 4 0 0 1 4 3.95","data-name":"Path 312",opacity:.1}),r.createElement("path",{fill:"#39374d",d:"M775.59 319.15h-177.5V467.4l177.5 4Z","data-name":"Path 313"}),r.createElement("path",{fill:"#65617d",d:"M583.85 312.36v168.2a4 4 0 0 1-3.85 3.95l-191.65 5.1a4 4 0 0 1-4-3.95v-173.3a4 4 0 0 1 3.95-3.95h191.6a4 4 0 0 1 3.95 3.95","data-name":"Path 314"}),r.createElement("path",{fill:"#4267b2",d:"M397.09 319.15h177.5V467.4l-177.5 4Z","data-name":"Path 315"}),r.createElement("path",{d:"M863.09 533.65v13l-151.92 1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99-175.61 1.63h-.15l-44.65.42-.48.01-198.4 1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5 4.4-.02.98-.01Z","data-name":"Path 316",opacity:.1}),r.createElement("circle",{cx:51.33,cy:51.33,r:51.33,fill:"#fbbebe","data-name":"Ellipse 111",transform:"translate(435.93 246.82)"}),r.createElement("path",{fill:"#fbbebe",d:"M538.6 377.16s-99.5 12-90 0c3.44-4.34 4.39-17.2 4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41 77-8.5c-4 13.13-2.69 31.57.35 48.88.89 5.05 1.92 10 3 14.7a345 345 0 0 0 9.65 33.92","data-name":"Path 317"}),r.createElement("path",{fill:"#ff6584",d:"M506.13 373.09c11.51-2.13 23.7-6 34.53-1.54 2.85 1.17 5.47 2.88 8.39 3.86s6.12 1.22 9.16 1.91c10.68 2.42 19.34 10.55 24.9 20s8.44 20.14 11.26 30.72l6.9 25.83c6 22.45 12 45.09 13.39 68.3a2438 2438 0 0 1-250.84 1.43c5.44-10.34 11-21.31 10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34 6.57-13.39 9.64-20.22 8.75-19.52 1.94-45.79 17.32-60.65 6.92-6.68 17-9.21 26.63-8.89 12.28.41 24.85 4.24 37 6.11 15.56 2.36 30.26 3.76 45.94.88","data-name":"Path 318"}),r.createElement("path",{d:"m637.03 484.26-.1 1.43v.1l-.17 2.3-1.33 18.51-1.61 22.3-.46 6.28-1 13.44v.17l-107 1-175.59 1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53 10.53 0 0 1 11.42-10.17c4.72.4 10.85.89 18.18 1.41l3 .22c42.33 2.94 120.56 6.74 199.5 2 1.66-.09 3.33-.19 5-.31 12.24-.77 24.47-1.76 36.58-3a10.53 10.53 0 0 1 11.6 11.23Z","data-name":"Path 319",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"M349.74 552.53v-.84l175.62-1.91 107-1h.3v-.17l1-13.44.43-6 1.64-22.61 1.29-17.9v-.44a10.6 10.6 0 0 0-.11-2.47.3.3 0 0 0 0-.1 10.4 10.4 0 0 0-2-4.64 10.54 10.54 0 0 0-9.42-4 937 937 0 0 1-36.58 3c-1.67.12-3.34.22-5 .31-78.94 4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54 10.54 0 0 0-11.24 8.53 11 11 0 0 0-.18 1.64l-.68 22.16-.93 28.07-.44 14.36v1.12Z","data-name":"Path 320"}),r.createElement("path",{d:"m637.33 491.27-1.23 15.33-1.83 22.85-.46 5.72-1 12.81-.06.64v.17l-.15 1.48.11-1.48h-.29l-107 1-175.65 1.9v-.28l.49-14.36 1-28.06.64-18.65a6.36 6.36 0 0 1 3.06-5.25 6.25 6.25 0 0 1 3.78-.9c2.1.17 4.68.37 7.69.59 4.89.36 10.92.78 17.94 1.22 13 .82 29.31 1.7 48 2.42 52 2 122.2 2.67 188.88-3.17 3-.26 6.1-.55 9.13-.84a6.26 6.26 0 0 1 3.48.66 5 5 0 0 1 .86.54 6.14 6.14 0 0 1 2 2.46 3.6 3.6 0 0 1 .25.61 6.3 6.3 0 0 1 .36 2.59","data-name":"Path 321",opacity:.1}),r.createElement("path",{d:"M298.1 504.96v3.19a6.13 6.13 0 0 1-3.5 5.54l-40.1.77a6.12 6.12 0 0 1-3.57-5.57v-3Z","data-name":"Path 322",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"m298.59 515.57-52.25 1v-8.67l52.25-1Z","data-name":"Path 323"}),r.createElement("path",{d:"m298.59 515.57-52.25 1v-8.67l52.25-1Z","data-name":"Path 324",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"m300.59 515.57-52.25 1v-8.67l52.25-1Z","data-name":"Path 325"}),r.createElement("path",{d:"M679.22 506.96v3.19a6.13 6.13 0 0 0 3.5 5.54l40.1.77a6.12 6.12 0 0 0 3.57-5.57v-3Z","data-name":"Path 326",opacity:.1}),r.createElement("path",{d:"m678.72 517.57 52.25 1v-8.67l-52.25-1Z","data-name":"Path 327",opacity:.1}),r.createElement("path",{fill:"#3f3d56",d:"m676.72 517.57 52.25 1v-8.67l-52.25-1Z","data-name":"Path 328"}),r.createElement("path",{fill:"#3f3d56",d:"M454.79 313.88c.08 7-3.16 13.6-5.91 20.07a163.5 163.5 0 0 0-12.66 74.71c.73 11 2.58 22 .73 32.9s-8.43 21.77-19 24.9c17.53 10.45 41.26 9.35 57.76-2.66 8.79-6.4 15.34-15.33 21.75-24.11a97.86 97.86 0 0 1-13.31 44.75 103.43 103.43 0 0 0 73.51-40.82c4.31-5.81 8.06-12.19 9.72-19.23 3.09-13-1.22-26.51-4.51-39.5a266 266 0 0 1-6.17-33c-.43-3.56-.78-7.22.1-10.7 1-4.07 3.67-7.51 5.64-11.22 5.6-10.54 5.73-23.3 2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47 1.48-16.14 8.32-22 15.34-4.59 5.46-15.81 15.71-16.6 22.86-.72 6.59 5.1 17.63 6.09 24.58 1.3 9 2.22 6 7.3 11.52 3.21 3.42 5.28 7.37 5.34 12.16","data-name":"Path 329"})),r.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M280.139 370.832h43.635v17.662h-43.635Z","data-name":"Path 40"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M240.66 428.493a10.38 10.38 0 0 1-8.989-5.195 10.377 10.377 0 0 0 8.988 15.584h10.391v-10.389Z","data-name":"Path 41"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"m287.402 373.625 36.373-2.273v-5.195a10.39 10.39 0 0 0-10.39-10.389h-46.75l-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249-1.3-2.249a1.5 1.5 0 0 0-2.6 0l-1.3 2.249h-.034l-2.152-2.151a1.5 1.5 0 0 0-2.508.672l-.696 2.653-2.7-.723a1.5 1.5 0 0 0-1.836 1.837l.722 2.7-2.65.71a1.5 1.5 0 0 0-.673 2.509l2.152 2.152v.033l-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.25 1.282-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3-2.249 1.3a1.5 1.5 0 0 0 0 2.6l2.249 1.3a10.39 10.39 0 0 0 10.389 10.34h62.335a10.39 10.39 0 0 0 10.39-10.39v-41.557l-36.373-2.273a5.53 5.53 0 0 1 0-11.038","data-name":"Path 42"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M302.996 438.882h15.584v-20.779h-15.584Z","data-name":"Path 43"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M328.97 425.895a3 3 0 0 0-.332.033q-.028-.117-.06-.234a2.594 2.594 0 1 0-2.567-4.455q-.086-.088-.174-.175a2.593 2.593 0 1 0-4.461-2.569q-.115-.031-.231-.06a2.6 2.6 0 1 0-5.128 0q-.116.029-.231.06a2.594 2.594 0 1 0-4.461 2.569 10.384 10.384 0 1 0 17.314 9.992 2.592 2.592 0 1 0 .332-5.161","data-name":"Path 44"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M308.191 407.713h15.584v-10.389h-15.584Z","data-name":"Path 45"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M328.969 403.818a1.3 1.3 0 1 0 0-2.6 1 1 0 0 0-.166.017l-.03-.117a1.3 1.3 0 0 0-.5-2.5 1.3 1.3 0 0 0-.783.269l-.087-.087a1.3 1.3 0 0 0 .263-.776 1.3 1.3 0 0 0-2.493-.509 5.195 5.195 0 1 0 0 10 1.3 1.3 0 0 0 2.493-.509 1.3 1.3 0 0 0-.263-.776l.087-.087a1.3 1.3 0 0 0 .783.269 1.3 1.3 0 0 0 .5-2.5q.016-.058.03-.117a1 1 0 0 0 .166.017","data-name":"Path 46"}),r.createElement("path",{fillRule:"evenodd",d:"M261.439 372.65a1.3 1.3 0 0 1-1.3-1.3 3.9 3.9 0 0 0-7.792 0 1.3 1.3 0 1 1-2.6 0 6.494 6.494 0 0 1 12.987 0 1.3 1.3 0 0 1-1.3 1.3","data-name":"Path 47"}),r.createElement("path",{fill:"#ffff50",fillRule:"evenodd",d:"M282.217 438.882h31.168a10.39 10.39 0 0 0 10.389-10.389V392.13h-31.168a10.39 10.39 0 0 0-10.389 10.389Z","data-name":"Path 48"}),r.createElement("path",{fillRule:"evenodd",d:"M315.993 408.233h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0-25.877h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.293h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m0 10.389h-25.994a.52.52 0 1 1 0-1.039h25.994a.52.52 0 0 1 0 1.039m7.782-47.993h-.018c-1.605.055-2.365 1.66-3.035 3.077-.7 1.48-1.24 2.443-2.126 2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344 1.451-3.017 2.684-.715 1.313-1.2 2.112-2.141 2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319 1.239-2.994 2.286-.713 1.106-1.213 1.781-2.164 1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.82 3.82 0 0 0-2.959 1.879c-.64.812-1.14 1.456-2.2 1.415a.52.52 0 0 0-.037 1.039 3.59 3.59 0 0 0 3.05-1.811c.611-.777 1.139-1.448 2.178-1.483 1-.043 1.47.579 2.179 1.582.674.953 1.438 2.033 2.977 2.089 1.612.054 2.387-1.151 3.074-2.217.614-.953 1.144-1.775 2.156-1.81.931-.035 1.438.7 2.153 1.912.674 1.141 1.437 2.434 3.006 2.491 1.623.056 2.407-1.361 3.09-2.616.592-1.085 1.15-2.109 2.14-2.143.931-.022 1.417.829 2.135 2.249.671 1.326 1.432 2.828 3.026 2.886h.088c1.592 0 2.347-1.6 3.015-3.01.592-1.252 1.152-2.431 2.113-2.479Z","data-name":"Path 49"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M271.828 438.882h20.779v-20.779h-20.779Z","data-name":"Path 50"}),r.createElement("g",{"data-name":"Group 8",transform:"rotate(-14.98 1643.944 -873.93)"},r.createElement("rect",{width:43.906,height:17.333,fill:"#d8d8d8","data-name":"Rectangle 3",rx:2}),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 2",transform:"translate(.728 10.948)"},r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 4",rx:1,transform:"translate(7.985)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 5",rx:1,transform:"translate(10.991)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 6",rx:1,transform:"translate(13.997)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 7",rx:1,transform:"translate(17.003)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 8",rx:1,transform:"translate(20.009)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 9",rx:1,transform:"translate(23.015)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 10",rx:1,transform:"translate(26.021)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 11",rx:1,transform:"translate(29.028)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 12",rx:1,transform:"translate(32.034)"}),r.createElement("path",{fillRule:"evenodd",d:"M.519 0H6.9a.52.52 0 0 1 .521.52v1.5a.52.52 0 0 1-.519.519H.519A.52.52 0 0 1 0 2.017V.519A.52.52 0 0 1 .519 0m35.134 0h6.383a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519h-6.384a.52.52 0 0 1-.519-.519v-1.5A.52.52 0 0 1 35.652 0Z","data-name":"Path 51"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 3",transform:"translate(.728 4.878)"},r.createElement("path",{fillRule:"evenodd",d:"M.519 0h2.437a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519H.519A.52.52 0 0 1 0 2.017V.519A.52.52 0 0 1 .519 0","data-name":"Path 52"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 13",rx:1,transform:"translate(3.945)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 14",rx:1,transform:"translate(6.951)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 15",rx:1,transform:"translate(9.958)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 16",rx:1,transform:"translate(12.964)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 17",rx:1,transform:"translate(15.97)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 18",rx:1,transform:"translate(18.976)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 19",rx:1,transform:"translate(21.982)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 20",rx:1,transform:"translate(24.988)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 21",rx:1,transform:"translate(27.994)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 22",rx:1,transform:"translate(31)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 23",rx:1,transform:"translate(34.006)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 24",rx:1,transform:"translate(37.012)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 25",rx:1,transform:"translate(40.018)"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 4",transform:"rotate(180 21.642 2.269)"},r.createElement("path",{fillRule:"evenodd",d:"M.519 0h2.437a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519H.519A.52.52 0 0 1 0 2.017V.519A.52.52 0 0 1 .519 0","data-name":"Path 53"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 26",rx:1,transform:"translate(3.945)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 27",rx:1,transform:"translate(6.951)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 28",rx:1,transform:"translate(9.958)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 29",rx:1,transform:"translate(12.964)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 30",rx:1,transform:"translate(15.97)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 31",rx:1,transform:"translate(18.976)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 32",rx:1,transform:"translate(21.982)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 33",rx:1,transform:"translate(24.988)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 34",rx:1,transform:"translate(27.994)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 35",rx:1,transform:"translate(31.001)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 36",rx:1,transform:"translate(34.007)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 37",rx:1,transform:"translate(37.013)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 38",rx:1,transform:"translate(40.018)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 39",rx:1,transform:"translate(3.945)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 40",rx:1,transform:"translate(6.951)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 41",rx:1,transform:"translate(9.958)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 42",rx:1,transform:"translate(12.964)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 43",rx:1,transform:"translate(15.97)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 44",rx:1,transform:"translate(18.976)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 45",rx:1,transform:"translate(21.982)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 46",rx:1,transform:"translate(24.988)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 47",rx:1,transform:"translate(27.994)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 48",rx:1,transform:"translate(31.001)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 49",rx:1,transform:"translate(34.007)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 50",rx:1,transform:"translate(37.013)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 51",rx:1,transform:"translate(40.018)"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 6"},r.createElement("path",{fillRule:"evenodd",d:"M1.247 7.883h3.47a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519h-3.47A.52.52 0 0 1 .728 9.9V8.403a.52.52 0 0 1 .519-.52","data-name":"Path 54"}),r.createElement("g",{"data-name":"Group 5",transform:"translate(5.801 7.883)"},r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 52",rx:1}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 53",rx:1,transform:"translate(3.006)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 54",rx:1,transform:"translate(6.012)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 55",rx:1,transform:"translate(9.018)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 56",rx:1,transform:"translate(12.025)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 57",rx:1,transform:"translate(15.031)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 58",rx:1,transform:"translate(18.037)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 59",rx:1,transform:"translate(21.042)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 60",rx:1,transform:"translate(24.049)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 61",rx:1,transform:"translate(27.055)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 62",rx:1,transform:"translate(30.061)"})),r.createElement("path",{fillRule:"evenodd",d:"M39.482 7.883h3.28a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519h-3.281a.52.52 0 0 1-.519-.521V8.403a.52.52 0 0 1 .519-.52Z","data-name":"Path 55"})),r.createElement("g",{fill:"#4a4a4a","data-name":"Group 7",transform:"translate(.728 14.084)"},r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 63",rx:1}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 64",rx:1,transform:"translate(3.006)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 65",rx:1,transform:"translate(6.012)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 66",rx:1,transform:"translate(9.018)"}),r.createElement("path",{fillRule:"evenodd",d:"M12.543 0h14.462a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519H12.543a.52.52 0 0 1-.519-.52V.519A.52.52 0 0 1 12.543 0m15.97 0h1.874a.52.52 0 0 1 .519.519v1.5a.52.52 0 0 1-.519.519h-1.874a.52.52 0 0 1-.519-.519v-1.5A.52.52 0 0 1 28.513 0","data-name":"Path 56"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 67",rx:1,transform:"translate(31.376)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 68",rx:1,transform:"translate(34.382)"}),r.createElement("rect",{width:2.537,height:2.537,"data-name":"Rectangle 69",rx:1,transform:"translate(40.018)"}),r.createElement("path",{d:"M37.199 1.08V.519A.52.52 0 0 1 37.718 0h1.499a.52.52 0 0 1 .519.519v.561Z","data-name":"Path 57"}),r.createElement("path",{d:"M39.737 1.456v.561a.52.52 0 0 1-.519.519h-1.499a.52.52 0 0 1-.519-.519v-.561Z","data-name":"Path 58"})),r.createElement("rect",{width:42.273,height:1.127,fill:"#4a4a4a","data-name":"Rectangle 70",rx:.564,transform:"translate(.915 .556)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 71",opacity:.136,rx:.376,transform:"translate(1.949 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 72",opacity:.136,rx:.376,transform:"translate(5.193 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 73",opacity:.136,rx:.376,transform:"translate(7.688 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 74",opacity:.136,rx:.376,transform:"translate(10.183 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 75",opacity:.136,rx:.376,transform:"translate(12.679 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 76",opacity:.136,rx:.376,transform:"translate(15.797 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 77",opacity:.136,rx:.376,transform:"translate(18.292 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 78",opacity:.136,rx:.376,transform:"translate(20.788 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 79",opacity:.136,rx:.376,transform:"translate(23.283 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 80",opacity:.136,rx:.376,transform:"translate(26.402 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 81",opacity:.136,rx:.376,transform:"translate(28.897 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 82",opacity:.136,rx:.376,transform:"translate(31.393 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 83",opacity:.136,rx:.376,transform:"translate(34.512 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 84",opacity:.136,rx:.376,transform:"translate(37.007 .744)"}),r.createElement("rect",{width:2.37,height:.752,fill:"#d8d8d8","data-name":"Rectangle 85",opacity:.136,rx:.376,transform:"translate(39.502 .744)"})),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M302.996 425.895a3 3 0 0 0-.332.033q-.029-.117-.06-.234a2.594 2.594 0 1 0-2.567-4.455q-.086-.088-.174-.175a2.593 2.593 0 1 0-4.461-2.569q-.116-.031-.231-.06a2.6 2.6 0 1 0-5.128 0q-.115.029-.231.06a2.594 2.594 0 1 0-4.461 2.569 10.384 10.384 0 1 0 17.314 9.992 2.592 2.592 0 1 0 .332-5.161","data-name":"Path 59"}),r.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M271.828 407.713h20.779v-10.389h-20.779Z","data-name":"Path 60"}),r.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M297.801 403.818a1.3 1.3 0 1 0 0-2.6 1 1 0 0 0-.166.017l-.03-.117a1.3 1.3 0 0 0-.5-2.5 1.3 1.3 0 0 0-.783.269l-.087-.087a1.3 1.3 0 0 0 .263-.776 1.3 1.3 0 0 0-2.493-.509 5.195 5.195 0 1 0 0 10 1.3 1.3 0 0 0 2.493-.509 1.3 1.3 0 0 0-.263-.776l.087-.087a1.3 1.3 0 0 0 .783.269 1.3 1.3 0 0 0 .5-2.5q.016-.058.03-.117a1 1 0 0 0 .166.017","data-name":"Path 61"}),r.createElement("path",{fillRule:"evenodd",d:"M302.997 365.507a1.4 1.4 0 0 1-.255-.026 1.3 1.3 0 0 1-.244-.073 1.4 1.4 0 0 1-.224-.119 2 2 0 0 1-.2-.161 1.5 1.5 0 0 1-.161-.2 1.3 1.3 0 0 1-.218-.722 1.4 1.4 0 0 1 .026-.255 1.5 1.5 0 0 1 .072-.244 1.4 1.4 0 0 1 .12-.223 1.3 1.3 0 0 1 .358-.358 1.4 1.4 0 0 1 .224-.119 1.3 1.3 0 0 1 .244-.073 1.2 1.2 0 0 1 .509 0 1.3 1.3 0 0 1 .468.192 2 2 0 0 1 .2.161 2 2 0 0 1 .161.2 1.3 1.3 0 0 1 .12.223 1.4 1.4 0 0 1 .1.5 1.32 1.32 0 0 1-.379.919 2 2 0 0 1-.2.161 1.4 1.4 0 0 1-.223.119 1.3 1.3 0 0 1-.5.1m10.389-.649a1.33 1.33 0 0 1-.92-.379 2 2 0 0 1-.161-.2 1.3 1.3 0 0 1-.218-.722 1.33 1.33 0 0 1 .379-.919 2 2 0 0 1 .2-.161 1.4 1.4 0 0 1 .224-.119 1.3 1.3 0 0 1 .244-.073 1.2 1.2 0 0 1 .509 0 1.3 1.3 0 0 1 .468.192 2 2 0 0 1 .2.161 1.33 1.33 0 0 1 .379.919 1.5 1.5 0 0 1-.026.255 1.3 1.3 0 0 1-.073.244 2 2 0 0 1-.119.223 2 2 0 0 1-.161.2 2 2 0 0 1-.2.161 1.3 1.3 0 0 1-.722.218","data-name":"Path 62"}),r.createElement("g",{fill:"#61dafb",transform:"translate(466.3 278.56)"},r.createElement("path",{d:"M263.668 117.179c0-5.827-7.3-11.35-18.487-14.775 2.582-11.4 1.434-20.477-3.622-23.382a7.86 7.86 0 0 0-4.016-1v4a4.15 4.15 0 0 1 2.044.466c2.439 1.4 3.5 6.724 2.672 13.574-.2 1.685-.52 3.461-.914 5.272a87 87 0 0 0-11.386-1.954 87.5 87.5 0 0 0-7.459-8.965c5.845-5.433 11.332-8.41 15.062-8.41V78c-4.931 0-11.386 3.514-17.913 9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712 0 9.216 2.959 15.062 8.356a85 85 0 0 0-7.405 8.947 84 84 0 0 0-11.4 1.972 54 54 0 0 1-.932-5.2c-.843-6.85.2-12.175 2.618-13.592a4 4 0 0 1 2.062-.466v-4a8 8 0 0 0-4.052 1c-5.039 2.9-6.168 11.96-3.568 23.328-11.153 3.443-18.415 8.947-18.415 14.757 0 5.828 7.3 11.35 18.487 14.775-2.582 11.4-1.434 20.477 3.622 23.382a7.9 7.9 0 0 0 4.034 1c4.931 0 11.386-3.514 17.913-9.611 6.527 6.061 12.982 9.539 17.913 9.539a8 8 0 0 0 4.052-1c5.039-2.9 6.168-11.96 3.568-23.328 11.111-3.42 18.373-8.943 18.373-14.752m-23.346-11.96a80 80 0 0 1-2.421 7.083 83 83 0 0 0-2.349-4.3 97 97 0 0 0-2.582-4.2c2.547.377 5.004.843 7.353 1.417Zm-8.212 19.1c-1.4 2.421-2.833 4.716-4.321 6.85a93 93 0 0 1-8.1.359c-2.708 0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136a94 94 0 0 1 3.712-7.154c1.4-2.421 2.833-4.716 4.321-6.85a93 93 0 0 1 8.1-.359c2.708 0 5.415.126 8.069.341q2.232 3.2 4.339 6.814 2.044 3.523 3.73 7.136a101 101 0 0 1-3.712 7.15Zm5.792-2.331a77 77 0 0 1 2.474 7.136 80 80 0 0 1-7.387 1.434c.879-1.381 1.757-2.8 2.582-4.25a96 96 0 0 0 2.329-4.324Zm-18.182 19.128a74 74 0 0 1-4.985-5.738c1.614.072 3.263.126 4.931.126 1.685 0 3.353-.036 4.985-.126a70 70 0 0 1-4.931 5.738m-13.34-10.561c-2.546-.377-5-.843-7.352-1.417a80 80 0 0 1 2.421-7.083c.735 1.434 1.506 2.869 2.349 4.3s1.702 2.837 2.582 4.2m13.25-37.314a74 74 0 0 1 4.985 5.738 111 111 0 0 0-4.931-.126c-1.686 0-3.353.036-4.985.126a70 70 0 0 1 4.931-5.738M206.362 103.8a101 101 0 0 0-4.913 8.55 77 77 0 0 1-2.474-7.136 90 90 0 0 1 7.387-1.414m-16.227 22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383 10.454-9.073c1.542-.663 3.228-1.255 4.967-1.811a86 86 0 0 0 4.034 10.92 85 85 0 0 0-3.981 10.866 54 54 0 0 1-5.021-1.826Zm9.647 25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a87 87 0 0 0 11.386 1.954 87.5 87.5 0 0 0 7.459 8.965c-5.845 5.433-11.332 8.41-15.062 8.41a4.3 4.3 0 0 1-2.026-.48Zm42.532-13.663c.843 6.85-.2 12.175-2.618 13.592a4 4 0 0 1-2.062.466c-3.712 0-9.216-2.959-15.062-8.356a85 85 0 0 0 7.405-8.947 84 84 0 0 0 11.4-1.972 50 50 0 0 1 .936 5.22Zm6.9-11.96c-1.542.663-3.228 1.255-4.967 1.811a86 86 0 0 0-4.034-10.92 85 85 0 0 0 3.981-10.866 57 57 0 0 1 5.039 1.829c6.348 2.708 10.454 6.258 10.454 9.073-.017 2.818-4.123 6.386-10.471 9.076Z","data-name":"Path 330"}),r.createElement("path",{d:"M201.718 78.072","data-name":"Path 331"}),r.createElement("circle",{cx:8.194,cy:8.194,r:8.194,"data-name":"Ellipse 112",transform:"translate(211.472 108.984)"}),r.createElement("path",{d:"M237.525 78.018","data-name":"Path 332"})))))}},3844:(e,a,t)=>{t.d(a,{A:()=>k});var l,r,n,c,h,d,m,i,s,f,o,g,E,p,x,v,R,w,u,M,P,y,Z,q,A,b,j,V,H,G,N,O,_,S,z,B,D=t(6540);function F(){return F=Object.assign?Object.assign.bind():function(e){for(var a=1;a{let{title:a,titleId:t,...k}=e;return D.createElement("svg",F({xmlns:"http://www.w3.org/2000/svg",width:1129,height:663,viewBox:"0 0 1129 663","aria-labelledby":t},k),void 0===a?D.createElement("title",{id:t},"Focus on What Matters"):a?D.createElement("title",{id:t},a):null,l||(l=D.createElement("circle",{cx:321,cy:321,r:321,fill:"#f2f2f2"})),r||(r=D.createElement("ellipse",{cx:559,cy:635.5,fill:"#3f3d56",rx:514,ry:27.5})),n||(n=D.createElement("ellipse",{cx:558,cy:627,opacity:.2,rx:460,ry:22})),c||(c=D.createElement("path",{fill:"#3f3d56",d:"M131 152.5h840v50H131z"})),h||(h=D.createElement("path",{fill:"#3f3d56",d:"M131 608.83a21.67 21.67 0 0 0 21.67 21.67h796.66A21.67 21.67 0 0 0 971 608.83V177.5H131ZM949.33 117.5H152.67A21.67 21.67 0 0 0 131 139.17v38.33h840v-38.33a21.67 21.67 0 0 0-21.67-21.67"})),d||(d=D.createElement("path",{d:"M949.33 117.5H152.67A21.67 21.67 0 0 0 131 139.17v38.33h840v-38.33a21.67 21.67 0 0 0-21.67-21.67",opacity:.2})),m||(m=D.createElement("circle",{cx:181,cy:147.5,r:13,fill:"#3f3d56"})),i||(i=D.createElement("circle",{cx:217,cy:147.5,r:13,fill:"#3f3d56"})),s||(s=D.createElement("circle",{cx:253,cy:147.5,r:13,fill:"#3f3d56"})),f||(f=D.createElement("rect",{width:337,height:386,x:168,y:213.5,fill:"#606060",rx:5.335})),o||(o=D.createElement("rect",{width:284,height:22,x:603,y:272.5,fill:"#2e8555",rx:5.476})),g||(g=D.createElement("rect",{width:416,height:15,x:537,y:352.5,fill:"#2e8555",rx:5.476})),E||(E=D.createElement("rect",{width:416,height:15,x:537,y:396.5,fill:"#2e8555",rx:5.476})),p||(p=D.createElement("rect",{width:416,height:15,x:537,y:440.5,fill:"#2e8555",rx:5.476})),x||(x=D.createElement("rect",{width:416,height:15,x:537,y:484.5,fill:"#2e8555",rx:5.476})),v||(v=D.createElement("rect",{width:88,height:26,x:865,y:552.5,fill:"#3ecc5f",rx:7.028})),R||(R=D.createElement("path",{fill:"#3f3d56",d:"M1053.103 506.116a30.1 30.1 0 0 0 3.983-15.266c0-13.797-8.544-24.98-19.083-24.98s-19.082 11.183-19.082 24.98a30.1 30.1 0 0 0 3.983 15.266 31.25 31.25 0 0 0 0 30.532 31.25 31.25 0 0 0 0 30.532 31.25 31.25 0 0 0 0 30.532 30.1 30.1 0 0 0-3.983 15.266c0 13.797 8.543 24.981 19.082 24.981s19.083-11.184 19.083-24.98a30.1 30.1 0 0 0-3.983-15.267 31.25 31.25 0 0 0 0-30.532 31.25 31.25 0 0 0 0-30.532 31.25 31.25 0 0 0 0-30.532"})),w||(w=D.createElement("ellipse",{cx:1038.003,cy:460.318,fill:"#3f3d56",rx:19.083,ry:24.981})),u||(u=D.createElement("ellipse",{cx:1038.003,cy:429.786,fill:"#3f3d56",rx:19.083,ry:24.981})),M||(M=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M1109.439 220.845a92 92 0 0 0 7.106-10.461l-50.14-8.235 54.228.403a91.57 91.57 0 0 0 1.746-72.426l-72.755 37.742 67.097-49.321A91.413 91.413 0 1 0 965.75 220.845a91.5 91.5 0 0 0-10.425 16.67l65.087 33.814-69.4-23.292a91.46 91.46 0 0 0 14.738 85.837 91.406 91.406 0 1 0 143.689 0 91.42 91.42 0 0 0 0-113.03"})),P||(P=D.createElement("path",{d:"M946.189 277.36a91 91 0 0 0 19.56 56.514 91.406 91.406 0 1 0 143.69 0c12.25-15.553-163.25-66.774-163.25-56.515",opacity:.1})),y||(y=D.createElement("path",{fill:"#fff",fillRule:"evenodd",d:"M330.12 342.936h111.474v45.12H330.12Z"})),Z||(Z=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M229.263 490.241a26.51 26.51 0 0 1-22.963-13.27 26.51 26.51 0 0 0 22.963 39.812h26.541V490.24Z"})),q||(q=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"m348.672 350.07 92.922-5.807v-13.27a26.54 26.54 0 0 0-26.541-26.542H295.616l-3.318-5.746a3.83 3.83 0 0 0-6.635 0l-3.318 5.746-3.317-5.746a3.83 3.83 0 0 0-6.636 0l-3.317 5.746-3.318-5.746a3.83 3.83 0 0 0-6.635 0l-3.318 5.746c-.03 0-.056.004-.086.004l-5.497-5.495a3.83 3.83 0 0 0-6.407 1.717l-1.817 6.773-6.89-1.847a3.83 3.83 0 0 0-4.691 4.693l1.844 6.891-6.77 1.814a3.832 3.832 0 0 0-1.72 6.41l5.497 5.497q-.002.041-.004.085l-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318-5.747 3.317a3.83 3.83 0 0 0 0 6.636l5.747 3.317-5.747 3.318a3.83 3.83 0 0 0 0 6.635l5.747 3.318a26.54 26.54 0 0 0 26.541 26.542h159.249a26.54 26.54 0 0 0 26.541-26.542V384.075l-92.922-5.807a14.126 14.126 0 0 1 0-28.197"})),A||(A=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M388.511 516.783h39.812V463.7h-39.812Z"})),b||(b=D.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M454.865 483.606a7 7 0 0 0-.848.085q-.073-.3-.154-.599a6.627 6.627 0 1 0-6.557-11.382q-.22-.225-.445-.446a6.624 6.624 0 1 0-11.397-6.564c-.196-.055-.394-.102-.59-.152a6.64 6.64 0 1 0-13.101 0c-.197.05-.394.097-.59.152a6.628 6.628 0 1 0-11.398 6.564 26.528 26.528 0 1 0 44.232 25.528 6.621 6.621 0 1 0 .848-13.186"})),j||(j=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M401.782 437.158h39.812v-26.541h-39.812Z"})),V||(V=D.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M454.865 427.205a3.318 3.318 0 0 0 0-6.635 3 3 0 0 0-.424.042c-.026-.1-.049-.199-.077-.298a3.319 3.319 0 0 0-1.278-6.38 3.28 3.28 0 0 0-2 .688q-.11-.113-.224-.223a3.3 3.3 0 0 0 .672-1.983 3.318 3.318 0 0 0-6.37-1.299 13.27 13.27 0 1 0 0 25.541 3.318 3.318 0 0 0 6.37-1.3 3.3 3.3 0 0 0-.672-1.982q.114-.11.223-.223a3.28 3.28 0 0 0 2.001.688 3.318 3.318 0 0 0 1.278-6.38c.028-.098.05-.199.077-.298a3 3 0 0 0 .424.042"})),H||(H=D.createElement("path",{fillRule:"evenodd",d:"M282.345 347.581a3.32 3.32 0 0 1-3.317-3.318 9.953 9.953 0 1 0-19.906 0 3.318 3.318 0 1 1-6.636 0 16.588 16.588 0 1 1 33.177 0 3.32 3.32 0 0 1-3.318 3.318"})),G||(G=D.createElement("path",{fill:"#ffff50",fillRule:"evenodd",d:"M335.428 516.783h79.625a26.54 26.54 0 0 0 26.541-26.542v-92.895H361.97a26.54 26.54 0 0 0-26.542 26.542Z"})),N||(N=D.createElement("path",{fillRule:"evenodd",d:"M421.714 438.485h-66.406a1.327 1.327 0 0 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.542h-66.406a1.327 1.327 0 1 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.541h-66.406a1.327 1.327 0 1 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0-66.106h-66.406a1.327 1.327 0 0 1 0-2.655h66.406a1.327 1.327 0 0 1 0 2.655m0 26.294h-66.406a1.327 1.327 0 0 1 0-2.654h66.406a1.327 1.327 0 0 1 0 2.654m0 26.542h-66.406a1.327 1.327 0 0 1 0-2.655h66.406a1.327 1.327 0 0 1 0 2.655m19.88-122.607c-.016 0-.03-.008-.045-.007-4.1.14-6.04 4.241-7.753 7.86-1.786 3.783-3.168 6.242-5.432 6.167-2.506-.09-3.94-2.922-5.458-5.918-1.744-3.443-3.734-7.347-7.913-7.201-4.042.138-5.99 3.708-7.706 6.857-1.828 3.355-3.071 5.394-5.47 5.3-2.557-.093-3.916-2.395-5.488-5.06-1.753-2.967-3.78-6.304-7.878-6.19-3.973.137-5.925 3.166-7.648 5.84-1.822 2.826-3.098 4.549-5.527 4.447-2.618-.093-3.97-2.004-5.535-4.216-1.757-2.486-3.737-5.3-7.823-5.163-3.886.133-5.838 2.615-7.56 4.802-1.634 2.075-2.91 3.718-5.611 3.615a1.328 1.328 0 1 0-.096 2.654c4.004.134 6.032-2.389 7.793-4.628 1.562-1.985 2.91-3.698 5.564-3.789 2.556-.108 3.754 1.48 5.567 4.041 1.721 2.434 3.675 5.195 7.606 5.337 4.118.138 6.099-2.94 7.853-5.663 1.569-2.434 2.923-4.535 5.508-4.624 2.38-.088 3.674 1.792 5.5 4.885 1.722 2.916 3.671 6.22 7.68 6.365 4.147.143 6.15-3.477 7.895-6.682 1.511-2.77 2.938-5.388 5.466-5.475 2.38-.056 3.62 2.116 5.456 5.746 1.714 3.388 3.658 7.226 7.73 7.373l.224.004c4.066 0 5.996-4.08 7.704-7.689 1.511-3.198 2.942-6.21 5.397-6.334Z"})),O||(O=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M308.887 516.783h53.083V463.7h-53.083Z"})),_||(_=D.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M388.511 483.606a7 7 0 0 0-.848.085c-.05-.2-.098-.4-.154-.599a6.627 6.627 0 1 0-6.557-11.382q-.22-.225-.444-.446a6.624 6.624 0 1 0-11.397-6.564c-.197-.055-.394-.102-.59-.152a6.64 6.64 0 1 0-13.102 0c-.196.05-.394.097-.59.152a6.628 6.628 0 1 0-11.397 6.564 26.528 26.528 0 1 0 44.231 25.528 6.621 6.621 0 1 0 .848-13.186"})),S||(S=D.createElement("path",{fill:"#3ecc5f",fillRule:"evenodd",d:"M308.887 437.158h53.083v-26.541h-53.083Z"})),z||(z=D.createElement("path",{fill:"#44d860",fillRule:"evenodd",d:"M375.24 427.205a3.318 3.318 0 1 0 0-6.635 3 3 0 0 0-.423.042q-.038-.15-.077-.298a3.319 3.319 0 0 0-1.278-6.38 3.28 3.28 0 0 0-2.001.688q-.11-.113-.223-.223a3.3 3.3 0 0 0 .671-1.983 3.318 3.318 0 0 0-6.37-1.299 13.27 13.27 0 1 0 0 25.541 3.318 3.318 0 0 0 6.37-1.3 3.3 3.3 0 0 0-.671-1.982q.113-.11.223-.223a3.28 3.28 0 0 0 2.001.688 3.318 3.318 0 0 0 1.278-6.38c.028-.098.05-.199.077-.298a3 3 0 0 0 .423.042"})),B||(B=D.createElement("path",{fillRule:"evenodd",d:"M388.511 329.334a3.6 3.6 0 0 1-.65-.067 3.3 3.3 0 0 1-.624-.185 3.5 3.5 0 0 1-.572-.306 5 5 0 0 1-.504-.411 4 4 0 0 1-.41-.504 3.28 3.28 0 0 1-.558-1.845 3.6 3.6 0 0 1 .067-.65 4 4 0 0 1 .184-.624 3.5 3.5 0 0 1 .307-.57 3.2 3.2 0 0 1 .914-.916 3.5 3.5 0 0 1 .572-.305 3.3 3.3 0 0 1 .624-.186 3.1 3.1 0 0 1 1.3 0 3.2 3.2 0 0 1 1.195.49 5 5 0 0 1 .504.412 5 5 0 0 1 .411.504 3.4 3.4 0 0 1 .306.571 3.5 3.5 0 0 1 .252 1.274 3.36 3.36 0 0 1-.969 2.349 5 5 0 0 1-.504.411 3.3 3.3 0 0 1-1.845.558m26.542-1.66a3.4 3.4 0 0 1-2.35-.968 5 5 0 0 1-.41-.504 3.28 3.28 0 0 1-.558-1.845 3.39 3.39 0 0 1 .967-2.349 5 5 0 0 1 .505-.411 3.5 3.5 0 0 1 .572-.305 3.3 3.3 0 0 1 .623-.186 3.1 3.1 0 0 1 1.3 0 3.2 3.2 0 0 1 1.195.49 5 5 0 0 1 .504.412 3.4 3.4 0 0 1 .97 2.35 4 4 0 0 1-.067.65 3.4 3.4 0 0 1-.186.623 5 5 0 0 1-.305.57 5 5 0 0 1-.412.505 5 5 0 0 1-.504.412 3.3 3.3 0 0 1-1.844.557"})))}},5579:(e,a,t)=>{t.r(a),t.d(a,{default:()=>E});var l=t(4164),r=t(8774),n=t(4586),c=t(781),h=t(1107);const d={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var m=t(4848);const i=[{title:"Easy to Use",Svg:t(870).A,description:(0,m.jsx)(m.Fragment,{children:"Docusaurus was designed from the ground up to be easily installed and used to get your website up and running quickly."})},{title:"Focus on What Matters",Svg:t(3844).A,description:(0,m.jsxs)(m.Fragment,{children:["Docusaurus lets you focus on your docs, and we'll do the chores. Go ahead and move your docs into the ",(0,m.jsx)("code",{children:"docs"})," directory."]})},{title:"Powered by React",Svg:t(6740).A,description:(0,m.jsx)(m.Fragment,{children:"Extend or customize your website layout by reusing React. Docusaurus can be extended while reusing the same header and footer."})}];function s(e){let{title:a,Svg:t,description:r}=e;return(0,m.jsxs)("div",{className:(0,l.A)("col col--4"),children:[(0,m.jsx)("div",{className:"text--center",children:(0,m.jsx)(t,{className:d.featureSvg,role:"img"})}),(0,m.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,m.jsx)(h.A,{as:"h3",children:a}),(0,m.jsx)("p",{children:r})]})]})}function f(){return(0,m.jsx)("section",{className:d.features,children:(0,m.jsx)("div",{className:"container",children:(0,m.jsx)("div",{className:"row",children:i.map(((e,a)=>(0,m.jsx)(s,{...e},a)))})})})}const o={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function g(){const{siteConfig:e}=(0,n.A)();return(0,m.jsx)("header",{className:(0,l.A)("hero hero--primary",o.heroBanner),children:(0,m.jsxs)("div",{className:"container",children:[(0,m.jsx)(h.A,{as:"h1",className:"hero__title",children:e.title}),(0,m.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,m.jsx)("div",{className:o.buttons,children:(0,m.jsx)(r.A,{className:"button button--secondary button--lg",to:"/docs/intro",children:"Docusaurus Tutorial - 5min \u23f1\ufe0f"})})]})})}function E(){const{siteConfig:e}=(0,n.A)();return(0,m.jsxs)(c.A,{title:`Hello from ${e.title}`,description:"Description will go into a meta tag in ",children:[(0,m.jsx)(g,{}),(0,m.jsx)("main",{children:(0,m.jsx)(f,{})})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/1e4232ab.81526a43.js b/assets/js/1e4232ab.81526a43.js
new file mode 100644
index 0000000..6020a48
--- /dev/null
+++ b/assets/js/1e4232ab.81526a43.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1953],{3976:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>l});var s=t(4848),r=t(8453);const o={sidebar_position:2},i="Create a Document",a={id:"tutorial-basics/create-a-document",title:"Create a Document",description:"Documents are groups of pages connected through:",source:"@site/docs/tutorial-basics/create-a-document.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/create-a-document",permalink:"/docs/tutorial-basics/create-a-document",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2}},c={},l=[{value:"Create your first Doc",id:"create-your-first-doc",level:2},{value:"Configure the Sidebar",id:"configure-the-sidebar",level:2}];function d(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"create-a-document",children:"Create a Document"}),"\n",(0,s.jsxs)(n.p,{children:["Documents are ",(0,s.jsx)(n.strong,{children:"groups of pages"})," connected through:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["a ",(0,s.jsx)(n.strong,{children:"sidebar"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"previous/next navigation"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.strong,{children:"versioning"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"create-your-first-doc",children:"Create your first Doc"}),"\n",(0,s.jsxs)(n.p,{children:["Create a Markdown file at ",(0,s.jsx)(n.code,{children:"docs/hello.md"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-md",metastring:'title="docs/hello.md"',children:"# Hello\n\nThis is my **first Docusaurus document**!\n"})}),"\n",(0,s.jsxs)(n.p,{children:["A new document is now available at ",(0,s.jsx)(n.a,{href:"http://localhost:3000/docs/hello",children:"http://localhost:3000/docs/hello"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"configure-the-sidebar",children:"Configure the Sidebar"}),"\n",(0,s.jsxs)(n.p,{children:["Docusaurus automatically ",(0,s.jsx)(n.strong,{children:"creates a sidebar"})," from the ",(0,s.jsx)(n.code,{children:"docs"})," folder."]}),"\n",(0,s.jsx)(n.p,{children:"Add metadata to customize the sidebar label and position:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-md",metastring:'title="docs/hello.md" {1-4}',children:"---\nsidebar_label: 'Hi!'\nsidebar_position: 3\n---\n\n# Hello\n\nThis is my **first Docusaurus document**!\n"})}),"\n",(0,s.jsxs)(n.p,{children:["It is also possible to create your sidebar explicitly in ",(0,s.jsx)(n.code,{children:"sidebars.js"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",metastring:'title="sidebars.js"',children:"export default {\n tutorialSidebar: [\n 'intro',\n // highlight-next-line\n 'hello',\n {\n type: 'category',\n label: 'Tutorial',\n items: ['tutorial-basics/create-a-document'],\n },\n ],\n};\n"})})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>a});var s=t(6540);const r={},o=s.createContext(r);function i(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/1f391b9e.cb5e65be.js b/assets/js/1f391b9e.cb5e65be.js
new file mode 100644
index 0000000..b9ccfe9
--- /dev/null
+++ b/assets/js/1f391b9e.cb5e65be.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6061],{7973:(e,n,t)=>{t.r(n),t.d(n,{default:()=>f});t(6540);var a=t(4164),s=t(1213),i=t(7559),l=t(781),r=t(5533),c=t(7763),o=t(996),d=t(4336);const m={mdxPageWrapper:"mdxPageWrapper_j9I6"};var u=t(4848);function f(e){const{content:n}=e,{metadata:{title:t,editUrl:f,description:v,frontMatter:h,unlisted:g,lastUpdatedBy:x,lastUpdatedAt:p},assets:L}=n,{keywords:j,wrapperClassName:A,hide_table_of_contents:N}=h,C=L.image??h.image,H=!!(f||p||x);return(0,u.jsx)(s.e3,{className:(0,a.A)(A??i.G.wrapper.mdxPages,i.G.page.mdxPage),children:(0,u.jsxs)(l.A,{children:[(0,u.jsx)(s.be,{title:t,description:v,keywords:j,image:C}),(0,u.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,u.jsxs)("div",{className:(0,a.A)("row",m.mdxPageWrapper),children:[(0,u.jsxs)("div",{className:(0,a.A)("col",!N&&"col--8"),children:[g&&(0,u.jsx)(o.A,{}),(0,u.jsx)("article",{children:(0,u.jsx)(r.A,{children:(0,u.jsx)(n,{})})}),H&&(0,u.jsx)(d.A,{className:(0,a.A)("margin-top--sm",i.G.pages.pageFooterEditMetaRow),editUrl:f,lastUpdatedAt:p,lastUpdatedBy:x})]}),!N&&n.toc.length>0&&(0,u.jsx)("div",{className:"col col--2",children:(0,u.jsx)(c.A,{toc:n.toc,minHeadingLevel:h.toc_min_heading_level,maxHeadingLevel:h.toc_max_heading_level})})]})})]})})}},7763:(e,n,t)=>{t.d(n,{A:()=>o});t(6540);var a=t(4164),s=t(5195);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=t(4848);const r="table-of-contents__link toc-highlight",c="table-of-contents__link--active";function o(e){let{className:n,...t}=e;return(0,l.jsx)("div",{className:(0,a.A)(i.tableOfContents,"thin-scrollbar",n),children:(0,l.jsx)(s.A,{...t,linkClassName:r,linkActiveClassName:c})})}},5195:(e,n,t)=>{t.d(n,{A:()=>h});var a=t(6540),s=t(6342);function i(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const a=t.slice(2,e.level);e.parentIndex=Math.max(...a),t[e.level]=n}));const a=[];return n.forEach((e=>{const{parentIndex:t,...s}=e;t>=0?n[t].children.push(s):a.push(s)})),a}function l(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:a}=e;return n.flatMap((e=>{const n=l({toc:e.children,minHeadingLevel:t,maxHeadingLevel:a});return function(e){return e.level>=t&&e.level<=a}(e)?[{...e,children:n}]:n}))}function r(e){const n=e.getBoundingClientRect();return n.top===n.bottom?r(e.parentNode):n}function c(e,n){let{anchorTopOffset:t}=n;const a=e.find((e=>r(e).top>=t));if(a){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,a.useRef)(void 0),t=o();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:s,minHeadingLevel:i,maxHeadingLevel:l}=e;function r(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),r=function(e){let{minHeadingLevel:n,maxHeadingLevel:t}=e;const a=[];for(let s=n;s<=t;s+=1)a.push(`h${s}.anchor`);return Array.from(document.querySelectorAll(a.join()))}({minHeadingLevel:i,maxHeadingLevel:l}),o=c(r,{anchorTopOffset:t.current}),d=e.find((e=>o&&o.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(s),e.classList.add(s),n.current=e):e.classList.remove(s)}(e,e===d)}))}return document.addEventListener("scroll",r),document.addEventListener("resize",r),r(),()=>{document.removeEventListener("scroll",r),document.removeEventListener("resize",r)}}),[e,t])}var m=t(8774),u=t(4848);function f(e){let{toc:n,className:t,linkClassName:a,isChild:s}=e;return n.length?(0,u.jsx)("ul",{className:s?void 0:t,children:n.map((e=>(0,u.jsxs)("li",{children:[(0,u.jsx)(m.A,{to:`#${e.id}`,className:a??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,u.jsx)(f,{isChild:!0,toc:e.children,className:t,linkClassName:a})]},e.id)))}):null}const v=a.memo(f);function h(e){let{toc:n,className:t="table-of-contents table-of-contents__left-border",linkClassName:r="table-of-contents__link",linkActiveClassName:c,minHeadingLevel:o,maxHeadingLevel:m,...f}=e;const h=(0,s.p)(),g=o??h.tableOfContents.minHeadingLevel,x=m??h.tableOfContents.maxHeadingLevel,p=function(e){let{toc:n,minHeadingLevel:t,maxHeadingLevel:s}=e;return(0,a.useMemo)((()=>l({toc:i(n),minHeadingLevel:t,maxHeadingLevel:s})),[n,t,s])}({toc:n,minHeadingLevel:g,maxHeadingLevel:x});return d((0,a.useMemo)((()=>{if(r&&c)return{linkClassName:r,linkActiveClassName:c,minHeadingLevel:g,maxHeadingLevel:x}}),[r,c,g,x])),(0,u.jsx)(v,{toc:p,className:t,linkClassName:r,...f})}},996:(e,n,t)=>{t.d(n,{A:()=>f});t(6540);var a=t(4164),s=t(1312),i=t(5260),l=t(4848);function r(){return(0,l.jsx)(s.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function c(){return(0,l.jsx)(s.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function o(){return(0,l.jsx)(i.A,{children:(0,l.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=t(7559),m=t(7293);function u(e){let{className:n}=e;return(0,l.jsx)(m.A,{type:"caution",title:(0,l.jsx)(r,{}),className:(0,a.A)(n,d.G.common.unlistedBanner),children:(0,l.jsx)(c,{})})}function f(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(o,{}),(0,l.jsx)(u,{...e})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/207666d2.a9f47421.js b/assets/js/207666d2.a9f47421.js
new file mode 100644
index 0000000..33a375c
--- /dev/null
+++ b/assets/js/207666d2.a9f47421.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2148],{7025:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>t,metadata:()=>d,toc:()=>l});var s=n(4848),o=n(8453);const t={},r="Media Types",d={id:"location-proof-protocol/media-types",title:"Media Types",description:"Users have the capability to attach a diverse range of media types to a location proof. This functionality is powered by the use of MIME",source:"@site/docs/location-proof-protocol/media-types.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/media-types",permalink:"/docs/location-proof-protocol/media-types",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Strategies + Recipes",permalink:"/docs/location-proof-protocol/strategies-recipes"}},a={},l=[{value:"Media structure",id:"media-structure",level:2},{value:"Future Media Types",id:"future-media-types",level:2},{value:"1. Photos",id:"1-photos",level:3},{value:"2. Videos",id:"2-videos",level:3},{value:"3. Audio",id:"3-audio",level:3},{value:"4. URLs",id:"4-urls",level:3},{value:"5. LIDAR Scans",id:"5-lidar-scans",level:3},{value:"6. Point Clouds",id:"6-point-clouds",level:3},{value:"7. Documents",id:"7-documents",level:3},{value:"8. Other Formats",id:"8-other-formats",level:3},{value:"Considerations for Use",id:"considerations-for-use",level:2}];function c(e){const i={admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"media-types",children:"Media Types"}),"\n",(0,s.jsx)(i.p,{children:"Users have the capability to attach a diverse range of media types to a location proof. This functionality is powered by the use of MIME\ntypes, allowing for the inclusion of various data formats such as photos, videos, audio, URLs, LIDAR scans, point clouds, and more. This\nsection provides an overview of the media types we aim to build support for, their MIME types, and considerations for their use."}),"\n",(0,s.jsx)(i.admonition,{type:"warning",children:(0,s.jsx)(i.p,{children:"This is the alpha version and is subject to change!"})}),"\n",(0,s.jsx)(i.h2,{id:"media-structure",children:"Media structure"}),"\n",(0,s.jsx)(i.p,{children:"Currently, the location proofs we're registering on EAS have two fields related to media:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:(0,s.jsx)(i.code,{children:"mediaType"})}),": an array of strings, each a unique designator of the media attached, to ease parsing when location proofs are read"]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:(0,s.jsx)(i.code,{children:"mediaData"})}),": an array of bytes containing either the media itself or some kind of media identifier, likely a CID"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Of course, elements in each array correspond accoding to index."}),"\n",(0,s.jsx)(i.p,{children:"In this way, any set of media data can be attached to a location proof. This opens use cases such as geotagged photos and videos, dMRV data\nfor impact / regeneration projects, etc."}),"\n",(0,s.jsx)(i.admonition,{type:"note",children:(0,s.jsx)(i.p,{children:"Data included in the media fields should NOT be required for the location proof strategy. For example, if a strategy used photos of the\nsurrounding area (i.e. of known landmarks), this data should be included in the proof recipe."})}),"\n",(0,s.jsxs)(i.p,{children:["At this point, we have not fully scoped the requirements of the ",(0,s.jsx)(i.code,{children:"mediaType"})," string designators. Any content can be attached to a location\nproof (which is why we selected the versatile ",(0,s.jsx)(i.code,{children:"bytes"})," data type) \u2014 but note there is no standardized way of knowing what type of file / data\nis attached. Stay tuned here."]}),"\n",(0,s.jsx)(i.h2,{id:"future-media-types",children:"Future Media Types"}),"\n",(0,s.jsx)(i.h3,{id:"1-photos",children:"1. Photos"}),"\n",(0,s.jsx)(i.p,{children:"Photos can be attached in various formats, each with its corresponding MIME type:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"JPEG"}),": ",(0,s.jsx)(i.code,{children:"image/jpeg"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"PNG"}),": ",(0,s.jsx)(i.code,{children:"image/png"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"GIF"}),": ",(0,s.jsx)(i.code,{children:"image/gif"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"TIFF"}),": ",(0,s.jsx)(i.code,{children:"image/tiff"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"BMP"}),": ",(0,s.jsx)(i.code,{children:"image/bmp"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"2-videos",children:"2. Videos"}),"\n",(0,s.jsx)(i.p,{children:"Video attachments support multiple formats to ensure compatibility and optimal performance:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"MP4"}),": ",(0,s.jsx)(i.code,{children:"video/mp4"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"WebM"}),": ",(0,s.jsx)(i.code,{children:"video/webm"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"AVI"}),": ",(0,s.jsx)(i.code,{children:"video/x-msvideo"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"MOV"}),": ",(0,s.jsx)(i.code,{children:"video/quicktime"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"MKV"}),": ",(0,s.jsx)(i.code,{children:"video/x-matroska"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"3-audio",children:"3. Audio"}),"\n",(0,s.jsx)(i.p,{children:"Audio files in the following formats can be attached to a location proof:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"MP3"}),": ",(0,s.jsx)(i.code,{children:"audio/mpeg"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"WAV"}),": ",(0,s.jsx)(i.code,{children:"audio/wav"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"OGG"}),": ",(0,s.jsx)(i.code,{children:"audio/ogg"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"AAC"}),": ",(0,s.jsx)(i.code,{children:"audio/aac"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"4-urls",children:"4. URLs"}),"\n",(0,s.jsx)(i.p,{children:"URLs can be linked directly from a location proof, providing access to external resources:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"URL"}),": ",(0,s.jsx)(i.code,{children:"text/uri-list"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"5-lidar-scans",children:"5. LIDAR Scans"}),"\n",(0,s.jsx)(i.p,{children:"LIDAR scans provide detailed three-dimensional data and are supported in these formats:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"LAS"}),": ",(0,s.jsx)(i.code,{children:"application/vnd.las"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"LAZ"}),": ",(0,s.jsx)(i.code,{children:"application/vnd.laszip"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"6-point-clouds",children:"6. Point Clouds"}),"\n",(0,s.jsx)(i.p,{children:"Point clouds, representing spatial data points, can be attached in various formats:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"PCD"}),": ",(0,s.jsx)(i.code,{children:"application/pcd"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"PLY"}),": ",(0,s.jsx)(i.code,{children:"application/ply"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"XYZ"}),": ",(0,s.jsx)(i.code,{children:"application/xyz"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"7-documents",children:"7. Documents"}),"\n",(0,s.jsx)(i.p,{children:"Users can attach documents to provide additional information or context:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"PDF"}),": ",(0,s.jsx)(i.code,{children:"application/pdf"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Microsoft Word"}),": ",(0,s.jsx)(i.code,{children:"application/msword"}),", ",(0,s.jsx)(i.code,{children:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Microsoft Excel"}),": ",(0,s.jsx)(i.code,{children:"application/vnd.ms-excel"}),", ",(0,s.jsx)(i.code,{children:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Plain Text"}),": ",(0,s.jsx)(i.code,{children:"text/plain"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"8-other-formats",children:"8. Other Formats"}),"\n",(0,s.jsx)(i.p,{children:"We also support a wide range of other media types to ensure flexibility:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"JSON"}),": ",(0,s.jsx)(i.code,{children:"application/json"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"XML"}),": ",(0,s.jsx)(i.code,{children:"application/xml"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"CSV"}),": ",(0,s.jsx)(i.code,{children:"text/csv"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"ZIP"}),": ",(0,s.jsx)(i.code,{children:"application/zip"})]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"considerations-for-use",children:"Considerations for Use"}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"File Size"}),": Different media types can have varying file sizes. It's essential to consider the storage implications and performance\nimpact of large files, especially high-resolution videos, LIDAR scans, and point clouds."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Format Compatibility"}),": Ensure that the attached media format is compatible with the systems and applications that will access the\nlocation proof. For example, not all browsers or devices may support every video or audio format."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Security"}),": Validate and sanitize media files to protect against potential security threats such as malware or malicious code embedded\nin files."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Metadata"}),": Including metadata with media files (e.g., EXIF data for photos, geolocation for videos) can provide additional context and\nimprove the usability of the attached media."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Compression"}),": Utilize compression for large files to optimize storage and transmission. Formats like LAZ (compressed LAS) are\npreferable for LIDAR scans."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"By leveraging MIME types, our system provides a flexible and robust framework for attaching a wide range of media types to location proofs,\nenhancing the richness and utility of the data associated with each proof."})]})}function h(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>d});var s=n(6540);const o={},t=s.createContext(o);function r(e){const i=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(t.Provider,{value:i},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/2237.fe867cfb.js b/assets/js/2237.fe867cfb.js
new file mode 100644
index 0000000..71f5802
--- /dev/null
+++ b/assets/js/2237.fe867cfb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2237],{3363:(e,t,n)=>{n.d(t,{A:()=>a});n(6540);var i=n(4164),o=n(1312),s=n(1107),r=n(4848);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,i.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},2237:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});n(6540);var i=n(1312),o=n(1213),s=n(781),r=n(3363),a=n(4848);function d(){const e=(0,i.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/2c1b52bf.3592ad26.js b/assets/js/2c1b52bf.3592ad26.js
new file mode 100644
index 0000000..0eff7ec
--- /dev/null
+++ b/assets/js/2c1b52bf.3592ad26.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2382],{320:(e,t,d)=>{d.r(t),d.d(t,{assets:()=>s,contentTitle:()=>c,default:()=>a,frontMatter:()=>o,metadata:()=>n,toc:()=>l});var r=d(4848),i=d(8453);const o={},c="EAS Schema",n={id:"location-proof-protocol/eas-schema",title:"EAS Schema",description:"Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)",source:"@site/docs/location-proof-protocol/eas-schema.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/eas-schema",permalink:"/docs/location-proof-protocol/eas-schema",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Architecture",permalink:"/docs/location-proof-protocol/architecture"},next:{title:"Location Types",permalink:"/docs/location-proof-protocol/location-types"}},s={},l=[{value:"Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)",id:"location-proof-protocol-core-schema-v01-sepolia-testnet",level:2}];function h(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"eas-schema",children:"EAS Schema"}),"\n",(0,r.jsx)(t.h2,{id:"location-proof-protocol-core-schema-v01-sepolia-testnet",children:"Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)"}),"\n",(0,r.jsxs)(t.p,{children:["The core layer of the Location Proof Protocol includes a standard data model. v0.1 of the data model is described in this document. The\ncurrent working schema is deployed on Ethereum Sepolia testnet, UID ",(0,r.jsx)(t.code,{children:"0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b"}),"\n(",(0,r.jsx)(t.a,{href:"https://sepolia.easscan.org/schema/view/0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b",children:"view on EASScan"}),")."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Field"}),(0,r.jsx)(t.th,{children:"Description"}),(0,r.jsx)(t.th,{children:"Key"}),(0,r.jsx)(t.th,{children:"Data Type"}),(0,r.jsx)(t.th,{children:"Source"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Identifier"}),(0,r.jsx)(t.td,{children:"Unique ID for the location proof."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"uid"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"bytes32"})}),(0,r.jsx)(t.td,{children:"EAS provides this"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Prover Address"}),(0,r.jsx)(t.td,{children:"Address of the prover."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"from"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"address"})}),(0,r.jsx)(t.td,{children:"Sender address, as specified by EAS"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Subject Identifier"}),(0,r.jsx)(t.td,{children:"Unique ID for the subject/event."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"subject"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"address"})}),(0,r.jsx)(t.td,{children:"EAS provides this, however future iterations may require IDs that are not Ethereum addresses (DIDs, for example)"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Timestamp"}),(0,r.jsx)(t.td,{children:"Time the location proof was created."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"timestamp"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"uint256"})}),(0,r.jsx)(t.td,{children:"EAS"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Event Timestamp"}),(0,r.jsx)(t.td,{children:"Time of the event referenced by the location proof."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"eventTimestamp"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"uint256"})}),(0,r.jsx)(t.td,{children:"User input"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Spatial Reference System"}),(0,r.jsx)(t.td,{children:"Coordinate system within which the object is positioned."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"srs"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string"})}),(0,r.jsx)(t.td,{children:'in v0.1, hard coded to "EPSG:4326"'})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Location Type"}),(0,r.jsx)(t.td,{children:"A string defining how the location field is structured."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"locationType"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string"})}),(0,r.jsxs)(t.td,{children:["Depends on the ",(0,r.jsx)(t.code,{children:"recipe"})," / strategy, or user input"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Location"}),(0,r.jsx)(t.td,{children:"The location of the object/event."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"location"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"bytes"})}),(0,r.jsxs)(t.td,{children:["Depends on the ",(0,r.jsx)(t.code,{children:"recipe"})," / strategy, or user input"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Proof Recipe Identifier"}),(0,r.jsx)(t.td,{children:"Indicates the proof recipe used."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"recipeType"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string[]"})}),(0,r.jsx)(t.td,{children:"Defined from a set of registered recipes, to be stored in the @/recipes directory"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Proof Recipe Payload"}),(0,r.jsx)(t.td,{children:"Encoded data specific to the proof recipe, which could include encrypted location data, a zero-knowledge proof, or references to other verification data."}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"recipePayload"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"bytes[]"})}),(0,r.jsx)(t.td,{children:"Specified in recipe definition"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Media Type"}),(0,r.jsxs)(t.td,{children:["A unique string referring to the media to be included in a ",(0,r.jsx)(t.code,{children:"bytes"})," field, Media Data. This pattern is similar to OpenGraph Protocol\u2019s ",(0,r.jsx)(t.code,{children:"type"})," definition."]}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"mediaType"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string[]"})}),(0,r.jsx)(t.td,{children:"Defined from a set of supported media types, to be stored in the @/media directory"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Media Data"}),(0,r.jsxs)(t.td,{children:["A ",(0,r.jsx)(t.code,{children:"bytes"})," field allowing the attachment of arbitrary data to a location proof. This data is intended to be irrelevant to the location proof and not required/utilized in the proof recipe verification."]}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"mediaData"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"bytes[]"})}),(0,r.jsx)(t.td,{children:"Specified in media type definition"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Memo"}),(0,r.jsx)(t.td,{children:"An arbitrary message"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"memo"})}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.code,{children:"string"})}),(0,r.jsx)(t.td,{children:"User input"})]})]})]}),"\n",(0,r.jsx)(t.p,{children:"Note that this design supports location proofs that include multiple recipe types / recipe payloads and media type / media data."})]})}function a(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},8453:(e,t,d)=>{d.d(t,{R:()=>c,x:()=>n});var r=d(6540);const i={},o=r.createContext(i);function c(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function n(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/3217192f.f67096cb.js b/assets/js/3217192f.f67096cb.js
new file mode 100644
index 0000000..f27fafd
--- /dev/null
+++ b/assets/js/3217192f.f67096cb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8462],{8174:s=>{s.exports=JSON.parse('{"tag":{"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description","allTagsPath":"/blog/tags","count":4,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/docusaurus","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/3242.e2456824.js b/assets/js/3242.e2456824.js
new file mode 100644
index 0000000..473737b
--- /dev/null
+++ b/assets/js/3242.e2456824.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3242],{6535:(e,t,a)=>{a.d(t,{A:()=>b});var s=a(6540),n=a(4164),r=a(781),l=a(4581),i=a(8774),o=a(1312),c=a(6347),d=a(9169);function m(e){const{pathname:t}=(0,c.zy)();return(0,s.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,d.ys)(e.permalink,t))}(e,t)))),[e,t])}const u={sidebar:"sidebar_re4s",sidebarItemTitle:"sidebarItemTitle_pO2u",sidebarItemList:"sidebarItemList_Yudw",sidebarItem:"sidebarItem__DBe",sidebarItemLink:"sidebarItemLink_mo7H",sidebarItemLinkActive:"sidebarItemLinkActive_I1ZP"};var h=a(4848);function g(e){let{sidebar:t}=e;const a=m(t.items);return(0,h.jsx)("aside",{className:"col col--3",children:(0,h.jsxs)("nav",{className:(0,n.A)(u.sidebar,"thin-scrollbar"),"aria-label":(0,o.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,h.jsx)("div",{className:(0,n.A)(u.sidebarItemTitle,"margin-bottom--md"),children:t.title}),(0,h.jsx)("ul",{className:(0,n.A)(u.sidebarItemList,"clean-list"),children:a.map((e=>(0,h.jsx)("li",{className:u.sidebarItem,children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:u.sidebarItemLink,activeClassName:u.sidebarItemLinkActive,children:e.title})},e.permalink)))})]})})}var x=a(5600);function j(e){let{sidebar:t}=e;const a=m(t.items);return(0,h.jsx)("ul",{className:"menu__list",children:a.map((e=>(0,h.jsx)("li",{className:"menu__list-item",children:(0,h.jsx)(i.A,{isNavLink:!0,to:e.permalink,className:"menu__link",activeClassName:"menu__link--active",children:e.title})},e.permalink)))})}function p(e){return(0,h.jsx)(x.GX,{component:j,props:e})}function f(e){let{sidebar:t}=e;const a=(0,l.l)();return t?.items.length?"mobile"===a?(0,h.jsx)(p,{sidebar:t}):(0,h.jsx)(g,{sidebar:t}):null}function b(e){const{sidebar:t,toc:a,children:s,...l}=e,i=t&&t.items.length>0;return(0,h.jsx)(r.A,{...l,children:(0,h.jsx)("div",{className:"container margin-vert--lg",children:(0,h.jsxs)("div",{className:"row",children:[(0,h.jsx)(f,{sidebar:t}),(0,h.jsx)("main",{className:(0,n.A)("col",{"col--7":i,"col--9 col--offset-1":!i}),children:s}),a&&(0,h.jsx)("div",{className:"col col--2",children:a})]})})})}},4651:(e,t,a)=>{a.d(t,{A:()=>R});a(6540);var s=a(4164),n=a(7131),r=a(4848);function l(e){let{children:t,className:a}=e;return(0,r.jsx)("article",{className:a,children:t})}var i=a(8774);const o={title:"title_f1Hy"};function c(e){let{className:t}=e;const{metadata:a,isBlogPostPage:l}=(0,n.e)(),{permalink:c,title:d}=a,m=l?"h1":"h2";return(0,r.jsx)(m,{className:(0,s.A)(o.title,t),children:l?d:(0,r.jsx)(i.A,{to:c,children:d})})}var d=a(1312),m=a(5846),u=a(6266);const h={container:"container_mt6G"};function g(e){let{readingTime:t}=e;const a=function(){const{selectMessage:e}=(0,m.W)();return t=>{const a=Math.ceil(t);return e(a,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return(0,r.jsx)(r.Fragment,{children:a(t)})}function x(e){let{date:t,formattedDate:a}=e;return(0,r.jsx)("time",{dateTime:t,children:a})}function j(){return(0,r.jsx)(r.Fragment,{children:" \xb7 "})}function p(e){let{className:t}=e;const{metadata:a}=(0,n.e)(),{date:l,readingTime:i}=a,o=(0,u.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,r.jsxs)("div",{className:(0,s.A)(h.container,"margin-vert--md",t),children:[(0,r.jsx)(x,{date:l,formattedDate:(c=l,o.format(new Date(c)))}),void 0!==i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(j,{}),(0,r.jsx)(g,{readingTime:i})]})]});var c}function f(e){return e.href?(0,r.jsx)(i.A,{...e}):(0,r.jsx)(r.Fragment,{children:e.children})}function b(e){let{author:t,className:a}=e;const{name:n,title:l,url:i,imageURL:o,email:c}=t,d=i||c&&`mailto:${c}`||void 0;return(0,r.jsxs)("div",{className:(0,s.A)("avatar margin-bottom--sm",a),children:[o&&(0,r.jsx)(f,{href:d,className:"avatar__photo-link",children:(0,r.jsx)("img",{className:"avatar__photo",src:o,alt:n})}),n&&(0,r.jsxs)("div",{className:"avatar__intro",children:[(0,r.jsx)("div",{className:"avatar__name",children:(0,r.jsx)(f,{href:d,children:(0,r.jsx)("span",{children:n})})}),l&&(0,r.jsx)("small",{className:"avatar__subtitle",children:l})]})]})}const v={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function A(e){let{className:t}=e;const{metadata:{authors:a},assets:l}=(0,n.e)();if(0===a.length)return null;const i=a.every((e=>{let{name:t}=e;return!t}));return(0,r.jsx)("div",{className:(0,s.A)("margin-top--md margin-bottom--sm",i?v.imageOnlyAuthorRow:"row",t),children:a.map(((e,t)=>(0,r.jsx)("div",{className:(0,s.A)(!i&&"col col--6",i?v.imageOnlyAuthorCol:v.authorCol),children:(0,r.jsx)(b,{author:{...e,imageURL:l.authorsImageUrls[t]??e.imageURL}})},t)))})}function N(){return(0,r.jsxs)("header",{children:[(0,r.jsx)(c,{}),(0,r.jsx)(p,{}),(0,r.jsx)(A,{})]})}var _=a(440),k=a(5533);function P(e){let{children:t,className:a}=e;const{isBlogPostPage:l}=(0,n.e)();return(0,r.jsx)("div",{id:l?_.blogPostContainerID:void 0,className:(0,s.A)("markdown",a),children:(0,r.jsx)(k.A,{children:t})})}var w=a(7559),T=a(4336),I=a(2053);function L(){return(0,r.jsx)("b",{children:(0,r.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read More"})})}function y(e){const{blogPostTitle:t,...a}=e;return(0,r.jsx)(i.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...a,children:(0,r.jsx)(L,{})})}function C(){const{metadata:e,isBlogPostPage:t}=(0,n.e)(),{tags:a,title:l,editUrl:i,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,m=!t&&o,u=a.length>0;if(!(u||m||i))return null;if(t){const e=!!(i||d||c);return(0,r.jsxs)("footer",{className:"docusaurus-mt-lg",children:[u&&(0,r.jsx)("div",{className:(0,s.A)("row","margin-top--sm",w.G.blog.blogFooterEditMetaRow),children:(0,r.jsx)("div",{className:"col",children:(0,r.jsx)(I.A,{tags:a})})}),e&&(0,r.jsx)(T.A,{className:(0,s.A)("margin-top--sm",w.G.blog.blogFooterEditMetaRow),editUrl:i,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,r.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[u&&(0,r.jsx)("div",{className:(0,s.A)("col",{"col--9":m}),children:(0,r.jsx)(I.A,{tags:a})}),m&&(0,r.jsx)("div",{className:(0,s.A)("col text--right",{"col--3":u}),children:(0,r.jsx)(y,{blogPostTitle:l,to:e.permalink})})]})}function R(e){let{children:t,className:a}=e;const i=function(){const{isBlogPostPage:e}=(0,n.e)();return e?void 0:"margin-bottom--xl"}();return(0,r.jsxs)(l,{className:(0,s.A)(i,a),children:[(0,r.jsx)(N,{}),(0,r.jsx)(P,{children:t}),(0,r.jsx)(C,{})]})}},9022:(e,t,a)=>{a.d(t,{A:()=>l});a(6540);var s=a(4164),n=a(8774),r=a(4848);function l(e){const{permalink:t,title:a,subLabel:l,isNext:i}=e;return(0,r.jsxs)(n.A,{className:(0,s.A)("pagination-nav__link",i?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[l&&(0,r.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,r.jsx)("div",{className:"pagination-nav__label",children:a})]})}},6133:(e,t,a)=>{a.d(t,{A:()=>i});a(6540);var s=a(4164),n=a(8774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=a(4848);function i(e){let{permalink:t,label:a,count:i,description:o}=e;return(0,l.jsxs)(n.A,{href:t,title:o,className:(0,s.A)(r.tag,i?r.tagWithCount:r.tagRegular),children:[a,i&&(0,l.jsx)("span",{children:i})]})}},2053:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var s=a(4164),n=a(1312),r=a(6133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var i=a(4848);function o(e){let{tags:t}=e;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("b",{children:(0,i.jsx)(n.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,i.jsx)("ul",{className:(0,s.A)(l.tags,"padding--none","margin-left--sm"),children:t.map((e=>(0,i.jsx)("li",{className:l.tag,children:(0,i.jsx)(r.A,{...e})},e.permalink)))})]})}},7131:(e,t,a)=>{a.d(t,{e:()=>o,i:()=>i});var s=a(6540),n=a(9532),r=a(4848);const l=s.createContext(null);function i(e){let{children:t,content:a,isBlogPostPage:n=!1}=e;const i=function(e){let{content:t,isBlogPostPage:a}=e;return(0,s.useMemo)((()=>({metadata:t.metadata,frontMatter:t.frontMatter,assets:t.assets,toc:t.toc,isBlogPostPage:a})),[t,a])}({content:a,isBlogPostPage:n});return(0,r.jsx)(l.Provider,{value:i,children:t})}function o(){const e=(0,s.useContext)(l);if(null===e)throw new n.dV("BlogPostProvider");return e}},5846:(e,t,a)=>{a.d(t,{W:()=>c});var s=a(6540),n=a(4586);const r=["zero","one","two","few","many","other"];function l(e){return r.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:l(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,n.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:l(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),i}}),[e])}function c(){const e=o();return{selectMessage:(t,a)=>function(e,t,a){const s=e.split("|");if(1===s.length)return s[0];s.length>a.pluralForms.length&&console.error(`For locale=${a.locale}, a maximum of ${a.pluralForms.length} plural forms are expected (${a.pluralForms.join(",")}), but the message contains ${s.length}: ${e}`);const n=a.select(t),r=a.pluralForms.indexOf(n);return s[Math.min(r,s.length-1)]}(a,t,e)}}}}]);
\ No newline at end of file
diff --git a/assets/js/35131ec2.82b557e5.js b/assets/js/35131ec2.82b557e5.js
new file mode 100644
index 0000000..30ceb3b
--- /dev/null
+++ b/assets/js/35131ec2.82b557e5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3666],{3161:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var n=s(4848),o=s(8453);const i={},r="Spatial.sol",a={id:"spatial-registries/spatial-sol",title:"Spatial.sol",description:"",source:"@site/docs/spatial-registries/spatial-sol.md",sourceDirName:"spatial-registries",slug:"/spatial-registries/spatial-sol",permalink:"/docs/spatial-registries/spatial-sol",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},c={},l=[];function p(t){const e={code:"code",h1:"h1",...(0,o.R)(),...t.components};return(0,n.jsx)(e.h1,{id:"spatialsol",children:(0,n.jsx)(e.code,{children:"Spatial.sol"})})}function u(t={}){const{wrapper:e}={...(0,o.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(p,{...t})}):p(t)}},8453:(t,e,s)=>{s.d(e,{R:()=>r,x:()=>a});var n=s(6540);const o={},i=n.createContext(o);function r(t){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:r(t.components),n.createElement(i.Provider,{value:e},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/36994c47.337a7516.js b/assets/js/36994c47.337a7516.js
new file mode 100644
index 0000000..ede6438
--- /dev/null
+++ b/assets/js/36994c47.337a7516.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9858],{5516:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/393be207.a0ef7dd4.js b/assets/js/393be207.a0ef7dd4.js
new file mode 100644
index 0000000..9a19dd2
--- /dev/null
+++ b/assets/js/393be207.a0ef7dd4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4134],{633:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>r,metadata:()=>p,toc:()=>d});var o=t(4848),a=t(8453);const r={title:"Markdown page example"},s="Markdown page example",p={type:"mdx",permalink:"/markdown-page",source:"@site/src/pages/markdown-page.md",title:"Markdown page example",description:"You don't need React to write simple standalone pages.",frontMatter:{title:"Markdown page example"},unlisted:!1},c={},d=[];function i(e){const n={h1:"h1",p:"p",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"markdown-page-example",children:"Markdown page example"}),"\n",(0,o.jsx)(n.p,{children:"You don't need React to write simple standalone pages."})]})}function l(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(i,{...e})}):i(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>p});var o=t(6540);const a={},r=o.createContext(a);function s(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function p(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/3a2db09e.39dab5fe.js b/assets/js/3a2db09e.39dab5fe.js
new file mode 100644
index 0000000..f931fb2
--- /dev/null
+++ b/assets/js/3a2db09e.39dab5fe.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8121],{8070:o=>{o.exports=JSON.parse('{"tags":[{"label":"Facebook","permalink":"/blog/tags/facebook","description":"Facebook tag description","count":1},{"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description","count":2},{"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description","count":4},{"label":"Hola","permalink":"/blog/tags/hola","description":"Hola tag description","count":1}]}')}}]);
\ No newline at end of file
diff --git a/assets/js/4e345e3b.0aaadb8d.js b/assets/js/4e345e3b.0aaadb8d.js
new file mode 100644
index 0000000..bf3e726
--- /dev/null
+++ b/assets/js/4e345e3b.0aaadb8d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7174],{9955:(t,n,e)=>{e.r(n),e.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>l,frontMatter:()=>c,metadata:()=>i,toc:()=>a});var o=e(4848),r=e(8453);const c={},s="Introduction",i={id:"introducing-astral",title:"Introduction",description:"",source:"@site/docs/introducing-astral.md",sourceDirName:".",slug:"/introducing-astral",permalink:"/docs/introducing-astral",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},u={},a=[];function d(t){const n={h1:"h1",...(0,r.R)(),...t.components};return(0,o.jsx)(n.h1,{id:"introduction",children:"Introduction"})}function l(t={}){const{wrapper:n}={...(0,r.R)(),...t.components};return n?(0,o.jsx)(n,{...t,children:(0,o.jsx)(d,{...t})}):d(t)}},8453:(t,n,e)=>{e.d(n,{R:()=>s,x:()=>i});var o=e(6540);const r={},c=o.createContext(r);function s(t){const n=o.useContext(c);return o.useMemo((function(){return"function"==typeof t?t(n):{...n,...t}}),[n,t])}function i(t){let n;return n=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),o.createElement(c.Provider,{value:n},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/533a09ca.b8570790.js b/assets/js/533a09ca.b8570790.js
new file mode 100644
index 0000000..c4bf69b
--- /dev/null
+++ b/assets/js/533a09ca.b8570790.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3098],{4700:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>g,frontMatter:()=>r,metadata:()=>i,toc:()=>l});var o=s(4848),n=s(8453);const r={sidebar_position:3},a="Create a Blog Post",i={id:"tutorial-basics/create-a-blog-post",title:"Create a Blog Post",description:"Docusaurus creates a page for each blog post, but also a blog index page, a tag system, an RSS feed...",source:"@site/docs/tutorial-basics/create-a-blog-post.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/create-a-blog-post",permalink:"/docs/tutorial-basics/create-a-blog-post",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3}},c={},l=[{value:"Create your first Post",id:"create-your-first-post",level:2}];function u(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,n.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"create-a-blog-post",children:"Create a Blog Post"}),"\n",(0,o.jsxs)(t.p,{children:["Docusaurus creates a ",(0,o.jsx)(t.strong,{children:"page for each blog post"}),", but also a ",(0,o.jsx)(t.strong,{children:"blog index page"}),", a ",(0,o.jsx)(t.strong,{children:"tag system"}),", an ",(0,o.jsx)(t.strong,{children:"RSS"})," feed..."]}),"\n",(0,o.jsx)(t.h2,{id:"create-your-first-post",children:"Create your first Post"}),"\n",(0,o.jsxs)(t.p,{children:["Create a file at ",(0,o.jsx)(t.code,{children:"blog/2021-02-28-greetings.md"}),":"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-md",metastring:'title="blog/2021-02-28-greetings.md"',children:"---\nslug: greetings\ntitle: Greetings!\nauthors:\n - name: Joel Marcey\n title: Co-creator of Docusaurus 1\n url: https://github.com/JoelMarcey\n image_url: https://github.com/JoelMarcey.png\n - name: S\xe9bastien Lorber\n title: Docusaurus maintainer\n url: https://sebastienlorber.com\n image_url: https://github.com/slorber.png\ntags: [greetings]\n---\n\nCongratulations, you have made your first post!\n\nFeel free to play around and edit this post as much as you like.\n"})}),"\n",(0,o.jsxs)(t.p,{children:["A new blog post is now available at ",(0,o.jsx)(t.a,{href:"http://localhost:3000/blog/greetings",children:"http://localhost:3000/blog/greetings"}),"."]})]})}function g(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(u,{...e})}):u(e)}},8453:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>i});var o=s(6540);const n={},r=o.createContext(n);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/584535cc.4efad016.js b/assets/js/584535cc.4efad016.js
new file mode 100644
index 0000000..1fc4eb6
--- /dev/null
+++ b/assets/js/584535cc.4efad016.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8623],{6778:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>c,contentTitle:()=>s,default:()=>p,frontMatter:()=>r,metadata:()=>a,toc:()=>l});var i=t(4848),n=t(8453);const r={},s="Strategies + Recipes",a={id:"location-proof-protocol/strategies-recipes",title:"Strategies + Recipes",description:"The generalized location proof protocol is designed as it is to accommodate the wide range of strategies for proving location on the",source:"@site/docs/location-proof-protocol/strategies-recipes.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/strategies-recipes",permalink:"/docs/location-proof-protocol/strategies-recipes",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Location Types",permalink:"/docs/location-proof-protocol/location-types"},next:{title:"Media Types",permalink:"/docs/location-proof-protocol/media-types"}},c={},l=[{value:"Broad Approaches to Location Proofs",id:"broad-approaches-to-location-proofs",level:2}];function d(e){const o={a:"a",admonition:"admonition",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.h1,{id:"strategies--recipes",children:"Strategies + Recipes"}),"\n",(0,i.jsx)(o.p,{children:"The generalized location proof protocol is designed as it is to accommodate the wide range of strategies for proving location on the\ndecentralized web, while also provided a standard way of representing these proofs."}),"\n",(0,i.jsxs)(o.p,{children:["In this section of the documentation, we will define these different location proof strategies, and document how to contribute a new\nstrategy to the protocol. (For a clearer idea of our design, see the ",(0,i.jsx)(o.a,{href:"/docs/location-proof-protocol/architecture",children:"Architecture"})," page)."]}),"\n",(0,i.jsx)(o.admonition,{type:"note",children:(0,i.jsx)(o.p,{children:"A contributing guide, along with documentation on specific strategies, is in the work. If you want to help us develop this, reach out!"})}),"\n",(0,i.jsx)(o.h2,{id:"broad-approaches-to-location-proofs",children:"Broad Approaches to Location Proofs"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Authority-based Strategies"}),": Authorized individuals attest to someone's presence. i.e. ticket checkers, event hosts"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Social Strategies"}),": People verify each other's claims, confirming or challenging their validity. i.e. permissionless social\nconfirmation, perhaps with sybil-resistant scoring of confirmer accounts; PIN exchange"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Near-field Machine Strategies"}),": Hardware devices attest to the presence of another device through information exchange or cryptographic\n'endorsement' of a claim. i.e. RFID; NFC; Bluetooth"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Network Machine Strategies"}),": Nodes on a local network or hardware wallets triangulate position and sign confirmation attestations. i.e.\nTime of Flight; Time Difference of Arrival"]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Sensor Data Strategies"}),": Where devices sense local networks, environmental conditions, images + audio, accelerometers, etc, and\nlocation is discerned from analysis of this evidence. i.e. radio frequency / optical / inertial / acoustic / magnetometer localization"]}),"\n"]}),"\n",(0,i.jsx)(o.p,{children:"In addition to these different categories of strategies, various verification schemes can be employed to endow location proof recipes with a\ndifferent attributes, such as privacy, game theoretic assurances of validity, etc."}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Time-based Schemes"}),": Involves waiting or challenge periods."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Cryptographic Schemes"}),": Zero-knowledge proofs verified on-chain or in peer nodes."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"AI-based Schemes"}),": Analyzing photos or contextual information."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Economic Schemes"}),": Requires payment or staking value for proof creation."]}),"\n"]}),"\n",(0,i.jsx)(o.p,{children:"This is an incomplete list, and we hope to support a growing set of experiments in location proof design."})]})}function p(e={}){const{wrapper:o}={...(0,n.R)(),...e.components};return o?(0,i.jsx)(o,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},8453:(e,o,t)=>{t.d(o,{R:()=>s,x:()=>a});var i=t(6540);const n={},r=i.createContext(n);function s(e){const o=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),i.createElement(r.Provider,{value:o},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/59362658.fceb63f4.js b/assets/js/59362658.fceb63f4.js
new file mode 100644
index 0000000..f4a301e
--- /dev/null
+++ b/assets/js/59362658.fceb63f4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9325],{1180:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>u});var s=o(4848),n=o(8453);const r={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,c={permalink:"/blog/mdx-blog-post",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",tags:[{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0]},u=[];function i(t){const e={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,n.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:["Blog posts support ",(0,s.jsx)(e.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(e.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(e.admonition,{type:"tip",children:[(0,s.jsx)(e.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-js",children:" alert('button clicked!')}>Click me! \n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(i,{...t})}):i(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>a,x:()=>c});var s=o(6540);const n={},r=s.createContext(n);function a(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:a(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/5c868d36.00dc99bc.js b/assets/js/5c868d36.00dc99bc.js
new file mode 100644
index 0000000..746172f
--- /dev/null
+++ b/assets/js/5c868d36.00dc99bc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1974],{5254:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>i,contentTitle:()=>o,default:()=>p,frontMatter:()=>n,metadata:()=>c,toc:()=>l});var r=t(4848),s=t(8453);const n={sidebar_position:1},o="Create a Page",c={id:"tutorial-basics/create-a-page",title:"Create a Page",description:"Add Markdown or React files to src/pages to create a standalone page:",source:"@site/docs/tutorial-basics/create-a-page.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/create-a-page",permalink:"/docs/tutorial-basics/create-a-page",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1}},i={},l=[{value:"Create your first React Page",id:"create-your-first-react-page",level:2},{value:"Create your first Markdown Page",id:"create-your-first-markdown-page",level:2}];function d(e){const a={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h1,{id:"create-a-page",children:"Create a Page"}),"\n",(0,r.jsxs)(a.p,{children:["Add ",(0,r.jsx)(a.strong,{children:"Markdown or React"})," files to ",(0,r.jsx)(a.code,{children:"src/pages"})," to create a ",(0,r.jsx)(a.strong,{children:"standalone page"}),":"]}),"\n",(0,r.jsxs)(a.ul,{children:["\n",(0,r.jsxs)(a.li,{children:[(0,r.jsx)(a.code,{children:"src/pages/index.js"})," \u2192 ",(0,r.jsx)(a.code,{children:"localhost:3000/"})]}),"\n",(0,r.jsxs)(a.li,{children:[(0,r.jsx)(a.code,{children:"src/pages/foo.md"})," \u2192 ",(0,r.jsx)(a.code,{children:"localhost:3000/foo"})]}),"\n",(0,r.jsxs)(a.li,{children:[(0,r.jsx)(a.code,{children:"src/pages/foo/bar.js"})," \u2192 ",(0,r.jsx)(a.code,{children:"localhost:3000/foo/bar"})]}),"\n"]}),"\n",(0,r.jsx)(a.h2,{id:"create-your-first-react-page",children:"Create your first React Page"}),"\n",(0,r.jsxs)(a.p,{children:["Create a file at ",(0,r.jsx)(a.code,{children:"src/pages/my-react-page.js"}),":"]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-jsx",metastring:'title="src/pages/my-react-page.js"',children:"import React from 'react';\nimport Layout from '@theme/Layout';\n\nexport default function MyReactPage() {\n return (\n \n My React page \n This is a React page
\n \n );\n}\n"})}),"\n",(0,r.jsxs)(a.p,{children:["A new page is now available at ",(0,r.jsx)(a.a,{href:"http://localhost:3000/my-react-page",children:"http://localhost:3000/my-react-page"}),"."]}),"\n",(0,r.jsx)(a.h2,{id:"create-your-first-markdown-page",children:"Create your first Markdown Page"}),"\n",(0,r.jsxs)(a.p,{children:["Create a file at ",(0,r.jsx)(a.code,{children:"src/pages/my-markdown-page.md"}),":"]}),"\n",(0,r.jsx)(a.pre,{children:(0,r.jsx)(a.code,{className:"language-mdx",metastring:'title="src/pages/my-markdown-page.md"',children:"# My Markdown page\n\nThis is a Markdown page\n"})}),"\n",(0,r.jsxs)(a.p,{children:["A new page is now available at ",(0,r.jsx)(a.a,{href:"http://localhost:3000/my-markdown-page",children:"http://localhost:3000/my-markdown-page"}),"."]})]})}function p(e={}){const{wrapper:a}={...(0,s.R)(),...e.components};return a?(0,r.jsx)(a,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},8453:(e,a,t)=>{t.d(a,{R:()=>o,x:()=>c});var r=t(6540);const s={},n=r.createContext(s);function o(e){const a=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function c(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(n.Provider,{value:a},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/5e90a9b3.111c581f.js b/assets/js/5e90a9b3.111c581f.js
new file mode 100644
index 0000000..ab717d0
--- /dev/null
+++ b/assets/js/5e90a9b3.111c581f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8025],{7134:a=>{a.exports=JSON.parse('{"tag":{"label":"Hola","permalink":"/blog/tags/hola","description":"Hola tag description","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/hola","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/5e95c892.3d1fe17f.js b/assets/js/5e95c892.3d1fe17f.js
new file mode 100644
index 0000000..ce6156b
--- /dev/null
+++ b/assets/js/5e95c892.3d1fe17f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9647],{7121:(e,s,r)=>{r.r(s),r.d(s,{default:()=>l});r(6540);var c=r(4164),u=r(1213),a=r(7559),d=r(2831),n=r(781),t=r(4848);function l(e){return(0,t.jsx)(u.e3,{className:(0,c.A)(a.G.wrapper.docsPages),children:(0,t.jsx)(n.A,{children:(0,d.v)(e.route.routes)})})}}}]);
\ No newline at end of file
diff --git a/assets/js/6875c492.ab63eb90.js b/assets/js/6875c492.ab63eb90.js
new file mode 100644
index 0000000..17ed319
--- /dev/null
+++ b/assets/js/6875c492.ab63eb90.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4813],{7713:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var s=n(1312),a=n(9022),i=n(4848);function r(e){const{metadata:t}=e,{previousPage:n,nextPage:r}=t;return(0,i.jsxs)("nav",{className:"pagination-nav","aria-label":(0,s.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[n&&(0,i.jsx)(a.A,{permalink:n,title:(0,i.jsx)(s.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer Entries"})}),r&&(0,i.jsx)(a.A,{permalink:r,title:(0,i.jsx)(s.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older Entries"}),isNext:!0})]})}},3892:(e,t,n)=>{n.d(t,{A:()=>r});n(6540);var s=n(7131),a=n(4651),i=n(4848);function r(e){let{items:t,component:n=a.A}=e;return(0,i.jsx)(i.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,i.jsx)(s.i,{content:t,children:(0,i.jsx)(n,{children:(0,i.jsx)(t,{})})},t.metadata.permalink)}))})}},3069:(e,t,n)=>{n.r(t),n.d(t,{default:()=>A});n(6540);var s=n(4164),a=n(1312),i=n(5846),r=n(1213),l=n(7559),o=n(8774),c=n(6535),d=n(7713),g=n(1463),u=n(3892),p=n(996),h=n(1107),m=n(4848);function x(e){const t=function(){const{selectMessage:e}=(0,i.W)();return t=>e(t,(0,a.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:t}))}();return(0,a.T)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:t(e.count),tagName:e.label})}function j(e){let{tag:t}=e;const n=x(t);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(r.be,{title:n,description:t.description}),(0,m.jsx)(g.A,{tag:"blog_tags_posts"})]})}function b(e){let{tag:t,items:n,sidebar:s,listMetadata:i}=e;const r=x(t);return(0,m.jsxs)(c.A,{sidebar:s,children:[t.unlisted&&(0,m.jsx)(p.A,{}),(0,m.jsxs)("header",{className:"margin-bottom--xl",children:[(0,m.jsx)(h.A,{as:"h1",children:r}),t.description&&(0,m.jsx)("p",{children:t.description}),(0,m.jsx)(o.A,{href:t.allTagsPath,children:(0,m.jsx)(a.A,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page",children:"View All Tags"})})]}),(0,m.jsx)(u.A,{items:n}),(0,m.jsx)(d.A,{metadata:i})]})}function A(e){return(0,m.jsxs)(r.e3,{className:(0,s.A)(l.G.wrapper.blogPages,l.G.page.blogTagPostListPage),children:[(0,m.jsx)(j,{...e}),(0,m.jsx)(b,{...e})]})}},996:(e,t,n)=>{n.d(t,{A:()=>p});n(6540);var s=n(4164),a=n(1312),i=n(5260),r=n(4848);function l(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function o(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,r.jsx)(i.A,{children:(0,r.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=n(7559),g=n(7293);function u(e){let{className:t}=e;return(0,r.jsx)(g.A,{type:"caution",title:(0,r.jsx)(l,{}),className:(0,s.A)(t,d.G.common.unlistedBanner),children:(0,r.jsx)(o,{})})}function p(e){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(c,{}),(0,r.jsx)(u,{...e})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/6edd94a7.ba7d4649.js b/assets/js/6edd94a7.ba7d4649.js
new file mode 100644
index 0000000..a2850cf
--- /dev/null
+++ b/assets/js/6edd94a7.ba7d4649.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9103],{9731:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>l,frontMatter:()=>o,metadata:()=>u,toc:()=>a});var n=r(4848),s=r(8453);const o={},c="Quickstart",u={id:"developer-resources/quickstart",title:"Quickstart",description:"",source:"@site/docs/developer-resources/quickstart.md",sourceDirName:"developer-resources",slug:"/developer-resources/quickstart",permalink:"/docs/developer-resources/quickstart",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},i={},a=[];function d(e){const t={h1:"h1",...(0,s.R)(),...e.components};return(0,n.jsx)(t.h1,{id:"quickstart",children:"Quickstart"})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},8453:(e,t,r)=>{r.d(t,{R:()=>c,x:()=>u});var n=r(6540);const s={},o=n.createContext(s);function c(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/73664a40.93ba7b65.js b/assets/js/73664a40.93ba7b65.js
new file mode 100644
index 0000000..e7ddf32
--- /dev/null
+++ b/assets/js/73664a40.93ba7b65.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1972],{9581:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>m,contentTitle:()=>r,default:()=>a,frontMatter:()=>n,metadata:()=>u,toc:()=>l});var t=i(4848),o=i(8453);const n={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},r=void 0,u={permalink:"/blog/long-blog-post",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",tags:[{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/blog/first-blog-post"}},m={authorsImageUrls:[void 0]},l=[];function c(e){const s={code:"code",p:"p",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,t.jsxs)(s.p,{children:["Use a ",(0,t.jsx)(s.code,{children:"\x3c!--"})," ",(0,t.jsx)(s.code,{children:"truncate"})," ",(0,t.jsx)(s.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}),"\n",(0,t.jsx)(s.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})]})}function a(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},8453:(e,s,i)=>{i.d(s,{R:()=>r,x:()=>u});var t=i(6540);const o={},n=t.createContext(o);function r(e){const s=t.useContext(n);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function u(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(n.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/7661071f.d4c31643.js b/assets/js/7661071f.d4c31643.js
new file mode 100644
index 0000000..c333a5f
--- /dev/null
+++ b/assets/js/7661071f.d4c31643.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8737],{4137:(e,o,s)=>{s.r(o),s.d(o,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>i});var n=s(4848),t=s(8453);const r={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},l=void 0,a={permalink:"/blog/welcome",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",tags:[{inline:!1,label:"Facebook",permalink:"/blog/tags/facebook",description:"Facebook tag description"},{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"}},c={authorsImageUrls:[void 0,void 0]},i=[];function u(e){const o={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(o.p,{children:[(0,n.jsx)(o.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,n.jsx)(o.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,n.jsxs)(o.p,{children:["Simply add Markdown files (or folders) to the ",(0,n.jsx)(o.code,{children:"blog"})," directory."]}),"\n",(0,n.jsxs)(o.p,{children:["Regular blog authors can be added to ",(0,n.jsx)(o.code,{children:"authors.yml"}),"."]}),"\n",(0,n.jsx)(o.p,{children:"The blog post date can be extracted from filenames, such as:"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.code,{children:"2019-05-30-welcome.md"})}),"\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.code,{children:"2019-05-30-welcome/index.md"})}),"\n"]}),"\n",(0,n.jsx)(o.p,{children:"A blog post folder can be convenient to co-locate blog post images:"}),"\n",(0,n.jsx)(o.p,{children:(0,n.jsx)(o.img,{alt:"Docusaurus Plushie",src:s(5917).A+"",width:"1500",height:"500"})}),"\n",(0,n.jsx)(o.p,{children:"The blog supports tags as well!"}),"\n",(0,n.jsxs)(o.p,{children:[(0,n.jsx)(o.strong,{children:"And if you don't want a blog"}),": just delete this directory, and use ",(0,n.jsx)(o.code,{children:"blog: false"})," in your Docusaurus config."]})]})}function d(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},5917:(e,o,s)=>{s.d(o,{A:()=>n});const n=s.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"},8453:(e,o,s)=>{s.d(o,{R:()=>l,x:()=>a});var n=s(6540);const t={},r=n.createContext(t);function l(e){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),n.createElement(r.Provider,{value:o},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/7ae2cc57.0c88ed34.js b/assets/js/7ae2cc57.0c88ed34.js
new file mode 100644
index 0000000..adcae0a
--- /dev/null
+++ b/assets/js/7ae2cc57.0c88ed34.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3764],{1762:(t,e,a)=>{a.r(e),a.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>r,toc:()=>p});var n=a(4848),s=a(8453);const o={},c="What is spatial data?",r={id:"core-concepts/what-is-spatial-data",title:"What is spatial data?",description:"",source:"@site/docs/core-concepts/what-is-spatial-data.md",sourceDirName:"core-concepts",slug:"/core-concepts/what-is-spatial-data",permalink:"/docs/core-concepts/what-is-spatial-data",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},i={},p=[];function d(t){const e={h1:"h1",...(0,s.R)(),...t.components};return(0,n.jsx)(e.h1,{id:"what-is-spatial-data",children:"What is spatial data?"})}function u(t={}){const{wrapper:e}={...(0,s.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},8453:(t,e,a)=>{a.d(e,{R:()=>c,x:()=>r});var n=a(6540);const s={},o=n.createContext(s);function c(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function r(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:c(t.components),n.createElement(o.Provider,{value:e},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/814f3328.5dfaceaf.js b/assets/js/814f3328.5dfaceaf.js
new file mode 100644
index 0000000..6e1fb50
--- /dev/null
+++ b/assets/js/814f3328.5dfaceaf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7472],{5513:l=>{l.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Welcome","permalink":"/blog/welcome","unlisted":false},{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post","unlisted":false},{"title":"Long Blog Post","permalink":"/blog/long-blog-post","unlisted":false},{"title":"First Blog Post","permalink":"/blog/first-blog-post","unlisted":false}]}')}}]);
\ No newline at end of file
diff --git a/assets/js/822bd8ab.daee8353.js b/assets/js/822bd8ab.daee8353.js
new file mode 100644
index 0000000..dca5c57
--- /dev/null
+++ b/assets/js/822bd8ab.daee8353.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2748],{8611:(s,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>l,frontMatter:()=>i,metadata:()=>a,toc:()=>u});var e=t(4848),o=t(8453);const i={sidebar_position:6},r="Congratulations!",a={id:"tutorial-basics/congratulations",title:"Congratulations!",description:"You have just learned the basics of Docusaurus and made some changes to the initial template.",source:"@site/docs/tutorial-basics/congratulations.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/congratulations",permalink:"/docs/tutorial-basics/congratulations",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6}},c={},u=[{value:"What's next?",id:"whats-next",level:2}];function d(s){const n={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...s.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(n.h1,{id:"congratulations",children:"Congratulations!"}),"\n",(0,e.jsxs)(n.p,{children:["You have just learned the ",(0,e.jsx)(n.strong,{children:"basics of Docusaurus"})," and made some changes to the ",(0,e.jsx)(n.strong,{children:"initial template"}),"."]}),"\n",(0,e.jsxs)(n.p,{children:["Docusaurus has ",(0,e.jsx)(n.strong,{children:"much more to offer"}),"!"]}),"\n",(0,e.jsxs)(n.p,{children:["Have ",(0,e.jsx)(n.strong,{children:"5 more minutes"}),"? Take a look at ",(0,e.jsx)(n.strong,{children:(0,e.jsx)(n.a,{href:"/docs/tutorial-extras/manage-docs-versions",children:"versioning"})})," and ",(0,e.jsx)(n.strong,{children:(0,e.jsx)(n.a,{href:"/docs/tutorial-extras/translate-your-site",children:"i18n"})}),"."]}),"\n",(0,e.jsxs)(n.p,{children:["Anything ",(0,e.jsx)(n.strong,{children:"unclear"})," or ",(0,e.jsx)(n.strong,{children:"buggy"})," in this tutorial? ",(0,e.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/discussions/4610",children:"Please report it!"})]}),"\n",(0,e.jsx)(n.h2,{id:"whats-next",children:"What's next?"}),"\n",(0,e.jsxs)(n.ul,{children:["\n",(0,e.jsxs)(n.li,{children:["Read the ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/",children:"official documentation"})]}),"\n",(0,e.jsxs)(n.li,{children:["Modify your site configuration with ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/docs/api/docusaurus-config",children:(0,e.jsx)(n.code,{children:"docusaurus.config.js"})})]}),"\n",(0,e.jsxs)(n.li,{children:["Add navbar and footer items with ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/docs/api/themes/configuration",children:(0,e.jsx)(n.code,{children:"themeConfig"})})]}),"\n",(0,e.jsxs)(n.li,{children:["Add a custom ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/docs/styling-layout",children:"Design and Layout"})]}),"\n",(0,e.jsxs)(n.li,{children:["Add a ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/docs/search",children:"search bar"})]}),"\n",(0,e.jsxs)(n.li,{children:["Find inspirations in the ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/showcase",children:"Docusaurus showcase"})]}),"\n",(0,e.jsxs)(n.li,{children:["Get involved in the ",(0,e.jsx)(n.a,{href:"https://docusaurus.io/community/support",children:"Docusaurus Community"})]}),"\n"]})]})}function l(s={}){const{wrapper:n}={...(0,o.R)(),...s.components};return n?(0,e.jsx)(n,{...s,children:(0,e.jsx)(d,{...s})}):d(s)}},8453:(s,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var e=t(6540);const o={},i=e.createContext(o);function r(s){const n=e.useContext(i);return e.useMemo((function(){return"function"==typeof s?s(n):{...n,...s}}),[n,s])}function a(s){let n;return n=s.disableParentContext?"function"==typeof s.components?s.components(o):s.components||o:r(s.components),e.createElement(i.Provider,{value:n},s.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/8717b14a.a93f16c9.js b/assets/js/8717b14a.a93f16c9.js
new file mode 100644
index 0000000..e74d260
--- /dev/null
+++ b/assets/js/8717b14a.a93f16c9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3694],{1615:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>g,frontMatter:()=>l,metadata:()=>r,toc:()=>a});var n=o(4848),s=o(8453);const l={slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},i=void 0,r={permalink:"/blog/long-blog-post",source:"@site/blog/2019-05-29-long-blog-post.md",title:"Long Blog Post",description:"This is the summary of a very long blog post,",date:"2019-05-29T00:00:00.000Z",tags:[{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:2.05,hasTruncateMarker:!0,authors:[{name:"Endilie Yacop Sucipto",title:"Maintainer of Docusaurus",url:"https://github.com/endiliey",imageURL:"https://github.com/endiliey.png",key:"endi"}],frontMatter:{slug:"long-blog-post",title:"Long Blog Post",authors:"endi",tags:["hello","docusaurus"]},unlisted:!1,prevItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"},nextItem:{title:"First Blog Post",permalink:"/blog/first-blog-post"}},c={authorsImageUrls:[void 0]},a=[];function u(t){const e={code:"code",p:"p",...(0,s.R)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.p,{children:"This is the summary of a very long blog post,"}),"\n",(0,n.jsxs)(e.p,{children:["Use a ",(0,n.jsx)(e.code,{children:"\x3c!--"})," ",(0,n.jsx)(e.code,{children:"truncate"})," ",(0,n.jsx)(e.code,{children:"--\x3e"})," comment to limit blog post size in the list view."]})]})}function g(t={}){const{wrapper:e}={...(0,s.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(u,{...t})}):u(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>i,x:()=>r});var n=o(6540);const s={},l=n.createContext(s);function i(t){const e=n.useContext(l);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function r(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),n.createElement(l.Provider,{value:e},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/9176b25c.8a4aa6a5.js b/assets/js/9176b25c.8a4aa6a5.js
new file mode 100644
index 0000000..e659546
--- /dev/null
+++ b/assets/js/9176b25c.8a4aa6a5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3874],{5453:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>u});var n=o(4848),s=o(8453);const r={},c="Location attestations",a={id:"developer-resources/location-attestations",title:"Location attestations",description:"",source:"@site/docs/developer-resources/location-attestations.md",sourceDirName:"developer-resources",slug:"/developer-resources/location-attestations",permalink:"/docs/developer-resources/location-attestations",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},i={},u=[];function l(t){const e={h1:"h1",...(0,s.R)(),...t.components};return(0,n.jsx)(e.h1,{id:"location-attestations",children:"Location attestations"})}function d(t={}){const{wrapper:e}={...(0,s.R)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(l,{...t})}):l(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>c,x:()=>a});var n=o(6540);const s={},r=n.createContext(s);function c(t){const e=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:c(t.components),n.createElement(r.Provider,{value:e},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/925b3f96.71100b88.js b/assets/js/925b3f96.71100b88.js
new file mode 100644
index 0000000..477ae2e
--- /dev/null
+++ b/assets/js/925b3f96.71100b88.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8609],{5026:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>m,frontMatter:()=>n,metadata:()=>u,toc:()=>l});var s=o(4848),i=o(8453);const n={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},r=void 0,u={permalink:"/blog/first-blog-post",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",tags:[{inline:!1,label:"Hola",permalink:"/blog/tags/hola",description:"Hola tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},a={authorsImageUrls:[void 0]},l=[];function c(t){const e={p:"p",...(0,i.R)(),...t.components};return(0,s.jsx)(e.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})}function m(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(c,{...t})}):c(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>r,x:()=>u});var s=o(6540);const i={},n=s.createContext(i);function r(t){const e=s.useContext(n);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function u(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:r(t.components),s.createElement(n.Provider,{value:e},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/9dfd250b.e705d71e.js b/assets/js/9dfd250b.e705d71e.js
new file mode 100644
index 0000000..e341557
--- /dev/null
+++ b/assets/js/9dfd250b.e705d71e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2887],{1853:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>u});var s=n(4848),o=n(8453);const r={sidebar_label:"Hi!",sidebar_position:3},i="Hello",c={id:"hello",title:"Hello",description:"This is my first Docusaurus document!# Hello",source:"@site/docs/hello.md",sourceDirName:".",slug:"/hello",permalink:"/docs/hello",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_label:"Hi!",sidebar_position:3}},l={},u=[];function a(e){const t={h1:"h1",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"hello",children:"Hello"}),"\n",(0,s.jsxs)(t.p,{children:["This is my ",(0,s.jsx)(t.strong,{children:"first Docusaurus document"}),"!# Hello"]}),"\n",(0,s.jsxs)(t.p,{children:["This is my ",(0,s.jsx)(t.strong,{children:"first Docusaurus document"}),"!"]})]})}function d(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(6540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/9e4087bc.9b70b1ae.js b/assets/js/9e4087bc.9b70b1ae.js
new file mode 100644
index 0000000..04bc910
--- /dev/null
+++ b/assets/js/9e4087bc.9b70b1ae.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2711],{9331:(e,r,t)=>{t.r(r),t.d(r,{default:()=>m});t(6540);var a=t(8774),n=t(1312),s=t(1213),i=t(6266),c=t(781),l=t(1107),o=t(4848);function d(e){let{year:r,posts:t}=e;const n=(0,i.i)({day:"numeric",month:"long",timeZone:"UTC"});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(l.A,{as:"h3",id:r,children:r}),(0,o.jsx)("ul",{children:t.map((e=>{return(0,o.jsx)("li",{children:(0,o.jsxs)(a.A,{to:e.metadata.permalink,children:[(r=e.metadata.date,n.format(new Date(r)))," - ",e.metadata.title]})},e.metadata.date);var r}))})]})}function h(e){let{years:r}=e;return(0,o.jsx)("section",{className:"margin-vert--lg",children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("div",{className:"row",children:r.map(((e,r)=>(0,o.jsx)("div",{className:"col col--4 margin-vert--lg",children:(0,o.jsx)(d,{...e})},r)))})})})}function m(e){let{archive:r}=e;const t=(0,n.T)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),a=(0,n.T)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),i=function(e){const r=e.reduce(((e,r)=>{const t=r.metadata.date.split("-")[0],a=e.get(t)??[];return e.set(t,[r,...a])}),new Map);return Array.from(r,(e=>{let[r,t]=e;return{year:r,posts:t}}))}(r.blogPosts);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.be,{title:t,description:a}),(0,o.jsxs)(c.A,{children:[(0,o.jsx)("header",{className:"hero hero--primary",children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)(l.A,{as:"h1",className:"hero__title",children:t}),(0,o.jsx)("p",{className:"hero__subtitle",children:a})]})}),(0,o.jsx)("main",{children:i.length>0&&(0,o.jsx)(h,{years:i})})]})]})}},6266:(e,r,t)=>{t.d(r,{i:()=>n});var a=t(4586);function n(e){void 0===e&&(e={});const{i18n:{currentLocale:r}}=(0,a.A)(),t=function(){const{i18n:{currentLocale:e,localeConfigs:r}}=(0,a.A)();return r[e].calendar}();return new Intl.DateTimeFormat(r,{calendar:t,...e})}}}]);
\ No newline at end of file
diff --git a/assets/js/a6aa9e1f.02f3ef1b.js b/assets/js/a6aa9e1f.02f3ef1b.js
new file mode 100644
index 0000000..dce6f5d
--- /dev/null
+++ b/assets/js/a6aa9e1f.02f3ef1b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7643],{5124:(e,t,a)=>{a.r(t),a.d(t,{default:()=>f});a(6540);var n=a(4164),i=a(4586),r=a(1213),o=a(7559),s=a(6535),l=a(7713),d=a(1463),c=a(3892),g=a(5260),p=a(6676),u=a(4848);function m(e){const t=(0,p.k)(e);return(0,u.jsx)(g.A,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}function h(e){const{metadata:t}=e,{siteConfig:{title:a}}=(0,i.A)(),{blogDescription:n,blogTitle:o,permalink:s}=t,l="/"===s?a:o;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(r.be,{title:l,description:n}),(0,u.jsx)(d.A,{tag:"blog_posts_list"})]})}function b(e){const{metadata:t,items:a,sidebar:n}=e;return(0,u.jsxs)(s.A,{sidebar:n,children:[(0,u.jsx)(c.A,{items:a}),(0,u.jsx)(l.A,{metadata:t})]})}function f(e){return(0,u.jsxs)(r.e3,{className:(0,n.A)(o.G.wrapper.blogPages,o.G.page.blogListPage),children:[(0,u.jsx)(h,{...e}),(0,u.jsx)(m,{...e}),(0,u.jsx)(b,{...e})]})}},7713:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var n=a(1312),i=a(9022),r=a(4848);function o(e){const{metadata:t}=e,{previousPage:a,nextPage:o}=t;return(0,r.jsxs)("nav",{className:"pagination-nav","aria-label":(0,n.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,r.jsx)(i.A,{permalink:a,title:(0,r.jsx)(n.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer Entries"})}),o&&(0,r.jsx)(i.A,{permalink:o,title:(0,r.jsx)(n.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older Entries"}),isNext:!0})]})}},3892:(e,t,a)=>{a.d(t,{A:()=>o});a(6540);var n=a(7131),i=a(4651),r=a(4848);function o(e){let{items:t,component:a=i.A}=e;return(0,r.jsx)(r.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,r.jsx)(n.i,{content:t,children:(0,r.jsx)(a,{children:(0,r.jsx)(t,{})})},t.metadata.permalink)}))})}},6676:(e,t,a)=>{a.d(t,{k:()=>c,J:()=>g});var n=a(6025),i=a(4586),r=a(6803);var o=a(7131);const s=e=>new Date(e).toISOString();function l(e){const t=e.map(p);return{author:1===t.length?t[0]:t}}function d(e,t,a){return e?{image:u({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${a}`})}:{}}function c(e){const{siteConfig:t}=(0,i.A)(),{withBaseUrl:a}=(0,n.hH)(),{metadata:{blogDescription:r,blogTitle:o,permalink:c}}=e,g=`${t.url}${c}`;return{"@context":"https://schema.org","@type":"Blog","@id":g,mainEntityOfPage:g,headline:o,description:r,blogPost:e.items.map((e=>function(e,t,a){const{assets:n,frontMatter:i,metadata:r}=e,{date:o,title:c,description:g,lastUpdatedAt:p}=r,u=n.image??i.image,m=i.keywords??[],h=`${t.url}${r.permalink}`,b=p?s(p):void 0;return{"@type":"BlogPosting","@id":h,mainEntityOfPage:h,url:h,headline:c,name:c,description:g,datePublished:o,...b?{dateModified:b}:{},...l(r.authors),...d(u,a,c),...m?{keywords:m}:{}}}(e.content,t,a)))}}function g(){const e=function(){const e=(0,r.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}(),{assets:t,metadata:a}=(0,o.e)(),{siteConfig:c}=(0,i.A)(),{withBaseUrl:g}=(0,n.hH)(),{date:p,title:u,description:m,frontMatter:h,lastUpdatedAt:b}=a,f=t.image??h.image,x=h.keywords??[],j=b?s(b):void 0,A=`${c.url}${a.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":A,mainEntityOfPage:A,url:A,headline:u,name:u,description:m,datePublished:p,...j?{dateModified:j}:{},...l(a.authors),...d(f,g,u),...x?{keywords:x}:{},isPartOf:{"@type":"Blog","@id":`${c.url}${e.blogBasePath}`,name:e.blogTitle}}}function p(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function u(e){let{imageUrl:t,caption:a}=e;return{"@type":"ImageObject","@id":t,url:t,contentUrl:t,caption:a}}}}]);
\ No newline at end of file
diff --git a/assets/js/a7456010.5f9bbb01.js b/assets/js/a7456010.5f9bbb01.js
new file mode 100644
index 0000000..4e5dd12
--- /dev/null
+++ b/assets/js/a7456010.5f9bbb01.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1235],{8552:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/a7bd4aaa.b74e8d88.js b/assets/js/a7bd4aaa.b74e8d88.js
new file mode 100644
index 0000000..f1c27df
--- /dev/null
+++ b/assets/js/a7bd4aaa.b74e8d88.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7098],{4532:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(6540);var r=s(1213),o=s(2967),t=s(2252),c=s(2831),i=s(1463),u=s(4848);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(i.A,{version:e.version,tag:(0,o.tU)(e.pluginId,e.version)}),(0,u.jsx)(r.be,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:e,route:s}=n;return(0,u.jsx)(r.e3,{className:e.className,children:(0,u.jsx)(t.n,{version:e,children:(0,c.v)(s.routes)})})}function d(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...n}),(0,u.jsx)(l,{...n})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/a8f61235.cffc3c7f.js b/assets/js/a8f61235.cffc3c7f.js
new file mode 100644
index 0000000..9ae0f62
--- /dev/null
+++ b/assets/js/a8f61235.cffc3c7f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9269],{9755:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>i});var a=n(4848),c=n(8453);const o={},r="Decentralized spatial data",s={id:"core-concepts/decentralized-spatial-data",title:"Decentralized spatial data",description:"",source:"@site/docs/core-concepts/decentralized-spatial-data.md",sourceDirName:"core-concepts",slug:"/core-concepts/decentralized-spatial-data",permalink:"/docs/core-concepts/decentralized-spatial-data",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},d={},i=[];function l(e){const t={h1:"h1",...(0,c.R)(),...e.components};return(0,a.jsx)(t.h1,{id:"decentralized-spatial-data",children:"Decentralized spatial data"})}function p(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(l,{...e})}):l(e)}},8453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>s});var a=n(6540);const c={},o=a.createContext(c);function r(e){const t=a.useContext(o);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:r(e.components),a.createElement(o.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/a94703ab.6844256b.js b/assets/js/a94703ab.6844256b.js
new file mode 100644
index 0000000..14026da
--- /dev/null
+++ b/assets/js/a94703ab.6844256b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9048],{2559:(e,t,n)=>{n.r(t),n.d(t,{default:()=>be});var a=n(6540),o=n(4164),i=n(1213),s=n(7559),l=n(1754),r=n(6588),c=n(1312),d=n(3104),u=n(5062);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(4848);function h(){const{shown:e,scrollToTop:t}=function(e){let{threshold:t}=e;const[n,o]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:s,cancelScroll:l}=(0,d.gk)();return(0,d.Mq)(((e,n)=>{let{scrollY:a}=e;const s=n?.scrollY;s&&(i.current?i.current=!1:a>=s?(l(),o(!1)):a{e.location.hash&&(i.current=!0,o(!1))})),{shown:n,scrollToTop:()=>s(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,o.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(3109),x=n(6347),f=n(4581),j=n(6342),v=n(3465);function _(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const A={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function g(e){let{onClick:t}=e;return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,o.A)("button button--secondary button--outline",A.collapseSidebarButton),onClick:t,children:(0,b.jsx)(_,{className:A.collapseSidebarButtonIcon})})}var k=n(5041),C=n(9532);const S=Symbol("EmptyContext"),T=a.createContext(S);function N(e){let{children:t}=e;const[n,o]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:n,setExpandedItem:o})),[n]);return(0,b.jsx)(T.Provider,{value:i,children:t})}var I=n(1422),B=n(9169),y=n(8774),w=n(2303);function L(e){let{collapsed:t,categoryLabel:n,onClick:a}=e;return(0,b.jsx)("button",{"aria-label":t?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:n}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:n}),"aria-expanded":!t,type:"button",className:"clean-btn menu__caret",onClick:a})}function E(e){let{item:t,onItemClick:n,activePath:i,level:r,index:c,...d}=e;const{items:u,label:m,collapsible:h,className:p,href:x}=t,{docs:{sidebar:{autoCollapseCategories:f}}}=(0,j.p)(),v=function(e){const t=(0,w.A)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0),[e,t])}(t),_=(0,l.w8)(t,i),A=(0,B.ys)(x,i),{collapsed:g,setCollapsed:k}=(0,I.u)({initialState:()=>!!h&&(!_&&t.collapsed)}),{expandedItem:N,setExpandedItem:E}=function(){const e=(0,a.useContext)(T);if(e===S)throw new C.dV("DocSidebarItemsExpandedStateProvider");return e}(),M=function(e){void 0===e&&(e=!g),E(e?null:c),k(e)};return function(e){let{isActive:t,collapsed:n,updateCollapsed:o}=e;const i=(0,C.ZC)(t);(0,a.useEffect)((()=>{t&&!i&&n&&o(!1)}),[t,i,n,o])}({isActive:_,collapsed:g,updateCollapsed:M}),(0,a.useEffect)((()=>{h&&null!=N&&N!==c&&f&&k(!0)}),[h,N,c,k,f]),(0,b.jsxs)("li",{className:(0,o.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(r),"menu__list-item",{"menu__list-item--collapsed":g},p),children:[(0,b.jsxs)("div",{className:(0,o.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":A}),children:[(0,b.jsx)(y.A,{className:(0,o.A)("menu__link",{"menu__link--sublist":h,"menu__link--sublist-caret":!x&&h,"menu__link--active":_}),onClick:h?e=>{n?.(t),x?M(!1):(e.preventDefault(),M())}:()=>{n?.(t)},"aria-current":A?"page":void 0,role:h&&!x?"button":void 0,"aria-expanded":h&&!x?!g:void 0,href:h?v??"#":v,...d,children:m}),x&&h&&(0,b.jsx)(L,{collapsed:g,categoryLabel:m,onClick:e=>{e.preventDefault(),M()}})]}),(0,b.jsx)(I.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:g,children:(0,b.jsx)(U,{items:u,tabIndex:g?-1:0,onItemClick:n,activePath:i,level:r+1})})]})}var M=n(6654),H=n(3186);const G={menuExternalLink:"menuExternalLink_NmtK"};function W(e){let{item:t,onItemClick:n,activePath:a,level:i,index:r,...c}=e;const{href:d,label:u,className:m,autoAddBaseUrl:h}=t,p=(0,l.w8)(t,a),x=(0,M.A)(d);return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(i),"menu__list-item",m),children:(0,b.jsxs)(y.A,{className:(0,o.A)("menu__link",!x&&G.menuExternalLink,{"menu__link--active":p}),autoAddBaseUrl:h,"aria-current":p?"page":void 0,to:d,...x&&{onClick:n?()=>n(t):void 0},...c,children:[u,!x&&(0,b.jsx)(H.A,{})]})},u)}const P={menuHtmlItem:"menuHtmlItem_M9Kj"};function R(e){let{item:t,level:n,index:a}=e;const{value:i,defaultStyle:l,className:r}=t;return(0,b.jsx)("li",{className:(0,o.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(n),l&&[P.menuHtmlItem,"menu__list-item"],r),dangerouslySetInnerHTML:{__html:i}},a)}function D(e){let{item:t,...n}=e;switch(t.type){case"category":return(0,b.jsx)(E,{item:t,...n});case"html":return(0,b.jsx)(R,{item:t,...n});default:return(0,b.jsx)(W,{item:t,...n})}}function F(e){let{items:t,...n}=e;const a=(0,l.Y)(t,n.activePath);return(0,b.jsx)(N,{children:a.map(((e,t)=>(0,b.jsx)(D,{item:e,index:t,...n},t)))})}const U=(0,a.memo)(F),V={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function Y(e){let{path:t,sidebar:n,className:i}=e;const l=function(){const{isActive:e}=(0,k.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)((t=>{let{scrollY:a}=t;e&&n(0===a)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,o.A)("menu thin-scrollbar",V.menu,l&&V.menuWithAnnouncementBar,i),children:(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(U,{items:n,activePath:t,level:1})})})}const K="sidebar_njMd",z="sidebarWithHideableNavbar_wUlq",q="sidebarHidden_VK0M",O="sidebarLogo_isFc";function J(e){let{path:t,sidebar:n,onCollapse:a,isHidden:i}=e;const{navbar:{hideOnScroll:s},docs:{sidebar:{hideable:l}}}=(0,j.p)();return(0,b.jsxs)("div",{className:(0,o.A)(K,s&&z,i&&q),children:[s&&(0,b.jsx)(v.A,{tabIndex:-1,className:O}),(0,b.jsx)(Y,{path:t,sidebar:n}),l&&(0,b.jsx)(g,{onClick:a})]})}const Q=a.memo(J);var X=n(5600),Z=n(9876);const $=e=>{let{sidebar:t,path:n}=e;const a=(0,Z.M)();return(0,b.jsx)("ul",{className:(0,o.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(U,{items:t,activePath:n,onItemClick:e=>{"category"===e.type&&e.href&&a.toggle(),"link"===e.type&&a.toggle()},level:1})})};function ee(e){return(0,b.jsx)(X.GX,{component:$,props:e})}const te=a.memo(ee);function ne(e){const t=(0,f.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(Q,{...e}),a&&(0,b.jsx)(te,{...e})]})}const ae={expandButton:"expandButton_TmdG",expandButtonIcon:"expandButtonIcon_i1dp"};function oe(e){let{toggleSidebar:t}=e;return(0,b.jsx)("div",{className:ae.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:t,onClick:t,children:(0,b.jsx)(_,{className:ae.expandButtonIcon})})}const ie={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function se(e){let{children:t}=e;const n=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:t},n?.name??"noSidebar")}function le(e){let{sidebar:t,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}=e;const{pathname:l}=(0,x.zy)(),[r,c]=(0,a.useState)(!1),d=(0,a.useCallback)((()=>{r&&c(!1),!r&&(0,p.O)()&&c(!0),i((e=>!e))}),[i,r]);return(0,b.jsx)("aside",{className:(0,o.A)(s.G.docs.docSidebarContainer,ie.docSidebarContainer,n&&ie.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(ie.docSidebarContainer)&&n&&c(!0)},children:(0,b.jsx)(se,{children:(0,b.jsxs)("div",{className:(0,o.A)(ie.sidebarViewport,r&&ie.sidebarViewportHidden),children:[(0,b.jsx)(ne,{sidebar:t,path:l,onCollapse:d,isHidden:r}),r&&(0,b.jsx)(oe,{toggleSidebar:d})]})})})}const re={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function ce(e){let{hiddenSidebarContainer:t,children:n}=e;const a=(0,r.t)();return(0,b.jsx)("main",{className:(0,o.A)(re.docMainContainer,(t||!a)&&re.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,o.A)("container padding-top--md padding-bottom--lg",re.docItemWrapper,t&&re.docItemWrapperEnhanced),children:n})})}const de={docRoot:"docRoot_UBD9",docsWrapper:"docsWrapper_hBAB"};function ue(e){let{children:t}=e;const n=(0,r.t)(),[o,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:de.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:de.docRoot,children:[n&&(0,b.jsx)(le,{sidebar:n.items,hiddenSidebarContainer:o,setHiddenSidebarContainer:i}),(0,b.jsx)(ce,{hiddenSidebarContainer:o,children:t})]})]})}var me=n(3363);function be(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(me.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(i.e3,{className:(0,o.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(ue,{children:n})})})}},3363:(e,t,n)=>{n.d(t,{A:()=>l});n(6540);var a=n(4164),o=n(1312),i=n(1107),s=n(4848);function l(e){let{className:t}=e;return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",t),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(i.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]);
\ No newline at end of file
diff --git a/assets/js/aba21aa0.ed09cce9.js b/assets/js/aba21aa0.ed09cce9.js
new file mode 100644
index 0000000..8a87549
--- /dev/null
+++ b/assets/js/aba21aa0.ed09cce9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5742],{7093:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/acecf23e.92dddac5.js b/assets/js/acecf23e.92dddac5.js
new file mode 100644
index 0000000..251c76b
--- /dev/null
+++ b/assets/js/acecf23e.92dddac5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1903],{1912:s=>{s.exports=JSON.parse('{"blogBasePath":"/blog","blogTitle":"Blog"}')}}]);
\ No newline at end of file
diff --git a/assets/js/b5b6e5e3.9d608202.js b/assets/js/b5b6e5e3.9d608202.js
new file mode 100644
index 0000000..40eb365
--- /dev/null
+++ b/assets/js/b5b6e5e3.9d608202.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7298],{6942:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>t,metadata:()=>l,toc:()=>a});var o=s(4848),i=s(8453);const t={},r="Location Types",l={id:"location-proof-protocol/location-types",title:"Location Types",description:"v0.1",source:"@site/docs/location-proof-protocol/location-types.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/location-types",permalink:"/docs/location-proof-protocol/location-types",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"EAS Schema",permalink:"/docs/location-proof-protocol/eas-schema"},next:{title:"Strategies + Recipes",permalink:"/docs/location-proof-protocol/strategies-recipes"}},c={},a=[{value:"v0.1",id:"v01",level:2},{value:"Future Categories of Location Types",id:"future-categories-of-location-types",level:3},{value:"Diverse Spatial Reference Systems",id:"diverse-spatial-reference-systems",level:3}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"location-types",children:"Location Types"}),"\n",(0,o.jsx)(n.h2,{id:"v01",children:"v0.1"}),"\n",(0,o.jsx)(n.p,{children:"To ensure location proofs are as versatile as possible, we are giving users / developers the option of creating proofs that adhere to any\nlocation type."}),"\n",(0,o.jsx)(n.p,{children:'This requires creating a standardized set of categories for "location types" that include various ways of representing locations such as\ndifferent coordinate systems, H3 strings, geohashes, and more. The purpose of this is to ensure interoperability and clarity in geospatial\ndata management, while still offering flexibility for different proof types.'}),"\n",(0,o.jsxs)(n.admonition,{title:"Alpha Locations",type:"tip",children:[(0,o.jsx)(n.p,{children:(0,o.jsxs)(n.strong,{children:["Initially, location proofs will use WGS84 decimal degree coordinates, ordered as ",(0,o.jsx)(n.code,{children:"[longitude, latitude]"}),"."]})}),(0,o.jsxs)(n.p,{children:["These coordinate pairs will be formatted as strings, converted to bytes for storage onchain. The working ",(0,o.jsx)(n.code,{children:"locationType"})," will be set to\n",(0,o.jsx)(n.code,{children:"DecimalDegrees"}),"."]})]}),"\n",(0,o.jsxs)(n.p,{children:["If you would like to develop proofs that use an alternative location encoding (like those listed below), reach out on\n",(0,o.jsx)(n.a,{href:"https://t.me/+UkTOSXnDcDM5ZTBk",children:"Telegram"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"future-categories-of-location-types",children:"Future Categories of Location Types"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Geographic Coordinates (Lat/Long)"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Decimal Degrees"}),": Standard longitude and latitude (e.g., ",(0,o.jsx)(n.code,{children:"[-122.4194, 37.7749]"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Degrees, Minutes, Seconds (DMS)"}),": Latitude and longitude in degrees, minutes, and seconds (e.g., ",(0,o.jsx)(n.code,{children:"37\xb046'30\" N, 122\xb025'10\" W"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Projected Coordinates"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Universal Transverse Mercator (UTM)"}),": Uses a series of zones for global coverage (e.g., ",(0,o.jsx)(n.code,{children:"10S 551000 4182000"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"State Plane Coordinate System (SPCS)"}),": Used in the United States (e.g., ",(0,o.jsx)(n.code,{children:"X: 2000000, Y: 500000"})," in a specific state plane zone)."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Geohashes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Geohash"}),": A hierarchical spatial data structure which subdivides space into buckets of grid shape (e.g., ",(0,o.jsx)(n.code,{children:"9q8yyz"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"H3 Hexagons"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"H3"}),": A hierarchical hexagonal grid system used for spatial indexing (e.g., ",(0,o.jsx)(n.code,{children:"85283473fffffff"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Plus Codes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Open Location Code (OLC)"}),": Developed by Google, it's a code that represents an area anywhere on Earth (e.g., ",(0,o.jsx)(n.code,{children:"7FG8V4VC+G7"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Grid References"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Military Grid Reference System (MGRS)"}),": Used by NATO militaries for locating points on the Earth (e.g., ",(0,o.jsx)(n.code,{children:"33TWN8382558454"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"British National Grid (OSGB)"}),": Used in Great Britain (e.g., ",(0,o.jsx)(n.code,{children:"TQ 298828"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Place Names / Addresses"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Postal Address"}),": Standard mailing address (e.g., ",(0,o.jsx)(n.code,{children:"1600 Amphitheatre Parkway, Mountain View, CA"}),")."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Named Locations"}),": Known place names (e.g., ",(0,o.jsx)(n.code,{children:"Eiffel Tower"}),")."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"What3Words References"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"W3W"}),": A geocoding system that encodes geographic coordinates into three dictionary words (e.g., ///filled.count.soap)."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Formal specification of the location types and how they are represented is in development, and will be documented here."}),"\n",(0,o.jsx)(n.h3,{id:"diverse-spatial-reference-systems",children:"Diverse Spatial Reference Systems"}),"\n",(0,o.jsx)(n.p,{children:"Location proofs may not always relate to Earth-based coordinates but could be relative to other objects or within different spatial\nreference systems, such as:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"Being with a person at a particular time"}),"\n",(0,o.jsx)(n.li,{children:"Location in a metaverse space"}),"\n",(0,o.jsx)(n.li,{children:"Presence in a vehicle or a specific room"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"Astral's Location Proof Protocol aims to support location proofs within a wide range of different spatial reference systems, both global and\nrelative. However, initial development of the protocol will focus on positioning objects / events on Earth."})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>l});var o=s(6540);const i={},t=o.createContext(i);function r(e){const n=o.useContext(t);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(t.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/bd6d0e35.413a63d4.js b/assets/js/bd6d0e35.413a63d4.js
new file mode 100644
index 0000000..b8bb7e4
--- /dev/null
+++ b/assets/js/bd6d0e35.413a63d4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1798],{6373:(t,o,e)=>{e.r(o),e.d(o,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>l});var n=e(4848),s=e(8453);const r={},i="Logbook",c={id:"spatial-registries/logbook",title:"Logbook",description:"",source:"@site/docs/spatial-registries/logbook.md",sourceDirName:"spatial-registries",slug:"/spatial-registries/logbook",permalink:"/docs/spatial-registries/logbook",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},a={},l=[];function u(t){const o={h1:"h1",...(0,s.R)(),...t.components};return(0,n.jsx)(o.h1,{id:"logbook",children:"Logbook"})}function p(t={}){const{wrapper:o}={...(0,s.R)(),...t.components};return o?(0,n.jsx)(o,{...t,children:(0,n.jsx)(u,{...t})}):u(t)}},8453:(t,o,e)=>{e.d(o,{R:()=>i,x:()=>c});var n=e(6540);const s={},r=n.createContext(s);function i(t){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof t?t(o):{...o,...t}}),[o,t])}function c(t){let o;return o=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),n.createElement(r.Provider,{value:o},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/c15d9823.a40c7001.js b/assets/js/c15d9823.a40c7001.js
new file mode 100644
index 0000000..d7824f5
--- /dev/null
+++ b/assets/js/c15d9823.a40c7001.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8146],{9328:e=>{e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/ccc49370.a9298228.js b/assets/js/ccc49370.a9298228.js
new file mode 100644
index 0000000..673e32c
--- /dev/null
+++ b/assets/js/ccc49370.a9298228.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3249],{3858:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});n(6540);var i=n(4164),a=n(1213),o=n(7559),r=n(7131),s=n(6535),l=n(4651),c=n(1312),d=n(9022),u=n(4848);function m(e){const{nextItem:t,prevItem:n}=e;return(0,u.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,c.T)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"}),children:[n&&(0,u.jsx)(d.A,{...n,subLabel:(0,u.jsx)(c.A,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post",children:"Newer Post"})}),t&&(0,u.jsx)(d.A,{...t,subLabel:(0,u.jsx)(c.A,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post",children:"Older Post"}),isNext:!0})]})}function g(){const{assets:e,metadata:t}=(0,r.e)(),{title:n,description:i,date:o,tags:s,authors:l,frontMatter:c}=t,{keywords:d}=c,m=e.image??c.image;return(0,u.jsxs)(a.be,{title:n,description:i,keywords:d,image:m,children:[(0,u.jsx)("meta",{property:"og:type",content:"article"}),(0,u.jsx)("meta",{property:"article:published_time",content:o}),l.some((e=>e.url))&&(0,u.jsx)("meta",{property:"article:author",content:l.map((e=>e.url)).filter(Boolean).join(",")}),s.length>0&&(0,u.jsx)("meta",{property:"article:tag",content:s.map((e=>e.label)).join(",")})]})}var h=n(5260),f=n(6676);function p(){const e=(0,f.J)();return(0,u.jsx)(h.A,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(e)})})}var v=n(7763),x=n(996);function b(e){let{sidebar:t,children:n}=e;const{metadata:i,toc:a}=(0,r.e)(),{nextItem:o,prevItem:c,frontMatter:d,unlisted:g}=i,{hide_table_of_contents:h,toc_min_heading_level:f,toc_max_heading_level:p}=d;return(0,u.jsxs)(s.A,{sidebar:t,toc:!h&&a.length>0?(0,u.jsx)(v.A,{toc:a,minHeadingLevel:f,maxHeadingLevel:p}):void 0,children:[g&&(0,u.jsx)(x.A,{}),(0,u.jsx)(l.A,{children:n}),(o||c)&&(0,u.jsx)(m,{nextItem:o,prevItem:c})]})}function j(e){const t=e.content;return(0,u.jsx)(r.i,{content:e.content,isBlogPostPage:!0,children:(0,u.jsxs)(a.e3,{className:(0,i.A)(o.G.wrapper.blogPages,o.G.page.blogPostPage),children:[(0,u.jsx)(g,{}),(0,u.jsx)(p,{}),(0,u.jsx)(b,{sidebar:e.sidebar,children:(0,u.jsx)(t,{})})]})})}},7763:(e,t,n)=>{n.d(t,{A:()=>c});n(6540);var i=n(4164),a=n(5195);const o={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var r=n(4848);const s="table-of-contents__link toc-highlight",l="table-of-contents__link--active";function c(e){let{className:t,...n}=e;return(0,r.jsx)("div",{className:(0,i.A)(o.tableOfContents,"thin-scrollbar",t),children:(0,r.jsx)(a.A,{...n,linkClassName:s,linkActiveClassName:l})})}},5195:(e,t,n)=>{n.d(t,{A:()=>f});var i=n(6540),a=n(6342);function o(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const i=n.slice(2,e.level);e.parentIndex=Math.max(...i),n[e.level]=t}));const i=[];return t.forEach((e=>{const{parentIndex:n,...a}=e;n>=0?t[n].children.push(a):i.push(a)})),i}function r(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:i}=e;return t.flatMap((e=>{const t=r({toc:e.children,minHeadingLevel:n,maxHeadingLevel:i});return function(e){return e.level>=n&&e.level<=i}(e)?[{...e,children:t}]:t}))}function s(e){const t=e.getBoundingClientRect();return t.top===t.bottom?s(e.parentNode):t}function l(e,t){let{anchorTopOffset:n}=t;const i=e.find((e=>s(e).top>=n));if(i){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,i.useRef)(void 0),n=c();(0,i.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:i,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:r}=e;function s(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(i),s=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const i=[];for(let a=t;a<=n;a+=1)i.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(i.join()))}({minHeadingLevel:o,maxHeadingLevel:r}),c=l(s,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(a),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",s),document.addEventListener("resize",s),s(),()=>{document.removeEventListener("scroll",s),document.removeEventListener("resize",s)}}),[e,n])}var u=n(8774),m=n(4848);function g(e){let{toc:t,className:n,linkClassName:i,isChild:a}=e;return t.length?(0,m.jsx)("ul",{className:a?void 0:n,children:t.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:i??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(g,{isChild:!0,toc:e.children,className:n,linkClassName:i})]},e.id)))}):null}const h=i.memo(g);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:s="table-of-contents__link",linkActiveClassName:l,minHeadingLevel:c,maxHeadingLevel:u,...g}=e;const f=(0,a.p)(),p=c??f.tableOfContents.minHeadingLevel,v=u??f.tableOfContents.maxHeadingLevel,x=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:a}=e;return(0,i.useMemo)((()=>r({toc:o(t),minHeadingLevel:n,maxHeadingLevel:a})),[t,n,a])}({toc:t,minHeadingLevel:p,maxHeadingLevel:v});return d((0,i.useMemo)((()=>{if(s&&l)return{linkClassName:s,linkActiveClassName:l,minHeadingLevel:p,maxHeadingLevel:v}}),[s,l,p,v])),(0,m.jsx)(h,{toc:x,className:n,linkClassName:s,...g})}},996:(e,t,n)=>{n.d(t,{A:()=>g});n(6540);var i=n(4164),a=n(1312),o=n(5260),r=n(4848);function s(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,r.jsx)(a.A,{id:"theme.unlistedContent.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,r.jsx)(o.A,{children:(0,r.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}var d=n(7559),u=n(7293);function m(e){let{className:t}=e;return(0,r.jsx)(u.A,{type:"caution",title:(0,r.jsx)(s,{}),className:(0,i.A)(t,d.G.common.unlistedBanner),children:(0,r.jsx)(l,{})})}function g(e){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(c,{}),(0,r.jsx)(m,{...e})]})}},6676:(e,t,n)=>{n.d(t,{k:()=>d,J:()=>u});var i=n(6025),a=n(4586),o=n(6803);var r=n(7131);const s=e=>new Date(e).toISOString();function l(e){const t=e.map(m);return{author:1===t.length?t[0]:t}}function c(e,t,n){return e?{image:g({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${n}`})}:{}}function d(e){const{siteConfig:t}=(0,a.A)(),{withBaseUrl:n}=(0,i.hH)(),{metadata:{blogDescription:o,blogTitle:r,permalink:d}}=e,u=`${t.url}${d}`;return{"@context":"https://schema.org","@type":"Blog","@id":u,mainEntityOfPage:u,headline:r,description:o,blogPost:e.items.map((e=>function(e,t,n){const{assets:i,frontMatter:a,metadata:o}=e,{date:r,title:d,description:u,lastUpdatedAt:m}=o,g=i.image??a.image,h=a.keywords??[],f=`${t.url}${o.permalink}`,p=m?s(m):void 0;return{"@type":"BlogPosting","@id":f,mainEntityOfPage:f,url:f,headline:d,name:d,description:u,datePublished:r,...p?{dateModified:p}:{},...l(o.authors),...c(g,n,d),...h?{keywords:h}:{}}}(e.content,t,n)))}}function u(){const e=function(){const e=(0,o.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}(),{assets:t,metadata:n}=(0,r.e)(),{siteConfig:d}=(0,a.A)(),{withBaseUrl:u}=(0,i.hH)(),{date:m,title:g,description:h,frontMatter:f,lastUpdatedAt:p}=n,v=t.image??f.image,x=f.keywords??[],b=p?s(p):void 0,j=`${d.url}${n.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":j,mainEntityOfPage:j,url:j,headline:g,name:g,description:h,datePublished:m,...b?{dateModified:b}:{},...l(n.authors),...c(v,u,g),...x?{keywords:x}:{},isPartOf:{"@type":"Blog","@id":`${d.url}${e.blogBasePath}`,name:e.blogTitle}}}function m(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function g(e){let{imageUrl:t,caption:n}=e;return{"@type":"ImageObject","@id":t,url:t,contentUrl:t,caption:n}}}}]);
\ No newline at end of file
diff --git a/assets/js/ce48dac6.c8131e26.js b/assets/js/ce48dac6.c8131e26.js
new file mode 100644
index 0000000..bc6efc5
--- /dev/null
+++ b/assets/js/ce48dac6.c8131e26.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[981],{9155:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>i,contentTitle:()=>a,default:()=>l,frontMatter:()=>s,metadata:()=>r,toc:()=>p});var o=t(4848),c=t(8453);const s={},a="Onchain geospatial",r={id:"core-concepts/onchain-geospatial",title:"Onchain geospatial",description:"",source:"@site/docs/core-concepts/onchain-geospatial.md",sourceDirName:"core-concepts",slug:"/core-concepts/onchain-geospatial",permalink:"/docs/core-concepts/onchain-geospatial",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},i={},p=[];function u(n){const e={h1:"h1",...(0,c.R)(),...n.components};return(0,o.jsx)(e.h1,{id:"onchain-geospatial",children:"Onchain geospatial"})}function l(n={}){const{wrapper:e}={...(0,c.R)(),...n.components};return e?(0,o.jsx)(e,{...n,children:(0,o.jsx)(u,{...n})}):u(n)}},8453:(n,e,t)=>{t.d(e,{R:()=>a,x:()=>r});var o=t(6540);const c={},s=o.createContext(c);function a(n){const e=o.useContext(s);return o.useMemo((function(){return"function"==typeof n?n(e):{...e,...n}}),[e,n])}function r(n){let e;return e=n.disableParentContext?"function"==typeof n.components?n.components(c):n.components||c:a(n.components),o.createElement(s.Provider,{value:e},n.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/d9f32620.2564a5e9.js b/assets/js/d9f32620.2564a5e9.js
new file mode 100644
index 0000000..f08b292
--- /dev/null
+++ b/assets/js/d9f32620.2564a5e9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5557],{7447:(e,o,s)=>{s.r(o),s.d(o,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>i});var n=s(4848),t=s(8453);const r={slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},l=void 0,a={permalink:"/blog/welcome",source:"@site/blog/2021-08-26-welcome/index.md",title:"Welcome",description:"Docusaurus blogging features are powered by the blog plugin.",date:"2021-08-26T00:00:00.000Z",tags:[{inline:!1,label:"Facebook",permalink:"/blog/tags/facebook",description:"Facebook tag description"},{inline:!1,label:"Hello",permalink:"/blog/tags/hello",description:"Hello tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.405,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"},{name:"Yangshun Tay",title:"Front End Engineer @ Facebook",url:"https://github.com/yangshun",imageURL:"https://github.com/yangshun.png",key:"yangshun"}],frontMatter:{slug:"welcome",title:"Welcome",authors:["slorber","yangshun"],tags:["facebook","hello","docusaurus"]},unlisted:!1,nextItem:{title:"MDX Blog Post",permalink:"/blog/mdx-blog-post"}},c={authorsImageUrls:[void 0,void 0]},i=[];function u(e){const o={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(o.p,{children:[(0,n.jsx)(o.a,{href:"https://docusaurus.io/docs/blog",children:"Docusaurus blogging features"})," are powered by the ",(0,n.jsx)(o.a,{href:"https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog",children:"blog plugin"}),"."]}),"\n",(0,n.jsxs)(o.p,{children:["Simply add Markdown files (or folders) to the ",(0,n.jsx)(o.code,{children:"blog"})," directory."]}),"\n",(0,n.jsxs)(o.p,{children:["Regular blog authors can be added to ",(0,n.jsx)(o.code,{children:"authors.yml"}),"."]}),"\n",(0,n.jsx)(o.p,{children:"The blog post date can be extracted from filenames, such as:"}),"\n",(0,n.jsxs)(o.ul,{children:["\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.code,{children:"2019-05-30-welcome.md"})}),"\n",(0,n.jsx)(o.li,{children:(0,n.jsx)(o.code,{children:"2019-05-30-welcome/index.md"})}),"\n"]}),"\n",(0,n.jsx)(o.p,{children:"A blog post folder can be convenient to co-locate blog post images:"}),"\n",(0,n.jsx)(o.p,{children:(0,n.jsx)(o.img,{alt:"Docusaurus Plushie",src:s(5917).A+"",width:"1500",height:"500"})}),"\n",(0,n.jsx)(o.p,{children:"The blog supports tags as well!"}),"\n",(0,n.jsxs)(o.p,{children:[(0,n.jsx)(o.strong,{children:"And if you don't want a blog"}),": just delete this directory, and use ",(0,n.jsx)(o.code,{children:"blog: false"})," in your Docusaurus config."]})]})}function d(e={}){const{wrapper:o}={...(0,t.R)(),...e.components};return o?(0,n.jsx)(o,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},5917:(e,o,s)=>{s.d(o,{A:()=>n});const n=s.p+"assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg"},8453:(e,o,s)=>{s.d(o,{R:()=>l,x:()=>a});var n=s(6540);const t={},r=n.createContext(t);function l(e){const o=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),n.createElement(r.Provider,{value:o},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/dff1c289.9333c787.js b/assets/js/dff1c289.9333c787.js
new file mode 100644
index 0000000..aa249a3
--- /dev/null
+++ b/assets/js/dff1c289.9333c787.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1724],{8043:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>d,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>a});var o=n(4848),r=n(8453);const i={sidebar_position:1},d="Manage Docs Versions",c={id:"tutorial-extras/manage-docs-versions",title:"Manage Docs Versions",description:"Docusaurus can manage multiple versions of your docs.",source:"@site/docs/tutorial-extras/manage-docs-versions.md",sourceDirName:"tutorial-extras",slug:"/tutorial-extras/manage-docs-versions",permalink:"/docs/tutorial-extras/manage-docs-versions",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1}},t={},a=[{value:"Create a docs version",id:"create-a-docs-version",level:2},{value:"Add a Version Dropdown",id:"add-a-version-dropdown",level:2},{value:"Update an existing version",id:"update-an-existing-version",level:2}];function l(e){const s={code:"code",h1:"h1",h2:"h2",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.h1,{id:"manage-docs-versions",children:"Manage Docs Versions"}),"\n",(0,o.jsx)(s.p,{children:"Docusaurus can manage multiple versions of your docs."}),"\n",(0,o.jsx)(s.h2,{id:"create-a-docs-version",children:"Create a docs version"}),"\n",(0,o.jsx)(s.p,{children:"Release a version 1.0 of your project:"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-bash",children:"npm run docusaurus docs:version 1.0\n"})}),"\n",(0,o.jsxs)(s.p,{children:["The ",(0,o.jsx)(s.code,{children:"docs"})," folder is copied into ",(0,o.jsx)(s.code,{children:"versioned_docs/version-1.0"})," and ",(0,o.jsx)(s.code,{children:"versions.json"})," is created."]}),"\n",(0,o.jsx)(s.p,{children:"Your docs now have 2 versions:"}),"\n",(0,o.jsxs)(s.ul,{children:["\n",(0,o.jsxs)(s.li,{children:[(0,o.jsx)(s.code,{children:"1.0"})," at ",(0,o.jsx)(s.code,{children:"http://localhost:3000/docs/"})," for the version 1.0 docs"]}),"\n",(0,o.jsxs)(s.li,{children:[(0,o.jsx)(s.code,{children:"current"})," at ",(0,o.jsx)(s.code,{children:"http://localhost:3000/docs/next/"})," for the ",(0,o.jsx)(s.strong,{children:"upcoming, unreleased docs"})]}),"\n"]}),"\n",(0,o.jsx)(s.h2,{id:"add-a-version-dropdown",children:"Add a Version Dropdown"}),"\n",(0,o.jsx)(s.p,{children:"To navigate seamlessly across versions, add a version dropdown."}),"\n",(0,o.jsxs)(s.p,{children:["Modify the ",(0,o.jsx)(s.code,{children:"docusaurus.config.js"})," file:"]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-js",metastring:'title="docusaurus.config.js"',children:"export default {\n themeConfig: {\n navbar: {\n items: [\n // highlight-start\n {\n type: 'docsVersionDropdown',\n },\n // highlight-end\n ],\n },\n },\n};\n"})}),"\n",(0,o.jsx)(s.p,{children:"The docs version dropdown appears in your navbar:"}),"\n",(0,o.jsx)(s.p,{children:(0,o.jsx)(s.img,{alt:"Docs Version Dropdown",src:n(9565).A+"",width:"370",height:"302"})}),"\n",(0,o.jsx)(s.h2,{id:"update-an-existing-version",children:"Update an existing version"}),"\n",(0,o.jsx)(s.p,{children:"It is possible to edit versioned docs in their respective folder:"}),"\n",(0,o.jsxs)(s.ul,{children:["\n",(0,o.jsxs)(s.li,{children:[(0,o.jsx)(s.code,{children:"versioned_docs/version-1.0/hello.md"})," updates ",(0,o.jsx)(s.code,{children:"http://localhost:3000/docs/hello"})]}),"\n",(0,o.jsxs)(s.li,{children:[(0,o.jsx)(s.code,{children:"docs/hello.md"})," updates ",(0,o.jsx)(s.code,{children:"http://localhost:3000/docs/next/hello"})]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},9565:(e,s,n)=>{n.d(s,{A:()=>o});const o=n.p+"assets/images/docsVersionDropdown-35e13cbe46c9923327f30a76a90bff3b.png"},8453:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>c});var o=n(6540);const r={},i=o.createContext(r);function d(e){const s=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),o.createElement(i.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/e273c56f.3d9c4200.js b/assets/js/e273c56f.3d9c4200.js
new file mode 100644
index 0000000..2befbb1
--- /dev/null
+++ b/assets/js/e273c56f.3d9c4200.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9328],{4014:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>a,contentTitle:()=>r,default:()=>m,frontMatter:()=>n,metadata:()=>u,toc:()=>l});var s=o(4848),i=o(8453);const n={slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},r=void 0,u={permalink:"/blog/first-blog-post",source:"@site/blog/2019-05-28-first-blog-post.md",title:"First Blog Post",description:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet",date:"2019-05-28T00:00:00.000Z",tags:[{inline:!1,label:"Hola",permalink:"/blog/tags/hola",description:"Hola tag description"},{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.12,hasTruncateMarker:!1,authors:[{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"}],frontMatter:{slug:"first-blog-post",title:"First Blog Post",authors:{name:"Gao Wei",title:"Docusaurus Core Team",url:"https://github.com/wgao19",image_url:"https://github.com/wgao19.png",imageURL:"https://github.com/wgao19.png"},tags:["hola","docusaurus"]},unlisted:!1,prevItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},a={authorsImageUrls:[void 0]},l=[];function c(t){const e={p:"p",...(0,i.R)(),...t.components};return(0,s.jsx)(e.p,{children:"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"})}function m(t={}){const{wrapper:e}={...(0,i.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(c,{...t})}):c(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>r,x:()=>u});var s=o(6540);const i={},n=s.createContext(i);function r(t){const e=s.useContext(n);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function u(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:r(t.components),s.createElement(n.Provider,{value:e},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/e44a2883.1dd47946.js b/assets/js/e44a2883.1dd47946.js
new file mode 100644
index 0000000..b0a5ef9
--- /dev/null
+++ b/assets/js/e44a2883.1dd47946.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4736],{8350:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>c});var r=t(4848),s=t(8453);const o={sidebar_position:2},a="Translate your site",i={id:"tutorial-extras/translate-your-site",title:"Translate your site",description:"Let's translate docs/intro.md to French.",source:"@site/docs/tutorial-extras/translate-your-site.md",sourceDirName:"tutorial-extras",slug:"/tutorial-extras/translate-your-site",permalink:"/docs/tutorial-extras/translate-your-site",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2}},l={},c=[{value:"Configure i18n",id:"configure-i18n",level:2},{value:"Translate a doc",id:"translate-a-doc",level:2},{value:"Start your localized site",id:"start-your-localized-site",level:2},{value:"Add a Locale Dropdown",id:"add-a-locale-dropdown",level:2},{value:"Build your localized site",id:"build-your-localized-site",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",img:"img",p:"p",pre:"pre",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"translate-your-site",children:"Translate your site"}),"\n",(0,r.jsxs)(n.p,{children:["Let's translate ",(0,r.jsx)(n.code,{children:"docs/intro.md"})," to French."]}),"\n",(0,r.jsx)(n.h2,{id:"configure-i18n",children:"Configure i18n"}),"\n",(0,r.jsxs)(n.p,{children:["Modify ",(0,r.jsx)(n.code,{children:"docusaurus.config.js"})," to add support for the ",(0,r.jsx)(n.code,{children:"fr"})," locale:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",metastring:'title="docusaurus.config.js"',children:"export default {\n i18n: {\n defaultLocale: 'en',\n locales: ['en', 'fr'],\n },\n};\n"})}),"\n",(0,r.jsx)(n.h2,{id:"translate-a-doc",children:"Translate a doc"}),"\n",(0,r.jsxs)(n.p,{children:["Copy the ",(0,r.jsx)(n.code,{children:"docs/intro.md"})," file to the ",(0,r.jsx)(n.code,{children:"i18n/fr"})," folder:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/\n\ncp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Translate ",(0,r.jsx)(n.code,{children:"i18n/fr/docusaurus-plugin-content-docs/current/intro.md"})," in French."]}),"\n",(0,r.jsx)(n.h2,{id:"start-your-localized-site",children:"Start your localized site"}),"\n",(0,r.jsx)(n.p,{children:"Start your site on the French locale:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npm run start -- --locale fr\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Your localized site is accessible at ",(0,r.jsx)(n.a,{href:"http://localhost:3000/fr/",children:"http://localhost:3000/fr/"})," and the ",(0,r.jsx)(n.code,{children:"Getting Started"})," page is translated."]}),"\n",(0,r.jsx)(n.admonition,{type:"caution",children:(0,r.jsx)(n.p,{children:"In development, you can only use one locale at a time."})}),"\n",(0,r.jsx)(n.h2,{id:"add-a-locale-dropdown",children:"Add a Locale Dropdown"}),"\n",(0,r.jsx)(n.p,{children:"To navigate seamlessly across languages, add a locale dropdown."}),"\n",(0,r.jsxs)(n.p,{children:["Modify the ",(0,r.jsx)(n.code,{children:"docusaurus.config.js"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",metastring:'title="docusaurus.config.js"',children:"export default {\n themeConfig: {\n navbar: {\n items: [\n // highlight-start\n {\n type: 'localeDropdown',\n },\n // highlight-end\n ],\n },\n },\n};\n"})}),"\n",(0,r.jsx)(n.p,{children:"The locale dropdown now appears in your navbar:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Locale Dropdown",src:t(5252).A+"",width:"370",height:"302"})}),"\n",(0,r.jsx)(n.h2,{id:"build-your-localized-site",children:"Build your localized site"}),"\n",(0,r.jsx)(n.p,{children:"Build your site for a specific locale:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npm run build -- --locale fr\n"})}),"\n",(0,r.jsx)(n.p,{children:"Or build your site to include all the locales at once:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-bash",children:"npm run build\n"})})]})}function u(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},5252:(e,n,t)=>{t.d(n,{A:()=>r});const r=t.p+"assets/images/localeDropdown-f0d995e751e7656a1b0dbbc1134e49c2.png"},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>i});var r=t(6540);const s={},o=r.createContext(s);function a(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/e5aefb32.33ae4d86.js b/assets/js/e5aefb32.33ae4d86.js
new file mode 100644
index 0000000..f54292a
--- /dev/null
+++ b/assets/js/e5aefb32.33ae4d86.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3276],{8539:a=>{a.exports=JSON.parse('{"tag":{"label":"Facebook","permalink":"/blog/tags/facebook","description":"Facebook tag description","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/facebook","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/f0e24734.b195996c.js b/assets/js/f0e24734.b195996c.js
new file mode 100644
index 0000000..e04b7a2
--- /dev/null
+++ b/assets/js/f0e24734.b195996c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1450],{96:(o,e,t)=>{t.r(e),t.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>l});var n=t(4848),r=t(8453);const i={},a="Rationale",s={id:"location-proof-protocol/rationale",title:"Rationale",description:"We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and",source:"@site/docs/location-proof-protocol/rationale.md",sourceDirName:"location-proof-protocol",slug:"/location-proof-protocol/rationale",permalink:"/docs/location-proof-protocol/rationale",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{},sidebar:"docs",previous:{title:"Introduction",permalink:"/docs/location-proof-protocol/introduction"},next:{title:"Architecture",permalink:"/docs/location-proof-protocol/architecture"}},c={},l=[];function d(o){const e={h1:"h1",li:"li",p:"p",ul:"ul",...(0,r.R)(),...o.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"rationale",children:"Rationale"}),"\n",(0,n.jsx)(e.p,{children:"We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and\nverifying location proofs."}),"\n",(0,n.jsxs)(e.ul,{children:["\n",(0,n.jsx)(e.li,{children:"Locations can be represented in a range of ways, within a range of different spatial reference systems"}),"\n",(0,n.jsx)(e.li,{children:"There are many different possible strategies for proving location in trust-minimized environments \u2014 different use cases will require\ndifferent levels of precision, confidence, cost, privacy etc"}),"\n",(0,n.jsx)(e.li,{children:"Users will want to attach all sorts of different media to proofs, from photos and videos to LIDAR scans to URLs"}),"\n"]}),"\n",(0,n.jsx)(e.p,{children:"Our design is intended to flexibly serve all of these use cases, while provided a common format to talk about verifiable location on the\ndecentralized web. By converging on this standard we hope location proofs will be composable and interoperable."})]})}function p(o={}){const{wrapper:e}={...(0,r.R)(),...o.components};return e?(0,n.jsx)(e,{...o,children:(0,n.jsx)(d,{...o})}):d(o)}},8453:(o,e,t)=>{t.d(e,{R:()=>a,x:()=>s});var n=t(6540);const r={},i=n.createContext(r);function a(o){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof o?o(e):{...e,...o}}),[e,o])}function s(o){let e;return e=o.disableParentContext?"function"==typeof o.components?o.components(r):o.components||r:a(o.components),n.createElement(i.Provider,{value:e},o.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f4f34a3a.b47754e9.js b/assets/js/f4f34a3a.b47754e9.js
new file mode 100644
index 0000000..f35bd3c
--- /dev/null
+++ b/assets/js/f4f34a3a.b47754e9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3637],{5512:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>u});var s=o(4848),n=o(8453);const r={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,c={permalink:"/blog/mdx-blog-post",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",tags:[{inline:!1,label:"Docusaurus",permalink:"/blog/tags/docusaurus",description:"Docusaurus tag description"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0]},u=[];function i(t){const e={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,n.R)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:["Blog posts support ",(0,s.jsx)(e.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(e.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(e.admonition,{type:"tip",children:[(0,s.jsx)(e.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-js",children:" alert('button clicked!')}>Click me! \n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(t={}){const{wrapper:e}={...(0,n.R)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(i,{...t})}):i(t)}},8453:(t,e,o)=>{o.d(e,{R:()=>a,x:()=>c});var s=o(6540);const n={},r=s.createContext(n);function a(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:a(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f55d3e7a.88d09a56.js b/assets/js/f55d3e7a.88d09a56.js
new file mode 100644
index 0000000..3c2eb42
--- /dev/null
+++ b/assets/js/f55d3e7a.88d09a56.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8863],{745:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>n,metadata:()=>l,toc:()=>d});var r=t(4848),o=t(8453);const n={sidebar_position:5},i="Deploy your site",l={id:"tutorial-basics/deploy-your-site",title:"Deploy your site",description:"Docusaurus is a static-site-generator (also called Jamstack).",source:"@site/docs/tutorial-basics/deploy-your-site.md",sourceDirName:"tutorial-basics",slug:"/tutorial-basics/deploy-your-site",permalink:"/docs/tutorial-basics/deploy-your-site",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5}},c={},d=[{value:"Build your site",id:"build-your-site",level:2},{value:"Deploy your site",id:"deploy-your-site-1",level:2}];function a(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",strong:"strong",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.h1,{id:"deploy-your-site",children:"Deploy your site"}),"\n",(0,r.jsxs)(s.p,{children:["Docusaurus is a ",(0,r.jsx)(s.strong,{children:"static-site-generator"})," (also called ",(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"https://jamstack.org/",children:"Jamstack"})}),")."]}),"\n",(0,r.jsxs)(s.p,{children:["It builds your site as simple ",(0,r.jsx)(s.strong,{children:"static HTML, JavaScript and CSS files"}),"."]}),"\n",(0,r.jsx)(s.h2,{id:"build-your-site",children:"Build your site"}),"\n",(0,r.jsxs)(s.p,{children:["Build your site ",(0,r.jsx)(s.strong,{children:"for production"}),":"]}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-bash",children:"npm run build\n"})}),"\n",(0,r.jsxs)(s.p,{children:["The static files are generated in the ",(0,r.jsx)(s.code,{children:"build"})," folder."]}),"\n",(0,r.jsx)(s.h2,{id:"deploy-your-site-1",children:"Deploy your site"}),"\n",(0,r.jsx)(s.p,{children:"Test your production build locally:"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-bash",children:"npm run serve\n"})}),"\n",(0,r.jsxs)(s.p,{children:["The ",(0,r.jsx)(s.code,{children:"build"})," folder is now served at ",(0,r.jsx)(s.a,{href:"http://localhost:3000/",children:"http://localhost:3000/"}),"."]}),"\n",(0,r.jsxs)(s.p,{children:["You can now deploy the ",(0,r.jsx)(s.code,{children:"build"})," folder ",(0,r.jsx)(s.strong,{children:"almost anywhere"})," easily, ",(0,r.jsx)(s.strong,{children:"for free"})," or very small cost (read the ",(0,r.jsx)(s.strong,{children:(0,r.jsx)(s.a,{href:"https://docusaurus.io/docs/deployment",children:"Deployment Guide"})}),")."]})]})}function u(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},8453:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>l});var r=t(6540);const o={},n=r.createContext(o);function i(e){const s=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(n.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/f81c1134.e9ba17ee.js b/assets/js/f81c1134.e9ba17ee.js
new file mode 100644
index 0000000..f8fd947
--- /dev/null
+++ b/assets/js/f81c1134.e9ba17ee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8130],{7735:e=>{e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"welcome","metadata":{"permalink":"/blog/welcome","source":"@site/blog/2021-08-26-welcome/index.md","title":"Welcome","description":"Docusaurus blogging features are powered by the blog plugin.","date":"2021-08-26T00:00:00.000Z","tags":[{"inline":false,"label":"Facebook","permalink":"/blog/tags/facebook","description":"Facebook tag description"},{"inline":false,"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description"},{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":0.405,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"},{"name":"Yangshun Tay","title":"Front End Engineer @ Facebook","url":"https://github.com/yangshun","imageURL":"https://github.com/yangshun.png","key":"yangshun"}],"frontMatter":{"slug":"welcome","title":"Welcome","authors":["slorber","yangshun"],"tags":["facebook","hello","docusaurus"]},"unlisted":false,"nextItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"}},"content":"[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog).\\n\\nSimply add Markdown files (or folders) to the `blog` directory.\\n\\nRegular blog authors can be added to `authors.yml`.\\n\\nThe blog post date can be extracted from filenames, such as:\\n\\n- `2019-05-30-welcome.md`\\n- `2019-05-30-welcome/index.md`\\n\\nA blog post folder can be convenient to co-locate blog post images:\\n\\n![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg)\\n\\nThe blog supports tags as well!\\n\\n**And if you don\'t want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config."},{"id":"mdx-blog-post","metadata":{"permalink":"/blog/mdx-blog-post","source":"@site/blog/2021-08-01-mdx-blog-post.mdx","title":"MDX Blog Post","description":"Blog posts support Docusaurus Markdown features, such as MDX.","date":"2021-08-01T00:00:00.000Z","tags":[{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":0.175,"hasTruncateMarker":false,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer","url":"https://sebastienlorber.com","imageURL":"https://github.com/slorber.png","key":"slorber"}],"frontMatter":{"slug":"mdx-blog-post","title":"MDX Blog Post","authors":["slorber"],"tags":["docusaurus"]},"unlisted":false,"prevItem":{"title":"Welcome","permalink":"/blog/welcome"},"nextItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/).\\n\\n:::tip\\n\\nUse the power of React to create interactive blog posts.\\n\\n```js\\n alert(\'button clicked!\')}>Click me! \\n```\\n\\n alert(\'button clicked!\')}>Click me! \\n\\n:::"},{"id":"long-blog-post","metadata":{"permalink":"/blog/long-blog-post","source":"@site/blog/2019-05-29-long-blog-post.md","title":"Long Blog Post","description":"This is the summary of a very long blog post,","date":"2019-05-29T00:00:00.000Z","tags":[{"inline":false,"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description"},{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":2.05,"hasTruncateMarker":true,"authors":[{"name":"Endilie Yacop Sucipto","title":"Maintainer of Docusaurus","url":"https://github.com/endiliey","imageURL":"https://github.com/endiliey.png","key":"endi"}],"frontMatter":{"slug":"long-blog-post","title":"Long Blog Post","authors":"endi","tags":["hello","docusaurus"]},"unlisted":false,"prevItem":{"title":"MDX Blog Post","permalink":"/blog/mdx-blog-post"},"nextItem":{"title":"First Blog Post","permalink":"/blog/first-blog-post"}},"content":"This is the summary of a very long blog post,\\n\\nUse a `\x3c!--` `truncate` `--\x3e` comment to limit blog post size in the list view.\\n\\n\x3c!--truncate--\x3e\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"},{"id":"first-blog-post","metadata":{"permalink":"/blog/first-blog-post","source":"@site/blog/2019-05-28-first-blog-post.md","title":"First Blog Post","description":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet","date":"2019-05-28T00:00:00.000Z","tags":[{"inline":false,"label":"Hola","permalink":"/blog/tags/hola","description":"Hola tag description"},{"inline":false,"label":"Docusaurus","permalink":"/blog/tags/docusaurus","description":"Docusaurus tag description"}],"readingTime":0.12,"hasTruncateMarker":false,"authors":[{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"}],"frontMatter":{"slug":"first-blog-post","title":"First Blog Post","authors":{"name":"Gao Wei","title":"Docusaurus Core Team","url":"https://github.com/wgao19","image_url":"https://github.com/wgao19.png","imageURL":"https://github.com/wgao19.png"},"tags":["hola","docusaurus"]},"unlisted":false,"prevItem":{"title":"Long Blog Post","permalink":"/blog/long-blog-post"}},"content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet"}]}}')}}]);
\ No newline at end of file
diff --git a/assets/js/f82cd581.c160cd7f.js b/assets/js/f82cd581.c160cd7f.js
new file mode 100644
index 0000000..3262f27
--- /dev/null
+++ b/assets/js/f82cd581.c160cd7f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4584],{4035:l=>{l.exports=JSON.parse('{"tag":{"label":"Hello","permalink":"/blog/tags/hello","description":"Hello tag description","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/hello","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/fa823849.72126d87.js b/assets/js/fa823849.72126d87.js
new file mode 100644
index 0000000..5589ebc
--- /dev/null
+++ b/assets/js/fa823849.72126d87.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9002],{6368:(o,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>f,frontMatter:()=>r,metadata:()=>i,toc:()=>p});var e=n(4848),c=n(8453);const r={},s="Location proofs",i={id:"core-concepts/location-proofs",title:"Location proofs",description:"",source:"@site/docs/core-concepts/location-proofs.md",sourceDirName:"core-concepts",slug:"/core-concepts/location-proofs",permalink:"/docs/core-concepts/location-proofs",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{}},a={},p=[];function u(o){const t={h1:"h1",...(0,c.R)(),...o.components};return(0,e.jsx)(t.h1,{id:"location-proofs",children:"Location proofs"})}function f(o={}){const{wrapper:t}={...(0,c.R)(),...o.components};return t?(0,e.jsx)(t,{...o,children:(0,e.jsx)(u,{...o})}):u(o)}},8453:(o,t,n)=>{n.d(t,{R:()=>s,x:()=>i});var e=n(6540);const c={},r=e.createContext(c);function s(o){const t=e.useContext(r);return e.useMemo((function(){return"function"==typeof o?o(t):{...t,...o}}),[t,o])}function i(o){let t;return t=o.disableParentContext?"function"==typeof o.components?o.components(c):o.components||c:s(o.components),e.createElement(r.Provider,{value:t},o.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/main.2164645d.js b/assets/js/main.2164645d.js
new file mode 100644
index 0000000..e5887bc
--- /dev/null
+++ b/assets/js/main.2164645d.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.2164645d.js.LICENSE.txt */
+(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8792],{8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(6540);var r=n(3259),o=n.n(r),a=n(4054);const i={"003da42b":[()=>n.e(637).then(n.bind(n,6229)),"@site/docs/location-proof-protocol/introduction.md",6229],"0058b4c6":[()=>n.e(849).then(n.t.bind(n,6164,19)),"@generated/docusaurus-plugin-content-docs/default/p/docs-175.json",6164],"00fb3d82":[()=>n.e(4192).then(n.bind(n,6466)),"@site/docs/developer-resources/spatial-registries.md",6466],"01a85c17":[()=>Promise.all([n.e(1869),n.e(8209)]).then(n.bind(n,9158)),"@theme/BlogTagsListPage",9158],"09d5ad39":[()=>n.e(1864).then(n.bind(n,1498)),"@site/docs/examples.md",1498],"0e384e19":[()=>n.e(3976).then(n.bind(n,619)),"@site/docs/intro.md",619],17896441:[()=>Promise.all([n.e(1869),n.e(1538),n.e(8401)]).then(n.bind(n,2447)),"@theme/DocItem",2447],"18c41134":[()=>n.e(9262).then(n.bind(n,3849)),"@site/docs/tutorial-basics/markdown-features.mdx",3849],"1b6ec5d4":[()=>n.e(4365).then(n.bind(n,7850)),"@site/docs/location-proof-protocol/architecture.md",7850],"1df93b7f":[()=>Promise.all([n.e(1869),n.e(4583)]).then(n.bind(n,5579)),"@site/src/pages/index.tsx",5579],"1e4232ab":[()=>n.e(1953).then(n.bind(n,3976)),"@site/docs/tutorial-basics/create-a-document.md",3976],"1f391b9e":[()=>Promise.all([n.e(1869),n.e(1538),n.e(6061)]).then(n.bind(n,7973)),"@theme/MDXPage",7973],"207666d2":[()=>n.e(2148).then(n.bind(n,7025)),"@site/docs/location-proof-protocol/media-types.md",7025],"2c1b52bf":[()=>n.e(2382).then(n.bind(n,320)),"@site/docs/location-proof-protocol/eas-schema.md",320],"3217192f":[()=>n.e(8462).then(n.t.bind(n,8174,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-docusaurus-f20.json",8174],"35131ec2":[()=>n.e(3666).then(n.bind(n,3161)),"@site/docs/spatial-registries/spatial-sol.md",3161],"36994c47":[()=>n.e(9858).then(n.t.bind(n,5516,19)),"@generated/docusaurus-plugin-content-blog/default/__plugin.json",5516],"393be207":[()=>n.e(4134).then(n.bind(n,633)),"@site/src/pages/markdown-page.md",633],"3a2db09e":[()=>n.e(8121).then(n.t.bind(n,8070,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-df9.json",8070],"4e345e3b":[()=>n.e(7174).then(n.bind(n,9955)),"@site/docs/introducing-astral.md",9955],"533a09ca":[()=>n.e(3098).then(n.bind(n,4700)),"@site/docs/tutorial-basics/create-a-blog-post.md",4700],"584535cc":[()=>n.e(8623).then(n.bind(n,6778)),"@site/docs/location-proof-protocol/strategies-recipes.md",6778],59362658:[()=>n.e(9325).then(n.bind(n,1180)),"@site/blog/2021-08-01-mdx-blog-post.mdx",1180],"5c868d36":[()=>n.e(1974).then(n.bind(n,5254)),"@site/docs/tutorial-basics/create-a-page.md",5254],"5e90a9b3":[()=>n.e(8025).then(n.t.bind(n,7134,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-hola-73f.json",7134],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"6875c492":[()=>Promise.all([n.e(1869),n.e(1538),n.e(3242),n.e(4813)]).then(n.bind(n,3069)),"@theme/BlogTagsPostsPage",3069],"6edd94a7":[()=>n.e(9103).then(n.bind(n,9731)),"@site/docs/developer-resources/quickstart.md",9731],"73664a40":[()=>n.e(1972).then(n.bind(n,9581)),"@site/blog/2019-05-29-long-blog-post.md",9581],"7661071f":[()=>n.e(8737).then(n.bind(n,4137)),"@site/blog/2021-08-26-welcome/index.md?truncated=true",4137],"7ae2cc57":[()=>n.e(3764).then(n.bind(n,1762)),"@site/docs/core-concepts/what-is-spatial-data.md",1762],"814f3328":[()=>n.e(7472).then(n.t.bind(n,5513,19)),"~blog/default/blog-post-list-prop-default.json",5513],"822bd8ab":[()=>n.e(2748).then(n.bind(n,8611)),"@site/docs/tutorial-basics/congratulations.md",8611],"8717b14a":[()=>n.e(3694).then(n.bind(n,1615)),"@site/blog/2019-05-29-long-blog-post.md?truncated=true",1615],"9176b25c":[()=>n.e(3874).then(n.bind(n,5453)),"@site/docs/developer-resources/location-attestations.md",5453],"925b3f96":[()=>n.e(8609).then(n.bind(n,5026)),"@site/blog/2019-05-28-first-blog-post.md?truncated=true",5026],"9dfd250b":[()=>n.e(2887).then(n.bind(n,1853)),"@site/docs/hello.md",1853],"9e4087bc":[()=>n.e(2711).then(n.bind(n,9331)),"@theme/BlogArchivePage",9331],a6aa9e1f:[()=>Promise.all([n.e(1869),n.e(1538),n.e(3242),n.e(7643)]).then(n.bind(n,5124)),"@theme/BlogListPage",5124],a7456010:[()=>n.e(1235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,4532)),"@theme/DocVersionRoot",4532],a8f61235:[()=>n.e(9269).then(n.bind(n,9755)),"@site/docs/core-concepts/decentralized-spatial-data.md",9755],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,2559)),"@theme/DocRoot",2559],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],acecf23e:[()=>n.e(1903).then(n.t.bind(n,1912,19)),"~blog/default/blogMetadata-default.json",1912],b5b6e5e3:[()=>n.e(7298).then(n.bind(n,6942)),"@site/docs/location-proof-protocol/location-types.md",6942],bd6d0e35:[()=>n.e(1798).then(n.bind(n,6373)),"@site/docs/spatial-registries/logbook.md",6373],c15d9823:[()=>n.e(8146).then(n.t.bind(n,9328,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-bd9.json",9328],ccc49370:[()=>Promise.all([n.e(1869),n.e(1538),n.e(3242),n.e(3249)]).then(n.bind(n,3858)),"@theme/BlogPostPage",3858],ce48dac6:[()=>n.e(981).then(n.bind(n,9155)),"@site/docs/core-concepts/onchain-geospatial.md",9155],d9f32620:[()=>n.e(5557).then(n.bind(n,7447)),"@site/blog/2021-08-26-welcome/index.md",7447],dff1c289:[()=>n.e(1724).then(n.bind(n,8043)),"@site/docs/tutorial-extras/manage-docs-versions.md",8043],e273c56f:[()=>n.e(9328).then(n.bind(n,4014)),"@site/blog/2019-05-28-first-blog-post.md",4014],e44a2883:[()=>n.e(4736).then(n.bind(n,8350)),"@site/docs/tutorial-extras/translate-your-site.md",8350],e5aefb32:[()=>n.e(3276).then(n.t.bind(n,8539,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-facebook-f47.json",8539],f0e24734:[()=>n.e(1450).then(n.bind(n,96)),"@site/docs/location-proof-protocol/rationale.md",96],f4f34a3a:[()=>n.e(3637).then(n.bind(n,5512)),"@site/blog/2021-08-01-mdx-blog-post.mdx?truncated=true",5512],f55d3e7a:[()=>n.e(8863).then(n.bind(n,745)),"@site/docs/tutorial-basics/deploy-your-site.md",745],f81c1134:[()=>n.e(8130).then(n.t.bind(n,7735,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-archive-f05.json",7735],f82cd581:[()=>n.e(4584).then(n.t.bind(n,4035,19)),"@generated/docusaurus-plugin-content-blog/default/p/blog-tags-hello-f96.json",4035],fa823849:[()=>n.e(9002).then(n.bind(n,6368)),"@site/docs/core-concepts/location-proofs.md",6368]};var l=n(4848);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(6921),u=n(3102);function d(e,t){if("*"===e)return o()({loading:s,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],m=(0,c.A)(r);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:s,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;delete o.__context;const s=o.__props;return delete o.__props,(0,l.jsx)(u.W,{value:i,children:(0,l.jsx)(a,{...o,...s,...n})})}})}const p=[{path:"/blog",component:d("/blog","b2f"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","182"),exact:!0},{path:"/blog/first-blog-post",component:d("/blog/first-blog-post","89a"),exact:!0},{path:"/blog/long-blog-post",component:d("/blog/long-blog-post","9ad"),exact:!0},{path:"/blog/mdx-blog-post",component:d("/blog/mdx-blog-post","e9f"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","287"),exact:!0},{path:"/blog/tags/docusaurus",component:d("/blog/tags/docusaurus","704"),exact:!0},{path:"/blog/tags/facebook",component:d("/blog/tags/facebook","858"),exact:!0},{path:"/blog/tags/hello",component:d("/blog/tags/hello","299"),exact:!0},{path:"/blog/tags/hola",component:d("/blog/tags/hola","00d"),exact:!0},{path:"/blog/welcome",component:d("/blog/welcome","d2b"),exact:!0},{path:"/markdown-page",component:d("/markdown-page","3d7"),exact:!0},{path:"/docs",component:d("/docs","536"),routes:[{path:"/docs",component:d("/docs","cb5"),routes:[{path:"/docs",component:d("/docs","205"),routes:[{path:"/docs/core-concepts/decentralized-spatial-data",component:d("/docs/core-concepts/decentralized-spatial-data","0ea"),exact:!0},{path:"/docs/core-concepts/location-proofs",component:d("/docs/core-concepts/location-proofs","ed4"),exact:!0},{path:"/docs/core-concepts/onchain-geospatial",component:d("/docs/core-concepts/onchain-geospatial","9ba"),exact:!0},{path:"/docs/core-concepts/what-is-spatial-data",component:d("/docs/core-concepts/what-is-spatial-data","b74"),exact:!0},{path:"/docs/developer-resources/location-attestations",component:d("/docs/developer-resources/location-attestations","964"),exact:!0},{path:"/docs/developer-resources/quickstart",component:d("/docs/developer-resources/quickstart","a05"),exact:!0},{path:"/docs/developer-resources/spatial-registries",component:d("/docs/developer-resources/spatial-registries","145"),exact:!0},{path:"/docs/examples",component:d("/docs/examples","4b9"),exact:!0},{path:"/docs/hello",component:d("/docs/hello","7ae"),exact:!0},{path:"/docs/intro",component:d("/docs/intro","853"),exact:!0},{path:"/docs/introducing-astral",component:d("/docs/introducing-astral","2e2"),exact:!0},{path:"/docs/location-proof-protocol/architecture",component:d("/docs/location-proof-protocol/architecture","f1f"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/eas-schema",component:d("/docs/location-proof-protocol/eas-schema","841"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/introduction",component:d("/docs/location-proof-protocol/introduction","2a1"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/location-types",component:d("/docs/location-proof-protocol/location-types","46b"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/media-types",component:d("/docs/location-proof-protocol/media-types","ae6"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/rationale",component:d("/docs/location-proof-protocol/rationale","790"),exact:!0,sidebar:"docs"},{path:"/docs/location-proof-protocol/strategies-recipes",component:d("/docs/location-proof-protocol/strategies-recipes","187"),exact:!0,sidebar:"docs"},{path:"/docs/spatial-registries/logbook",component:d("/docs/spatial-registries/logbook","de3"),exact:!0},{path:"/docs/spatial-registries/spatial-sol",component:d("/docs/spatial-registries/spatial-sol","4b0"),exact:!0},{path:"/docs/tutorial-basics/congratulations",component:d("/docs/tutorial-basics/congratulations","70e"),exact:!0},{path:"/docs/tutorial-basics/create-a-blog-post",component:d("/docs/tutorial-basics/create-a-blog-post","315"),exact:!0},{path:"/docs/tutorial-basics/create-a-document",component:d("/docs/tutorial-basics/create-a-document","f86"),exact:!0},{path:"/docs/tutorial-basics/create-a-page",component:d("/docs/tutorial-basics/create-a-page","9f6"),exact:!0},{path:"/docs/tutorial-basics/deploy-your-site",component:d("/docs/tutorial-basics/deploy-your-site","b91"),exact:!0},{path:"/docs/tutorial-basics/markdown-features",component:d("/docs/tutorial-basics/markdown-features","272"),exact:!0},{path:"/docs/tutorial-extras/manage-docs-versions",component:d("/docs/tutorial-extras/manage-docs-versions","a34"),exact:!0},{path:"/docs/tutorial-extras/translate-your-site",component:d("/docs/tutorial-extras/translate-your-site","739"),exact:!0}]}]}]},{path:"/",component:d("/","e5f"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>i});var r=n(6540),o=n(4848);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},8536:(e,t,n)=>{"use strict";var r=n(6540),o=n(5338),a=n(545),i=n(4625),l=n(4784),s=n(8193);const c=[n(119),n(6134),n(6294),n(1043)];var u=n(8328),d=n(6347),p=n(2831),f=n(4848);function m(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var g=n(5260),h=n(4586),y=n(6025),b=n(6342),v=n(1213),w=n(2131),k=n(4090),x=n(2967),S=n(440),E=n(1463);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,h.A)(),r=(0,w.o)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,f.jsxs)(g.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.A)(),{pathname:r}=(0,d.zy)();return e+(0,S.applyTrailingSlash)((0,y.Ay)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:o}),(0,f.jsx)("link",{rel:"canonical",href:o})]})}function A(){const{i18n:{currentLocale:e}}=(0,h.A)(),{metadata:t,image:n}=(0,b.p)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(g.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:k.w})]}),n&&(0,f.jsx)(v.be,{image:n}),(0,f.jsx)(C,{}),(0,f.jsx)(_,{}),(0,f.jsx)(E.A,{tag:x.Cy,locale:e}),(0,f.jsx)(g.A,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const T=new Map;var j=n(6125),N=n(6988),L=n(205);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const R=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,L.A)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,p.u)(u.A,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.A.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(R,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(d.qh,{location:t,render:()=>e})})}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${M}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n\n
Your Docusaurus site did not load properly.
\n
A very common reason is a wrong site baseUrl configuration .
\n
Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}
\n
We suggest trying baseUrl =
\n
\n`}(e)).replace(/{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}((0,d.zy)());return(0,f.jsx)(I,{location:e,children:W})}function K(){return(0,f.jsx)(H.A,{children:(0,f.jsx)(N.l,{children:(0,f.jsxs)(j.x,{children:[(0,f.jsxs)(m,{children:[(0,f.jsx)(q,{}),(0,f.jsx)(A,{}),(0,f.jsx)(U,{}),(0,f.jsx)(Q,{})]}),(0,f.jsx)(V,{})]})})})}var Y=n(4054);const Z=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var X=n(6921);const J=new Set,ee=new Set,te=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ne={prefetch:e=>{if(!(e=>!te()&&!ee.has(e)&&!J.has(e))(e))return!1;J.add(e);const t=(0,p.u)(u.A,e).flatMap((e=>{return t=e.route.path,Object.entries(Y).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,X.A)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Z(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!te()&&!ee.has(e))(e)&&(ee.add(e),O(e))},re=Object.freeze(ne);function oe(e){let{children:t}=e;return"hash"===l.default.future.experimental_router?(0,f.jsx)(i.I9,{children:t}):(0,f.jsx)(i.Kd,{children:t})}const ae=Boolean(!0);if(s.A.canUseDOM){window.docusaurus=re;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(a.vd,{children:(0,f.jsx)(oe,{children:(0,f.jsx)(K,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},i=()=>{if(window.docusaurusRoot)window.docusaurusRoot.render(t);else if(ae)window.docusaurusRoot=o.hydrateRoot(e,t,{onRecoverableError:n});else{const r=o.createRoot(e,{onRecoverableError:n});r.render(t),window.docusaurusRoot=r}};O(window.location.pathname).then((()=>{(0,r.startTransition)(i)}))}},6988:(e,t,n)=>{"use strict";n.d(t,{o:()=>d,l:()=>p});var r=n(6540),o=n(4784);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"location-proof-protocol/introduction","docs":[{"id":"core-concepts/decentralized-spatial-data","path":"/docs/core-concepts/decentralized-spatial-data"},{"id":"core-concepts/location-proofs","path":"/docs/core-concepts/location-proofs"},{"id":"core-concepts/onchain-geospatial","path":"/docs/core-concepts/onchain-geospatial"},{"id":"core-concepts/what-is-spatial-data","path":"/docs/core-concepts/what-is-spatial-data"},{"id":"developer-resources/location-attestations","path":"/docs/developer-resources/location-attestations"},{"id":"developer-resources/quickstart","path":"/docs/developer-resources/quickstart"},{"id":"developer-resources/spatial-registries","path":"/docs/developer-resources/spatial-registries"},{"id":"examples","path":"/docs/examples"},{"id":"hello","path":"/docs/hello"},{"id":"intro","path":"/docs/intro"},{"id":"introducing-astral","path":"/docs/introducing-astral"},{"id":"location-proof-protocol/architecture","path":"/docs/location-proof-protocol/architecture","sidebar":"docs"},{"id":"location-proof-protocol/eas-schema","path":"/docs/location-proof-protocol/eas-schema","sidebar":"docs"},{"id":"location-proof-protocol/introduction","path":"/docs/location-proof-protocol/introduction","sidebar":"docs"},{"id":"location-proof-protocol/location-types","path":"/docs/location-proof-protocol/location-types","sidebar":"docs"},{"id":"location-proof-protocol/media-types","path":"/docs/location-proof-protocol/media-types","sidebar":"docs"},{"id":"location-proof-protocol/rationale","path":"/docs/location-proof-protocol/rationale","sidebar":"docs"},{"id":"location-proof-protocol/strategies-recipes","path":"/docs/location-proof-protocol/strategies-recipes","sidebar":"docs"},{"id":"spatial-registries/logbook","path":"/docs/spatial-registries/logbook"},{"id":"spatial-registries/spatial-sol","path":"/docs/spatial-registries/spatial-sol"},{"id":"tutorial-basics/congratulations","path":"/docs/tutorial-basics/congratulations"},{"id":"tutorial-basics/create-a-blog-post","path":"/docs/tutorial-basics/create-a-blog-post"},{"id":"tutorial-basics/create-a-document","path":"/docs/tutorial-basics/create-a-document"},{"id":"tutorial-basics/create-a-page","path":"/docs/tutorial-basics/create-a-page"},{"id":"tutorial-basics/deploy-your-site","path":"/docs/tutorial-basics/deploy-your-site"},{"id":"tutorial-basics/markdown-features","path":"/docs/tutorial-basics/markdown-features"},{"id":"tutorial-extras/manage-docs-versions","path":"/docs/tutorial-extras/manage-docs-versions"},{"id":"tutorial-extras/translate-your-site","path":"/docs/tutorial-extras/translate-your-site"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/location-proof-protocol/introduction","label":"location-proof-protocol/introduction"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"3.4.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.4.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.4.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.4.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.4.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.4.0"}}}');var c=n(4848);const u={siteConfig:o.default,siteMetadata:s,globalData:a,i18n:i,codeTranslations:l},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},7489:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(6540),o=n(8193),a=n(5260),i=n(440),l=n(781),s=n(3102),c=n(4848);function u(e){let{error:t,tryAgain:n}=e;return(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,c.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,c.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,c.jsx)(d,{error:t})]})}function d(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function p(e){let{children:t}=e;return(0,c.jsx)(s.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function f(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)(p,{children:(0,c.jsxs)(g,{fallback:()=>(0,c.jsx)(u,{error:t,tryAgain:n}),children:[(0,c.jsx)(a.A,{children:(0,c.jsx)("title",{children:"Page Error"})}),(0,c.jsx)(l.A,{children:(0,c.jsx)(u,{error:t,tryAgain:n})})]})})}const m=e=>(0,c.jsx)(f,{...e});class g extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.A.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??m)(e)}return e??null}}},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(545),o=n(4848);function a(e){return(0,o.jsx)(r.mg,{...e})}},8774:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540),o=n(4625),a=n(440),i=n(4586),l=n(6654),s=n(8193),c=n(3427),u=n(6025),d=n(4848);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":h,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:v}=(0,i.A)(),{trailingSlash:w,baseUrl:k}=v,x=v.future.experimental_router,{withBaseUrl:S}=(0,u.hH)(),E=(0,c.A)(),_=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>_.current));const C=p||f;const A=(0,l.A)(C),T=C?.replace("pathname://","");let j=void 0!==T?(N=T,y&&(e=>e.startsWith("/"))(N)?S(N):N):void 0;var N;"hash"===x&&j?.startsWith("./")&&(j=j?.slice(1)),j&&A&&(j=(0,a.applyTrailingSlash)(j,{trailingSlash:w,baseUrl:k}));const L=(0,r.useRef)(!1),P=n?o.k2:o.N_,R=s.A.canUseIntersectionObserver,O=(0,r.useRef)(),D=()=>{L.current||null==j||(window.docusaurus.preload(j),L.current=!0)};(0,r.useEffect)((()=>(!R&&A&&null!=j&&window.docusaurus.prefetch(j),()=>{R&&O.current&&O.current.disconnect()})),[O,j,R,A]);const I=j?.startsWith("#")??!1,M=!b.target||"_self"===b.target,F=!j||!A||!M;return h||!I&&F||E.collectLink(j),b.id&&E.collectAnchor(b.id),F?(0,d.jsx)("a",{ref:_,href:j,...C&&!A&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(P,{...b,onMouseEnter:D,onTouchStart:D,innerRef:e=>{_.current=e,R&&e&&A&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=j&&window.docusaurus.prefetch(j))}))})),O.current.observe(e))},to:j,...n&&{isActive:g,activeClassName:m}})}const f=r.forwardRef(p)},418:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=()=>null},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>c,T:()=>s});var r=n(6540),o=n(4848);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(2654);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return a(l({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},6654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>o,z:()=>r})},6025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>l,hH:()=>i});var r=n(6540),o=n(4586),a=n(6654);function i(){const{siteConfig:e}=(0,o.A)(),{baseUrl:t,url:n}=e,i=e.future.experimental_router,l=(0,r.useCallback)(((e,r)=>function(e){let{siteUrl:t,baseUrl:n,url:r,options:{forcePrependBaseUrl:o=!1,absolute:i=!1}={},router:l}=e;if(!r||r.startsWith("#")||(0,a.z)(r))return r;if("hash"===l)return r.startsWith("/")?`.${r}`:`./${r}`;if(o)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;const s=r.startsWith(n)?r:n+r.replace(/^\//,"");return i?t+s:s}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})),[n,t,i]);return{withBaseUrl:l}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},3427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540);n(4848);const o=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),a=()=>(0,r.useContext)(o);function i(){return a()}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6988);function a(){return(0,r.useContext)(o.o)}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(6125);function a(){return(0,r.useContext)(o.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const o=n(8193).A.canUseDOM?r.useLayoutEffect:r.useEffect},6803:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(6540),o=n(3102);function a(){const e=r.useContext(o.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}},6921:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const l=o?`${o}.${a}`:a;r(i)?e(i,l):t[l]=i}))}(e),t}},3102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>a});var r=n(6540),o=n(4848);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:l,children:t})}},4070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>p,Gy:()=>u,HW:()=>h,ht:()=>d,r7:()=>m,jh:()=>f});var r=n(6347),o=n(4586),a=n(7065);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.A)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const c={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>{try{return function(e,t,n){void 0===t&&(t=a.W),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":` (pluginId=${e}`),{cause:t})}};function p(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.zy)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function g(e){const t=d(e),{pathname:n}=(0,r.zy)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.zy)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},6294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(5947),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},6134:(e,t,n)=>{"use strict";n.r(t);var r=n(1765),o=n(4784);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(9700),n(8692)(`./prism-${e}`)})),delete globalThis.Prism}(r.My)},1107:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(4164),o=n(1312),a=n(6342),i=n(8774),l=n(3427);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var c=n(4848);function u(e){let{as:t,id:n,...u}=e;const d=(0,l.A)(),{navbar:{hideOnScroll:p}}=(0,a.p)();if("h1"===t||!n)return(0,c.jsx)(t,{...u,id:void 0});d.collectAnchor(n);const f=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return(0,c.jsxs)(t,{...u,className:(0,r.A)("anchor",p?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n,children:[u.children,(0,c.jsx)(i.A,{className:"hash-link",to:`#${n}`,"aria-label":f,title:f,children:"\u200b"})]})}},3186:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(4848);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},781:(e,t,n)=>{"use strict";n.d(t,{A:()=>ft});var r=n(6540),o=n(4164),a=n(7489),i=n(1213),l=n(6347),s=n(1312),c=n(5062),u=n(4848);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,l.W6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.$)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const m=(0,s.T)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function g(e){const t=e.children??m,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":m,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(7559),y=n(4090);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(g,{className:b.skipToContent})}var w=n(6342),k=n(5041);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:o,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.A)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.p)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.A)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function T(){const{announcementBar:e}=(0,w.p)(),{isActive:t,close:n}=(0,k.M)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,u.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,u.jsx)("div",{className:A.announcementBarPlaceholder}),(0,u.jsx)(C,{className:A.announcementBarContent}),a&&(0,u.jsx)(E,{onClick:n,className:A.announcementBarClose})]})}var j=n(9876),N=n(3104);var L=n(9532),P=n(5600);const R=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,j.M)(),t=(0,P.YL)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,L.ZC)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,u.jsx)(R.Provider,{value:n,children:t})}function D(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(R);if(!e)throw new L.dV("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,P.YL)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:D(a)})),[o,a,t])}function M(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=I();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,o.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var F=n(5293),z=n(2303);function B(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.A)(),l=(0,s.T)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,o.A)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,o.A)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,u.jsx)(B,{className:(0,o.A)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,o.A)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function V(e){let{className:t}=e;const n=(0,w.p)().navbar.style,r=(0,w.p)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,F.G)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var W=n(3465);function Q(){return(0,u.jsx)(W.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function K(){const e=(0,j.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,s.T)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function Y(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(Q,{}),(0,u.jsx)(V,{className:"margin-right--md"}),(0,u.jsx)(K,{})]})}var Z=n(8774),X=n(6025),J=n(6654);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(3186);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...c}=e;const d=(0,X.Ay)(r),p=(0,X.Ay)(t),f=(0,X.Ay)(o,{forcePrependBaseUrl:!0}),m=a&&o&&!(0,J.A)(o),g=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,m&&(0,u.jsx)(te.A,{...l&&{width:12,height:12}})]})};return o?(0,u.jsx)(Z.A,{href:s?f:o,...c,...g}):(0,u.jsx)(Z.A,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...c,...g})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,u.jsx)(ne,{className:(0,o.A)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,o.A)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,u.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(1422),le=n(9169),se=n(4586);const ce={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.ys)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:a,onClick:i,...l}=e;const s=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,u.jsxs)("div",{ref:s,className:(0,o.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:l.to?void 0:"#",className:(0,o.A)("navbar__link",a),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:l.children??l.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(_e,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function pe(e){let{items:t,className:n,position:a,onClick:i,...s}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.A)(),{pathname:t}=(0,l.zy)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),(0,u.jsxs)("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,o.A)(ce.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),f()},children:s.children??s.label}),(0,u.jsx)(ie.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(_e,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function fe(e){let{mobile:t=!1,...n}=e;const r=t?pe:de;return(0,u.jsx)(r,{...n})}var me=n(2131);function ge(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";var ye=n(418);const be={navbarSearchContainer:"navbarSearchContainer_Bca1"};function ve(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,o.A)(n,be.navbarSearchContainer),children:t})}var we=n(4070),ke=n(1754);var xe=n(5597);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.A)(),p=(0,me.o)(),{search:f,hash:m}=(0,l.zy)(),g=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],h=t?(0,s.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(fe,{...a,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(ge,{className:he}),h]}),items:g})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(ve,{className:n,children:(0,u.jsx)(ye.A,{})})},dropdown:fe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,u.jsx)(i,{className:(0,o.A)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.zK)(r),i=(0,ke.QB)(t,r),l=a?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>l||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,we.zK)(r),i=(0,ke.fW)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,ke.Vd)(r)[0],i=t??a.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,u.jsx)(ae,{...o,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:c,hash:d}=(0,l.zy)(),p=(0,we.zK)(n),f=(0,we.jh)(n),{savePreferredVersionName:m}=(0,xe.g1)(n),g=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...a],h=(0,ke.Vd)(n)[0],y=t&&g.length>1?(0,s.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,b=t&&g.length>1?void 0:Se(h).path;return g.length<=1?(0,u.jsx)(ae,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,u.jsx)(fe,{...i,mobile:t,label:y,to:b,items:g,isActive:r?()=>!1:void 0})}};function _e(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Ee[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(o,{...n})}function Ce(){const e=(0,j.M)(),t=(0,w.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(_e,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Ae(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(s.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Te(){const e=0===(0,w.p)().navbar.items.length,t=I();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(Ae,{onClick:()=>t.hide()}),t.content]})}function je(){const e=(0,j.M)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(M,{header:(0,u.jsx)(Y,{}),primaryMenu:(0,u.jsx)(Ce,{}),secondaryMenu:(0,u.jsx)(Te,{})}):null}const Ne={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Le(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.A)("navbar-sidebar__backdrop",e.className)})}function Pe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.p)(),i=(0,j.M)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,N.Mq)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:l,"aria-label":(0,s.T)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.A)("navbar","navbar--fixed-top",n&&[Ne.navbarHideable,!d&&Ne.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Le,{onClick:i.toggle}),(0,u.jsx)(je,{})]})}var Re=n(440);const Oe={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function De(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(s.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Ie(e){let{error:t}=e;const n=(0,Re.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:Oe.errorBoundaryError,children:n})}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Fe="right";function ze(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function Be(){const{toggle:e,shown:t}=(0,j.M)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,s.T)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(ze,{})})}const $e={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(Me,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(_e,{...e})},t)))})}function qe(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function He(){const e=(0,j.M)(),t=(0,w.p)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Fe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,u.jsx)(qe,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(Be,{}),(0,u.jsx)(Q,{}),(0,u.jsx)(Ue,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Ue,{items:r}),(0,u.jsx)(V,{className:$e.colorModeToggle}),!o&&(0,u.jsx)(ve,{children:(0,u.jsx)(ye.A,{})})]})})}function Ge(){return(0,u.jsx)(Pe,{children:(0,u.jsx)(He,{})})}function Ve(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,l=(0,X.Ay)(n),s=(0,X.Ay)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Z.A,{className:"footer__link-item",...r?{href:a?s:r}:{to:l},...i,children:[o,r&&!(0,J.A)(r)&&(0,u.jsx)(te.A,{})]})}function We(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(Ve,{item:t})},t.href??t.to)}function Qe(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(We,{item:e},t)))})]})}function Ke(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(Qe,{column:e},t)))})}function Ye(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Ze(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(Ve,{item:t})}function Xe(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(Ze,{item:e}),t.length!==n+1&&(0,u.jsx)(Ye,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(Ke,{columns:t}):(0,u.jsx)(Xe,{links:t})}var et=n(1122);const tt={footerLogoLink:"footerLogoLink_BH7S"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.hH)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(et.A,{className:(0,o.A)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,u.jsx)(Z.A,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,u.jsx)(nt,{logo:t})}):(0,u.jsx)(nt,{logo:t})}function ot(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,u.jsx)("footer",{className:(0,o.A)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function it(){const{footer:e}=(0,w.p)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(at,{style:o,links:n&&n.length>0&&(0,u.jsx)(Je,{links:n}),logo:r&&(0,u.jsx)(rt,{logo:r}),copyright:t&&(0,u.jsx)(ot,{copyright:t})})}const lt=r.memo(it),st=(0,L.fM)([F.a,k.o,N.Tv,xe.VQ,i.Jx,function(e){let{children:t}=e;return(0,u.jsx)(P.y_,{children:(0,u.jsx)(j.e,{children:(0,u.jsx)(O,{children:t})})})}]);function ct(e){let{children:t}=e;return(0,u.jsx)(st,{children:t})}var ut=n(1107);function dt(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(ut.A,{as:"h1",className:"hero__title",children:(0,u.jsx)(s.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(De,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(Ie,{error:t})})]})})})}const pt={mainWrapper:"mainWrapper_z2l0"};function ft(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.J)(),(0,u.jsxs)(ct,{children:[(0,u.jsx)(i.be,{title:l,description:s}),(0,u.jsx)(v,{}),(0,u.jsx)(T,{}),(0,u.jsx)(Ge,{}),(0,u.jsx)("div",{id:d,className:(0,o.A)(h.G.wrapper.main,pt.mainWrapper,r),children:(0,u.jsx)(a.A,{fallback:e=>(0,u.jsx)(dt,{...e}),children:t})}),!n&&(0,u.jsx)(lt,{})]})}},3465:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});n(6540);var r=n(8774),o=n(6025),a=n(4586),i=n(6342),l=n(1122),s=n(4848);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Ay)(t.src),dark:(0,o.Ay)(t.srcDark||t.src)},i=(0,s.jsx)(l.A,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.A)(),{navbar:{title:n,logo:l}}=(0,i.p)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.Ay)(l?.href||"/"),m=n?"":t,g=l?.alt??m;return(0,s.jsxs)(r.A,{to:f,...p,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(c,{logo:l,alt:g,imageClassName:u}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},1463:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});n(6540);var r=n(5260),o=n(4848);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.A,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},1122:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(6540),o=n(4164),a=n(2303),i=n(5293);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(4848);function c(e){let{className:t,children:n}=e;const c=(0,a.A)(),{colorMode:u}=(0,i.G)();return(0,s.jsx)(s.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.A)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:a},e)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,s.jsx)(c,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},1422:(e,t,n)=>{"use strict";n.d(t,{N:()=>y,u:()=>c});var r=n(6540),o=n(8193),a=n(205),i=n(3109),l=n(4848);const s="ease-in-out";function c(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.O)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function m(e){if(!o.A.canUseDOM)return e?u:d}function g(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:s,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:a}),(0,l.jsx)(t,{ref:u,style:c?void 0:m(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:s,children:o})}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[s,c]=(0,r.useState)(t);return(0,a.A)((()=>{t||i(!0)}),[t]),(0,a.A)((()=>{o&&c(t)}),[o,t]),o?(0,l.jsx)(g,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?h:g;return(0,l.jsx)(r,{...n})}},5041:(e,t,n)=>{"use strict";n.d(t,{M:()=>g,o:()=>m});var r=n(6540),o=n(2303),a=n(679),i=n(9532),l=n(6342),s=n(4848);const c=(0,a.Wf)("docusaurus.announcement.dismiss"),u=(0,a.Wf)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function m(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.p)(),t=(0,o.A)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(f.Provider,{value:n,children:t})}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},5293:(e,t,n)=>{"use strict";n.d(t,{G:()=>y,a:()=>h});var r=n(6540),o=n(8193),a=n(9532),i=n(679),l=n(6342),s=n(4848);const c=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,m=e=>o.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),g=e=>{d.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.p)(),[o,a]=(0,r.useState)(m(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&g(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,s.jsx)(c.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(c);if(null==e)throw new a.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},5597:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>y,g1:()=>v});var r=n(6540),o=n(4070),a=n(7065),i=n(6342),l=n(1754),s=n(9532),c=n(679),u=n(4848);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.Wf)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.Wf)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.Wf)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const m=r.createContext(null);function g(){const e=(0,o.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=g();return(0,u.jsx)(m.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.C5?(0,u.jsx)(h,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function b(){const e=(0,r.useContext)(m);if(!e)throw new s.dV("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.W);const t=(0,o.ht)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},6588:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,t:()=>c});var r=n(6540),o=n(9532),a=n(4848);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(l.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(l);if(e===i)throw new o.dV("DocsSidebarProvider");return e}},2252:(e,t,n)=>{"use strict";n.d(t,{n:()=>l,r:()=>s});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new o.dV("DocsVersionProvider");return e}},9876:(e,t,n)=>{"use strict";n.d(t,{e:()=>f,M:()=>m});var r=n(6540),o=n(5600),a=n(4581),i=n(6347),l=n(9532);function s(e){!function(e){const t=(0,i.W6)(),n=(0,l._q)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var c=n(6342),u=n(4848);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,o.YL)(),{items:t}=(0,c.p)().navbar;return 0===t.length&&!e.component}(),t=(0,a.l)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const u=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function f(e){let{children:t}=e;const n=p();return(0,u.jsx)(d.Provider,{value:n,children:t})}function m(){const e=r.useContext(d);if(void 0===e)throw new l.dV("NavbarMobileSidebarProvider");return e}},5600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>c,YL:()=>s,y_:()=>l});var r=n(6540),o=n(9532),a=n(4848);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new o.dV("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.dV("NavbarSecondaryMenuContentProvider");const[,l]=a,s=(0,o.Be)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},4090:(e,t,n)=>{"use strict";n.d(t,{w:()=>o,J:()=>a});var r=n(6540);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},4581:(e,t,n)=>{"use strict";n.d(t,{l:()=>l});var r=n(6540),o=n(8193);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!o.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?a.desktop:a.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},7559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},3109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},1754:(e,t,n)=>{"use strict";n.d(t,{Nr:()=>f,w8:()=>h,C5:()=>p,B5:()=>E,Vd:()=>k,QB:()=>S,fW:()=>x,OF:()=>w,Y:()=>b});var r=n(6540),o=n(6347),a=n(2831),i=n(4070),l=n(5597),s=n(2252),c=n(6588);function u(e){return Array.from(new Set(e))}var d=n(9169);const p=!!i.Gy;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const m=(e,t)=>void 0!==e&&(0,d.ys)(e,t),g=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?m(e.href,t):"category"===e.type&&(m(e.href,t)||g(e.items,t))}function y(e,t){switch(e.type){case"category":return h(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||h(e,t);default:return!0}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.ys)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.ys)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,c.t)(),{pathname:t}=(0,o.zy)(),n=(0,i.vT)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.zK)(e),{preferredVersion:n}=(0,l.g1)(e),o=(0,i.r7)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,o.zy)(),r=(0,s.r)(),i=t.routes,l=i.find((e=>(0,o.B6)(n.pathname,e)));if(!l)return null;const c=l.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,a.v)(i),sidebarName:c,sidebarItems:u}}},1213:(e,t,n)=>{"use strict";n.d(t,{e3:()=>p,be:()=>u,Jx:()=>f});var r=n(6540),o=n(4164),a=n(5260),i=n(6803),l=n(6025),s=n(4586);var c=n(4848);function u(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const u=function(e){const{siteConfig:t}=(0,s.A)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,l.hH)(),p=o?d(o,{absolute:!0}):void 0;return(0,c.jsxs)(a.A,{children:[t&&(0,c.jsx)("title",{children:u}),t&&(0,c.jsx)("meta",{property:"og:title",content:u}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,c.jsx)("meta",{property:"og:image",content:p}),p&&(0,c.jsx)("meta",{name:"twitter:image",content:p}),i]})}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,o.A)(i,t);return(0,c.jsxs)(d.Provider,{value:l,children:[(0,c.jsx)(a.A,{children:(0,c.jsx)("html",{className:l})}),n]})}function f(e){let{children:t}=e;const n=(0,i.A)(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(p,{className:(0,o.A)(r,a),children:t})}},9532:(e,t,n)=>{"use strict";n.d(t,{Be:()=>c,ZC:()=>l,_q:()=>i,dV:()=>s,fM:()=>u});var r=n(6540),o=n(205),a=n(4848);function i(e){const t=(0,r.useRef)(e);return(0,o.A)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,o.A)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},9169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>l,ys:()=>i});var r=n(6540),o=n(8328),a=n(4586);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,a.A)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.A,baseUrl:e})),[e])}},3104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>p,Tv:()=>c,gk:()=>f});var r=n(6540),o=n(8193),a=n(2303),i=(n(205),n(9532)),l=n(4848);const s=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,l.jsx)(s.Provider,{value:n,children:t})}function u(){const e=(0,r.useContext)(s);if(null==e)throw new i.dV("ScrollControllerProvider");return e}const d=()=>o.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(d()),a=(0,i._q)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},2967:(e,t,n)=>{"use strict";n.d(t,{Cy:()=>r,tU:()=>o});n(4586);const r="default";function o(e,t){return`docs-${e}-${t}`}},679:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>c});n(6540);const r=JSON.parse('{"N":"localStorage","M":""}'),o=r.N;function a(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function i(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function c(e,t){const n=`${e}${r.M}`;if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(n);const o=i(t?.persistence);return null===o?s:{get:()=>{try{return o.getItem(n)}catch(e){return console.error(`Docusaurus storage error, can't get key=${n}`,e),null}},set:e=>{try{const t=o.getItem(n);o.setItem(n,e),a({key:n,oldValue:t,newValue:e,storage:o})}catch(t){console.error(`Docusaurus storage error, can't set ${n}=${e}`,t)}},del:()=>{try{const e=o.getItem(n);o.removeItem(n),a({key:n,oldValue:e,newValue:null,storage:o})}catch(e){console.error(`Docusaurus storage error, can't delete key=${n}`,e)}},listen:e=>{try{const t=t=>{t.storageArea===o&&t.key===n&&e(t)};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)}catch(t){return console.error(`Docusaurus storage error, can't listen for changes of key=${n}`,t),()=>{}}}}}},2131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(4586),o=n(6347),a=n(440);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.A)(),{pathname:s}=(0,o.zy)(),c=(0,a.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),u=l===i?e:e.replace(`/${l}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(6540),o=n(6347),a=n(9532);function i(e){const t=(0,o.zy)(),n=(0,a.ZC)(t),i=(0,a._q)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var r=n(4586);function o(){return(0,r.A)().siteConfig.themeConfig}},2983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=void 0;const r=n(2566);function o(e){return e.endsWith("/")?e:`${e}/`}function a(e){return(0,r.removeSuffix)(e,"/")}t.addTrailingSlash=o,t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[i]=e.split(/[#?]/),l="/"===i||i===r?i:(s=i,n?o(s):a(s));var s;return e.replace(i,l)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=a},253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},440:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=t.removeTrailingSlash=t.addLeadingSlash=t.addTrailingSlash=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}}),Object.defineProperty(t,"addTrailingSlash",{enumerable:!0,get:function(){return o.addTrailingSlash}}),Object.defineProperty(t,"addLeadingSlash",{enumerable:!0,get:function(){return o.addLeadingSlash}}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return o.removeTrailingSlash}});var a=n(2566);Object.defineProperty(t,"addPrefix",{enumerable:!0,get:function(){return a.addPrefix}}),Object.defineProperty(t,"removeSuffix",{enumerable:!0,get:function(){return a.removeSuffix}}),Object.defineProperty(t,"addSuffix",{enumerable:!0,get:function(){return a.addSuffix}}),Object.defineProperty(t,"removePrefix",{enumerable:!0,get:function(){return a.removePrefix}});var i=n(253);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},2566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.removePrefix=t.addSuffix=t.removeSuffix=t.addPrefix=void 0,t.addPrefix=function(e,t){return e.startsWith(t)?e:`${t}${e}`},t.removeSuffix=function(e,t){return""===t?e:e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:`${e}${t}`},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},1513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>w,TM:()=>C,yJ:()=>f,sC:()=>T,AO:()=>p});var r=n(8168);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(1561);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.A)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,g(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(4363),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),g=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,o,a,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,l],u=0;(s=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},4634:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},119:(e,t,n)=>{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:''};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){s(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),l=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},6969:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation . The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment
can become .namespace--comment
) or replace them with your defined ones (like .editor__comment
). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll
and highlightAllUnder
methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722:(e,t,n)=>{const r=n(6969),o=n(8380),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),a.add(e)}))}i.silent=!1,e.exports=i},9700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,l=i.length;-1!==n.code.indexOf(o=t(r,l));)++l;return i[l]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=a.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++o;var g=p.substring(0,m),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=p.substring(m+f.length),b=[];g&&b.push.apply(b,i([g])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof c?l.splice.apply(l,[s,1].concat(b)):c.content=b}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(Prism)},8692:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=8692},3157:(e,t,n)=>{var r={"./":8722};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=3157},8380:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in o(t,a),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(s),m=u;o(m);){for(var g in p={},m){var h=s[g];t(h&&h.modify,(function(e){e in d&&(p[e]=!0)}))}for(var y in d)if(!(y in u))for(var b in f(y))if(b in u){p[y]=!0;break}for(var v in m=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete s[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return l[e]=o}for(var u in n)c(u);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),o=n(9982);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nt}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!d.call(m,e)||!d.call(f,e)&&(p.test(e)?m[e]=!0:(f[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(y,b);h[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(y,b);h[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(y,b);h[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){h[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),h.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){h[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,k=Symbol.for("react.element"),x=Symbol.for("react.portal"),S=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),_=Symbol.for("react.profiler"),C=Symbol.for("react.provider"),A=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),j=Symbol.for("react.suspense"),N=Symbol.for("react.suspense_list"),L=Symbol.for("react.memo"),P=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var R=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var O=Symbol.iterator;function D(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=O&&e[O]||e["@@iterator"])?e:null}var I,M=Object.assign;function F(e){if(void 0===I)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);I=t&&t[1]||""}return"\n"+I+e}var z=!1;function B(e,t){if(!e||z)return"";z=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(c){var r=c}Reflect.construct(e,[],t)}else{try{t.call()}catch(c){r=c}e.call(t.prototype)}else{try{throw Error()}catch(c){r=c}e()}}catch(c){if(c&&r&&"string"==typeof c.stack){for(var o=c.stack.split("\n"),a=r.stack.split("\n"),i=o.length-1,l=a.length-1;1<=i&&0<=l&&o[i]!==a[l];)l--;for(;1<=i&&0<=l;i--,l--)if(o[i]!==a[l]){if(1!==i||1!==l)do{if(i--,0>--l||o[i]!==a[l]){var s="\n"+o[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}}while(1<=i&&0<=l);break}}}finally{z=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?F(e):""}function $(e){switch(e.tag){case 5:return F(e.type);case 16:return F("Lazy");case 13:return F("Suspense");case 19:return F("SuspenseList");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return""}}function U(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case S:return"Fragment";case x:return"Portal";case _:return"Profiler";case E:return"StrictMode";case j:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case C:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case L:return null!==(t=e.displayName||null)?t:U(e.type)||"Memo";case P:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function q(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return U(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function H(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function G(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function V(e){e._valueTracker||(e._valueTracker=function(e){var t=G(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function W(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=G(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Q(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function K(e,t){var n=t.checked;return M({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function Y(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=H(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Z(e,t){null!=(t=t.checked)&&v(e,"checked",t,!1)}function X(e,t){Z(e,t);var n=H(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&&ee(e,t.type,H(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ee(e,t,n){"number"===t&&Q(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=ce.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ue(e,t)}))}:ue);function pe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var fe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=["Webkit","ms","Moz","O"];function ge(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||fe.hasOwnProperty(e)&&fe[e]?(""+t).trim():t+"px"}function he(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=ge(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(fe).forEach((function(e){me.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),fe[t]=fe[e]}))}));var ye=M({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function be(e,t){if(t){if(ye[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(a(62))}}function ve(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function ke(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var xe=null,Se=null,Ee=null;function _e(e){if(e=wo(e)){if("function"!=typeof xe)throw Error(a(280));var t=e.stateNode;t&&(t=xo(t),xe(e.stateNode,e.type,t))}}function Ce(e){Se?Ee?Ee.push(e):Ee=[e]:Se=e}function Ae(){if(Se){var e=Se,t=Ee;if(Ee=Se=null,_e(e),t)for(e=0;e>>=0,0===e?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2;var ct=64,ut=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function pt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,a=e.pingedLanes,i=268435455&n;if(0!==i){var l=i&~o;0!==l?r=dt(l):0!==(a&=i)&&(r=dt(a))}else 0!==(i=n&~o)?r=dt(i):0!==a&&(r=dt(a));if(0===r)return 0;if(0!==t&&t!==r&&!(t&o)&&((o=r&-r)>=(a=t&-t)||16===o&&4194240&a))return t;if(4&r&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function yt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function bt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),o=1<=Dn),Fn=String.fromCharCode(32),zn=!1;function Bn(e,t){switch(e){case"keyup":return-1!==Rn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Un=!1;var qn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!qn[e.type]:"textarea"===t}function Gn(e,t,n,r){Ce(r),0<(t=Vr(t,"onChange")).length&&(n=new un("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Vn=null,Wn=null;function Qn(e){Fr(e,0)}function Kn(e){if(W(ko(e)))return e}function Yn(e,t){if("change"===e)return t}var Zn=!1;if(u){var Xn;if(u){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Xn=Jn}else Xn=!1;Zn=Xn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=Q();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Q((e=t.contentWindow).document)}return t}function fr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function mr(e){var t=pr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&fr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,a=Math.min(r.start,o);r=void 0===r.end?a:Math.min(r.end,o),!e.extend&&a>r&&(o=r,r=a,a=o),o=ur(n,a);var i=ur(n,r);o&&i&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&&n.focus(),n=0;n=document.documentMode,hr=null,yr=null,br=null,vr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;vr||null==hr||hr!==Q(r)||("selectionStart"in(r=hr)&&fr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&sr(br,r)||(br=r,0<(r=Vr(yr,"onSelect")).length&&(t=new un("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=hr)))}function kr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var xr={animationend:kr("Animation","AnimationEnd"),animationiteration:kr("Animation","AnimationIteration"),animationstart:kr("Animation","AnimationStart"),transitionend:kr("Transition","TransitionEnd")},Sr={},Er={};function _r(e){if(Sr[e])return Sr[e];if(!xr[e])return e;var t,n=xr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Er)return Sr[e]=n[t];return e}u&&(Er=document.createElement("div").style,"AnimationEvent"in window||(delete xr.animationend.animation,delete xr.animationiteration.animation,delete xr.animationstart.animation),"TransitionEvent"in window||delete xr.transitionend.transition);var Cr=_r("animationend"),Ar=_r("animationiteration"),Tr=_r("animationstart"),jr=_r("transitionend"),Nr=new Map,Lr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Pr(e,t){Nr.set(e,t),s(t,[e])}for(var Rr=0;RrEo||(e.current=So[Eo],So[Eo]=null,Eo--)}function Ao(e,t){Eo++,So[Eo]=e.current,e.current=t}var To={},jo=_o(To),No=_o(!1),Lo=To;function Po(e,t){var n=e.type.contextTypes;if(!n)return To;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Ro(e){return null!=(e=e.childContextTypes)}function Oo(){Co(No),Co(jo)}function Do(e,t,n){if(jo.current!==To)throw Error(a(168));Ao(jo,t),Ao(No,n)}function Io(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(a(108,q(e)||"Unknown",o));return M({},n,r)}function Mo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||To,Lo=jo.current,Ao(jo,e),Ao(No,No.current),!0}function Fo(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Io(e,t,Lo),r.__reactInternalMemoizedMergedChildContext=e,Co(No),Co(jo),Ao(jo,e)):Co(No),Ao(No,n)}var zo=null,Bo=!1,$o=!1;function Uo(e){null===zo?zo=[e]:zo.push(e)}function qo(){if(!$o&&null!==zo){$o=!0;var e=0,t=vt;try{var n=zo;for(vt=1;e>=i,o-=i,Zo=1<<32-it(t)+o|n<g?(h=d,d=null):h=d.sibling;var y=f(o,d,l[g],s);if(null===y){null===d&&(d=h);break}e&&d&&null===y.alternate&&t(o,d),a=i(y,a,g),null===u?c=y:u.sibling=y,u=y,d=h}if(g===l.length)return n(o,d),aa&&Jo(o,g),c;if(null===d){for(;gh?(y=g,g=null):y=g.sibling;var v=f(o,g,b.value,c);if(null===v){null===g&&(g=y);break}e&&g&&null===v.alternate&&t(o,g),l=i(v,l,h),null===d?u=v:d.sibling=v,d=v,g=y}if(b.done)return n(o,g),aa&&Jo(o,h),u;if(null===g){for(;!b.done;h++,b=s.next())null!==(b=p(o,b.value,c))&&(l=i(b,l,h),null===d?u=b:d.sibling=b,d=b);return aa&&Jo(o,h),u}for(g=r(o,g);!b.done;h++,b=s.next())null!==(b=m(g,o,h,b.value,c))&&(e&&null!==b.alternate&&g.delete(null===b.key?h:b.key),l=i(b,l,h),null===d?u=b:d.sibling=b,d=b);return e&&g.forEach((function(e){return t(o,e)})),aa&&Jo(o,h),u}return function e(r,a,i,s){if("object"==typeof i&&null!==i&&i.type===S&&null===i.key&&(i=i.props.children),"object"==typeof i&&null!==i){switch(i.$$typeof){case k:e:{for(var c=i.key,u=a;null!==u;){if(u.key===c){if((c=i.type)===S){if(7===u.tag){n(r,u.sibling),(a=o(u,i.props.children)).return=r,r=a;break e}}else if(u.elementType===c||"object"==typeof c&&null!==c&&c.$$typeof===P&&va(c)===u.type){n(r,u.sibling),(a=o(u,i.props)).ref=ya(r,u,i),a.return=r,r=a;break e}n(r,u);break}t(r,u),u=u.sibling}i.type===S?((a=Dc(i.props.children,r.mode,s,i.key)).return=r,r=a):((s=Oc(i.type,i.key,i.props,null,r.mode,s)).ref=ya(r,a,i),s.return=r,r=s)}return l(r);case x:e:{for(u=i.key;null!==a;){if(a.key===u){if(4===a.tag&&a.stateNode.containerInfo===i.containerInfo&&a.stateNode.implementation===i.implementation){n(r,a.sibling),(a=o(a,i.children||[])).return=r,r=a;break e}n(r,a);break}t(r,a),a=a.sibling}(a=Fc(i,r.mode,s)).return=r,r=a}return l(r);case P:return e(r,a,(u=i._init)(i._payload),s)}if(te(i))return g(r,a,i,s);if(D(i))return h(r,a,i,s);ba(r,i)}return"string"==typeof i&&""!==i||"number"==typeof i?(i=""+i,null!==a&&6===a.tag?(n(r,a.sibling),(a=o(a,i)).return=r,r=a):(n(r,a),(a=Mc(i,r.mode,s)).return=r,r=a),l(r)):n(r,a)}}var ka=wa(!0),xa=wa(!1),Sa=_o(null),Ea=null,_a=null,Ca=null;function Aa(){Ca=_a=Ea=null}function Ta(e){var t=Sa.current;Co(Sa),e._currentValue=t}function ja(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Na(e,t){Ea=e,Ca=_a=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(!!(e.lanes&t)&&(vl=!0),e.firstContext=null)}function La(e){var t=e._currentValue;if(Ca!==e)if(e={context:e,memoizedValue:t,next:null},null===_a){if(null===Ea)throw Error(a(308));_a=e,Ea.dependencies={lanes:0,firstContext:e}}else _a=_a.next=e;return t}var Pa=null;function Ra(e){null===Pa?Pa=[e]:Pa.push(e)}function Oa(e,t,n,r){var o=t.interleaved;return null===o?(n.next=n,Ra(t)):(n.next=o.next,o.next=n),t.interleaved=n,Da(e,r)}function Da(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Ia=!1;function Ma(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Fa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function za(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ba(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&Ts){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Da(e,n)}return null===(o=r.interleaved)?(t.next=t,Ra(r)):(t.next=o.next,o.next=t),r.interleaved=t,Da(e,n)}function $a(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}function Ua(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function qa(e,t,n,r){var o=e.updateQueue;Ia=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,l=o.shared.pending;if(null!==l){o.shared.pending=null;var s=l,c=s.next;s.next=null,null===i?a=c:i.next=c,i=s;var u=e.alternate;null!==u&&((l=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===l?u.firstBaseUpdate=c:l.next=c,u.lastBaseUpdate=s))}if(null!==a){var d=o.baseState;for(i=0,u=c=s=null,l=a;;){var p=l.lane,f=l.eventTime;if((r&p)===p){null!==u&&(u=u.next={eventTime:f,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var m=e,g=l;switch(p=t,f=n,g.tag){case 1:if("function"==typeof(m=g.payload)){d=m.call(f,d,p);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(p="function"==typeof(m=g.payload)?m.call(f,d,p):m))break e;d=M({},d,p);break e;case 2:Ia=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(p=o.effects)?o.effects=[l]:p.push(l))}else f={eventTime:f,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===u?(c=u=f,s=d):u=u.next=f,i|=p;if(null===(l=l.next)){if(null===(l=o.shared.pending))break;l=(p=l).next,p.next=null,o.lastBaseUpdate=p,o.shared.pending=null}}if(null===u&&(s=d),o.baseState=s,o.firstBaseUpdate=c,o.lastBaseUpdate=u,null!==(t=o.shared.interleaved)){o=t;do{i|=o.lane,o=o.next}while(o!==t)}else null===a&&(o.shared.lanes=0);Is|=i,e.lanes=i,e.memoizedState=d}}function Ha(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;tn?n:4,e(!0);var r=ai.transition;ai.transition={};try{e(!1),t()}finally{vt=n,ai.transition=r}}function Vi(){return vi().memoizedState}function Wi(e,t,n){var r=tc(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ki(e))Yi(t,n);else if(null!==(n=Oa(e,t,n,r))){nc(n,e,r,ec()),Zi(n,t,r)}}function Qi(e,t,n){var r=tc(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ki(e))Yi(t,o);else{var a=e.alternate;if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=a(i,n);if(o.hasEagerState=!0,o.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(o.next=o,Ra(t)):(o.next=s.next,s.next=o),void(t.interleaved=o)}}catch(c){}null!==(n=Oa(e,t,o,r))&&(nc(n,e,r,o=ec()),Zi(n,t,r))}}function Ki(e){var t=e.alternate;return e===li||null!==t&&t===li}function Yi(e,t){di=ui=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Zi(e,t,n){if(4194240&n){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,bt(e,n)}}var Xi={readContext:La,useCallback:mi,useContext:mi,useEffect:mi,useImperativeHandle:mi,useInsertionEffect:mi,useLayoutEffect:mi,useMemo:mi,useReducer:mi,useRef:mi,useState:mi,useDebugValue:mi,useDeferredValue:mi,useTransition:mi,useMutableSource:mi,useSyncExternalStore:mi,useId:mi,unstable_isNewReconciler:!1},Ji={readContext:La,useCallback:function(e,t){return bi().memoizedState=[e,void 0===t?null:t],e},useContext:La,useEffect:Di,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Ri(4194308,4,zi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ri(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ri(4,2,e,t)},useMemo:function(e,t){var n=bi();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=bi();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Wi.bind(null,li,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},bi().memoizedState=e},useState:Ni,useDebugValue:$i,useDeferredValue:function(e){return bi().memoizedState=e},useTransition:function(){var e=Ni(!1),t=e[0];return e=Gi.bind(null,e[1]),bi().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=li,o=bi();if(aa){if(void 0===n)throw Error(a(407));n=n()}else{if(n=t(),null===js)throw Error(a(349));30&ii||_i(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Di(Ai.bind(null,r,i,e),[e]),r.flags|=2048,Li(9,Ci.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=bi(),t=js.identifierPrefix;if(aa){var n=Xo;t=":"+t+"R"+(n=(Zo&~(1<<32-it(Zo)-1)).toString(32)+n),0<(n=pi++)&&(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=fi++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},el={readContext:La,useCallback:Ui,useContext:La,useEffect:Ii,useImperativeHandle:Bi,useInsertionEffect:Mi,useLayoutEffect:Fi,useMemo:qi,useReducer:ki,useRef:Pi,useState:function(){return ki(wi)},useDebugValue:$i,useDeferredValue:function(e){return Hi(vi(),si.memoizedState,e)},useTransition:function(){return[ki(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Vi,unstable_isNewReconciler:!1},tl={readContext:La,useCallback:Ui,useContext:La,useEffect:Ii,useImperativeHandle:Bi,useInsertionEffect:Mi,useLayoutEffect:Fi,useMemo:qi,useReducer:xi,useRef:Pi,useState:function(){return xi(wi)},useDebugValue:$i,useDeferredValue:function(e){var t=vi();return null===si?t.memoizedState=e:Hi(t,si.memoizedState,e)},useTransition:function(){return[xi(wi)[0],vi().memoizedState]},useMutableSource:Si,useSyncExternalStore:Ei,useId:Vi,unstable_isNewReconciler:!1};function nl(e,t){if(e&&e.defaultProps){for(var n in t=M({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}function rl(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:M({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var ol={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=ec(),o=tc(e),a=za(r,o);a.payload=t,null!=n&&(a.callback=n),null!==(t=Ba(e,a,o))&&(nc(t,e,o,r),$a(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=ec(),o=tc(e),a=za(r,o);a.tag=1,a.payload=t,null!=n&&(a.callback=n),null!==(t=Ba(e,a,o))&&(nc(t,e,o,r),$a(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ec(),r=tc(e),o=za(n,r);o.tag=2,null!=t&&(o.callback=t),null!==(t=Ba(e,o,r))&&(nc(t,e,r,n),$a(t,e,r))}};function al(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!t.prototype||!t.prototype.isPureReactComponent||(!sr(n,r)||!sr(o,a))}function il(e,t,n){var r=!1,o=To,a=t.contextType;return"object"==typeof a&&null!==a?a=La(a):(o=Ro(t)?Lo:jo.current,a=(r=null!=(r=t.contextTypes))?Po(e,o):To),t=new t(n,a),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=ol,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function ll(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&ol.enqueueReplaceState(t,t.state,null)}function sl(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs={},Ma(e);var a=t.contextType;"object"==typeof a&&null!==a?o.context=La(a):(a=Ro(t)?Lo:jo.current,o.context=Po(e,a)),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&&(rl(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&&"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&&o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&ol.enqueueReplaceState(o,o.state,null),qa(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&&(e.flags|=4194308)}function cl(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var o=n}catch(a){o="\nError generating stack: "+a.message+"\n"+a.stack}return{value:e,source:t,stack:o,digest:null}}function ul(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var pl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=za(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Hs||(Hs=!0,Gs=r),dl(0,t)},n}function ml(e,t,n){(n=za(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){dl(0,t)}}var a=e.stateNode;return null!==a&&"function"==typeof a.componentDidCatch&&(n.callback=function(){dl(0,t),"function"!=typeof r&&(null===Vs?Vs=new Set([this]):Vs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function gl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=_c.bind(null,e,t,n),t.then(e,e))}function hl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function yl(e,t,n,r,o){return 1&e.mode?(e.flags|=65536,e.lanes=o,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=za(-1,1)).tag=2,Ba(n,t,1))),n.lanes|=1),e)}var bl=w.ReactCurrentOwner,vl=!1;function wl(e,t,n,r){t.child=null===e?xa(t,null,n,r):ka(t,e.child,n,r)}function kl(e,t,n,r,o){n=n.render;var a=t.ref;return Na(t,o),r=hi(e,t,n,r,a,o),n=yi(),null===e||vl?(aa&&n&&ta(t),t.flags|=1,wl(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hl(e,t,o))}function xl(e,t,n,r,o){if(null===e){var a=n.type;return"function"!=typeof a||Pc(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Oc(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,Sl(e,t,a,r,o))}if(a=e.child,!(e.lanes&o)){var i=a.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&&e.ref===t.ref)return Hl(e,t,o)}return t.flags|=1,(e=Rc(a,r)).ref=t.ref,e.return=t,t.child=e}function Sl(e,t,n,r,o){if(null!==e){var a=e.memoizedProps;if(sr(a,r)&&e.ref===t.ref){if(vl=!1,t.pendingProps=r=a,!(e.lanes&o))return t.lanes=e.lanes,Hl(e,t,o);131072&e.flags&&(vl=!0)}}return Cl(e,t,n,r,o)}function El(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(1&t.mode){if(!(1073741824&n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Ao(Rs,Ps),Ps|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==a?a.baseLanes:n,Ao(Rs,Ps),Ps|=r}else t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Ao(Rs,Ps),Ps|=n;else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Ao(Rs,Ps),Ps|=r;return wl(e,t,o,n),t.child}function _l(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Cl(e,t,n,r,o){var a=Ro(n)?Lo:jo.current;return a=Po(t,a),Na(t,o),n=hi(e,t,n,r,a,o),r=yi(),null===e||vl?(aa&&r&&ta(t),t.flags|=1,wl(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Hl(e,t,o))}function Al(e,t,n,r,o){if(Ro(n)){var a=!0;Mo(t)}else a=!1;if(Na(t,o),null===t.stateNode)ql(e,t),il(t,n,r),sl(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,c=n.contextType;"object"==typeof c&&null!==c?c=La(c):c=Po(t,c=Ro(n)?Lo:jo.current);var u=n.getDerivedStateFromProps,d="function"==typeof u||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==c)&&ll(t,i,r,c),Ia=!1;var p=t.memoizedState;i.state=p,qa(t,r,i,o),s=t.memoizedState,l!==r||p!==s||No.current||Ia?("function"==typeof u&&(rl(t,n,u,r),s=t.memoizedState),(l=Ia||al(t,n,l,r,p,s,c))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4194308)):("function"==typeof i.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=c,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4194308),r=!1)}else{i=t.stateNode,Fa(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:nl(t.type,l),i.props=c,d=t.pendingProps,p=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=La(s):s=Po(t,s=Ro(n)?Lo:jo.current);var f=n.getDerivedStateFromProps;(u="function"==typeof f||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||p!==s)&&ll(t,i,r,s),Ia=!1,p=t.memoizedState,i.state=p,qa(t,r,i,o);var m=t.memoizedState;l!==d||p!==m||No.current||Ia?("function"==typeof f&&(rl(t,n,f,r),m=t.memoizedState),(c=Ia||al(t,n,c,r,p,m,s)||!1)?(u||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=c):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&p===e.memoizedState||(t.flags|=1024),r=!1)}return Tl(e,t,n,r,a,o)}function Tl(e,t,n,r,o,a){_l(e,t);var i=!!(128&t.flags);if(!r&&!i)return o&&Fo(t,n,!1),Hl(e,t,a);r=t.stateNode,bl.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=ka(t,e.child,null,a),t.child=ka(t,null,l,a)):wl(e,t,l,a),t.memoizedState=r.state,o&&Fo(t,n,!0),t.child}function jl(e){var t=e.stateNode;t.pendingContext?Do(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Do(0,t.context,!1),Ya(e,t.containerInfo)}function Nl(e,t,n,r,o){return ma(),ga(o),t.flags|=256,wl(e,t,n,r),t.child}var Ll,Pl,Rl,Ol,Dl={dehydrated:null,treeContext:null,retryLane:0};function Il(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ml(e,t,n){var r,o=t.pendingProps,i=ei.current,l=!1,s=!!(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&!!(2&i)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(i|=1),Ao(ei,1&i),null===e)return ua(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(1&t.mode?"$!"===e.data?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(s=o.children,e=o.fallback,l?(o=t.mode,l=t.child,s={mode:"hidden",children:s},1&o||null===l?l=Ic(s,o,0,null):(l.childLanes=0,l.pendingProps=s),e=Dc(e,o,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Il(n),t.memoizedState=Dl,e):Fl(t,s));if(null!==(i=e.memoizedState)&&null!==(r=i.dehydrated))return function(e,t,n,r,o,i,l){if(n)return 256&t.flags?(t.flags&=-257,zl(e,t,l,r=ul(Error(a(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=Ic({mode:"visible",children:r.children},o,0,null),(i=Dc(i,o,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,1&t.mode&&ka(t,e.child,null,l),t.child.memoizedState=Il(l),t.memoizedState=Dl,i);if(!(1&t.mode))return zl(e,t,l,null);if("$!"===o.data){if(r=o.nextSibling&&o.nextSibling.dataset)var s=r.dgst;return r=s,zl(e,t,l,r=ul(i=Error(a(419)),r,void 0))}if(s=!!(l&e.childLanes),vl||s){if(null!==(r=js)){switch(l&-l){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=o&(r.suspendedLanes|l)?0:o)&&o!==i.retryLane&&(i.retryLane=o,Da(e,o),nc(r,e,o,-1))}return gc(),zl(e,t,l,r=ul(Error(a(421))))}return"$?"===o.data?(t.flags|=128,t.child=e.child,t=Ac.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,oa=co(o.nextSibling),ra=t,aa=!0,ia=null,null!==e&&(Qo[Ko++]=Zo,Qo[Ko++]=Xo,Qo[Ko++]=Yo,Zo=e.id,Xo=e.overflow,Yo=t),t=Fl(t,r.children),t.flags|=4096,t)}(e,t,s,o,r,i,n);if(l){l=o.fallback,s=t.mode,r=(i=e.child).sibling;var c={mode:"hidden",children:o.children};return 1&s||t.child===i?(o=Rc(i,c)).subtreeFlags=14680064&i.subtreeFlags:((o=t.child).childLanes=0,o.pendingProps=c,t.deletions=null),null!==r?l=Rc(r,l):(l=Dc(l,s,n,null)).flags|=2,l.return=t,o.return=t,o.sibling=l,t.child=o,o=l,l=t.child,s=null===(s=e.child.memoizedState)?Il(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=Dl,o}return e=(l=e.child).sibling,o=Rc(l,{mode:"visible",children:o.children}),!(1&t.mode)&&(o.lanes=n),o.return=t,o.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function Fl(e,t){return(t=Ic({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function zl(e,t,n,r){return null!==r&&ga(r),ka(t,e.child,null,n),(e=Fl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Bl(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),ja(e.return,t,n)}function $l(e,t,n,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o)}function Ul(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(wl(e,t,r.children,n),2&(r=ei.current))r=1&r|2,t.flags|=128;else{if(null!==e&&128&e.flags)e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Bl(e,n,t);else if(19===e.tag)Bl(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Ao(ei,r),1&t.mode)switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===ti(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),$l(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===ti(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}$l(t,!0,n,null,a);break;case"together":$l(t,!1,null,null,void 0);break;default:t.memoizedState=null}else t.memoizedState=null;return t.child}function ql(e,t){!(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Hl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Is|=t.lanes,!(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Rc(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Rc(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Gl(e,t){if(!aa)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Vl(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&o.subtreeFlags,r|=14680064&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Wl(e,t,n){var r=t.pendingProps;switch(na(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Vl(t),null;case 1:case 17:return Ro(t.type)&&Oo(),Vl(t),null;case 3:return r=t.stateNode,Za(),Co(No),Co(jo),ri(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(pa(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&!(256&t.flags)||(t.flags|=1024,null!==ia&&(ic(ia),ia=null))),Pl(e,t),Vl(t),null;case 5:Ja(t);var o=Ka(Qa.current);if(n=t.type,null!==e&&null!=t.stateNode)Rl(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(a(166));return Vl(t),null}if(e=Ka(Va.current),pa(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[fo]=t,r[mo]=i,e=!!(1&t.mode),n){case"dialog":zr("cancel",r),zr("close",r);break;case"iframe":case"object":case"embed":zr("load",r);break;case"video":case"audio":for(o=0;o<\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[fo]=t,e[mo]=r,Ll(e,t,!1,!1),t.stateNode=e;e:{switch(s=ve(n,r),n){case"dialog":zr("cancel",e),zr("close",e),o=r;break;case"iframe":case"object":case"embed":zr("load",e),o=r;break;case"video":case"audio":for(o=0;oUs&&(t.flags|=128,r=!0,Gl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ti(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Gl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!s.alternate&&!aa)return Vl(t),null}else 2*Ze()-i.renderingStartTime>Us&&1073741824!==n&&(t.flags|=128,r=!0,Gl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ze(),t.sibling=null,n=ei.current,Ao(ei,r?1&n|2:1&n),t):(Vl(t),null);case 22:case 23:return dc(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&1&t.mode?!!(1073741824&Ps)&&(Vl(t),6&t.subtreeFlags&&(t.flags|=8192)):Vl(t),null;case 24:case 25:return null}throw Error(a(156,t.tag))}function Ql(e,t){switch(na(t),t.tag){case 1:return Ro(t.type)&&Oo(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Za(),Co(No),Co(jo),ri(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 5:return Ja(t),null;case 13:if(Co(ei),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(a(340));ma()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Co(ei),null;case 4:return Za(),null;case 10:return Ta(t.type._context),null;case 22:case 23:return dc(),null;default:return null}}Ll=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Pl=function(){},Rl=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Ka(Va.current);var a,i=null;switch(n){case"input":o=K(e,o),r=K(e,r),i=[];break;case"select":o=M({},o,{value:void 0}),r=M({},r,{value:void 0}),i=[];break;case"textarea":o=re(e,o),r=re(e,r),i=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=Jr)}for(u in be(n,r),n=null,o)if(!r.hasOwnProperty(u)&&o.hasOwnProperty(u)&&null!=o[u])if("style"===u){var s=o[u];for(a in s)s.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(l.hasOwnProperty(u)?i||(i=[]):(i=i||[]).push(u,null));for(u in r){var c=r[u];if(s=null!=o?o[u]:void 0,r.hasOwnProperty(u)&&c!==s&&(null!=c||null!=s))if("style"===u)if(s){for(a in s)!s.hasOwnProperty(a)||c&&c.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in c)c.hasOwnProperty(a)&&s[a]!==c[a]&&(n||(n={}),n[a]=c[a])}else n||(i||(i=[]),i.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,s=s?s.__html:void 0,null!=c&&s!==c&&(i=i||[]).push(u,c)):"children"===u?"string"!=typeof c&&"number"!=typeof c||(i=i||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(l.hasOwnProperty(u)?(null!=c&&"onScroll"===u&&zr("scroll",e),i||s===c||(i=[])):(i=i||[]).push(u,c))}n&&(i=i||[]).push("style",n);var u=i;(t.updateQueue=u)&&(t.flags|=4)}},Ol=function(e,t,n,r){n!==r&&(t.flags|=4)};var Kl=!1,Yl=!1,Zl="function"==typeof WeakSet?WeakSet:Set,Xl=null;function Jl(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(r){Ec(e,t,r)}else n.current=null}function es(e,t,n){try{n()}catch(r){Ec(e,t,r)}}var ts=!1;function ns(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,void 0!==a&&es(t,n,a)}o=o.next}while(o!==r)}}function rs(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function os(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function as(e){var t=e.alternate;null!==t&&(e.alternate=null,as(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[fo],delete t[mo],delete t[ho],delete t[yo],delete t[bo])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function is(e){return 5===e.tag||3===e.tag||4===e.tag}function ls(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||is(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ss(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(ss(e,t,n),e=e.sibling;null!==e;)ss(e,t,n),e=e.sibling}function cs(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(cs(e,t,n),e=e.sibling;null!==e;)cs(e,t,n),e=e.sibling}var us=null,ds=!1;function ps(e,t,n){for(n=n.child;null!==n;)fs(e,t,n),n=n.sibling}function fs(e,t,n){if(at&&"function"==typeof at.onCommitFiberUnmount)try{at.onCommitFiberUnmount(ot,n)}catch(l){}switch(n.tag){case 5:Yl||Jl(n,t);case 6:var r=us,o=ds;us=null,ps(e,t,n),ds=o,null!==(us=r)&&(ds?(e=us,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):us.removeChild(n.stateNode));break;case 18:null!==us&&(ds?(e=us,n=n.stateNode,8===e.nodeType?so(e.parentNode,n):1===e.nodeType&&so(e,n),Ut(e)):so(us,n.stateNode));break;case 4:r=us,o=ds,us=n.stateNode.containerInfo,ds=!0,ps(e,t,n),us=r,ds=o;break;case 0:case 11:case 14:case 15:if(!Yl&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){o=r=r.next;do{var a=o,i=a.destroy;a=a.tag,void 0!==i&&(2&a||4&a)&&es(n,t,i),o=o.next}while(o!==r)}ps(e,t,n);break;case 1:if(!Yl&&(Jl(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Ec(n,t,l)}ps(e,t,n);break;case 21:ps(e,t,n);break;case 22:1&n.mode?(Yl=(r=Yl)||null!==n.memoizedState,ps(e,t,n),Yl=r):ps(e,t,n);break;default:ps(e,t,n)}}function ms(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Zl),t.forEach((function(t){var r=Tc.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function gs(e,t){var n=t.deletions;if(null!==n)for(var r=0;ro&&(o=l),r&=~i}if(r=o,10<(r=(120>(r=Ze()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Es(r/1960))-r)){e.timeoutHandle=ro(kc.bind(null,e,Bs,qs),r);break}kc(e,Bs,qs);break;default:throw Error(a(329))}}}return rc(e,Ze()),e.callbackNode===n?oc.bind(null,e):null}function ac(e,t){var n=zs;return e.current.memoizedState.isDehydrated&&(pc(e,t).flags|=256),2!==(e=hc(e,t))&&(t=Bs,Bs=n,null!==t&&ic(t)),e}function ic(e){null===Bs?Bs=e:Bs.push.apply(Bs,e)}function lc(e,t){for(t&=~Fs,t&=~Ms,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0e?16:e,null===Qs)var r=!1;else{if(e=Qs,Qs=null,Ks=0,6&Ts)throw Error(a(331));var o=Ts;for(Ts|=4,Xl=e.current;null!==Xl;){var i=Xl,l=i.child;if(16&Xl.flags){var s=i.deletions;if(null!==s){for(var c=0;cZe()-$s?pc(e,0):Fs|=n),rc(e,t)}function Cc(e,t){0===t&&(1&e.mode?(t=ut,!(130023424&(ut<<=1))&&(ut=4194304)):t=1);var n=ec();null!==(e=Da(e,t))&&(yt(e,t,n),rc(e,n))}function Ac(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Cc(e,n)}function Tc(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}null!==r&&r.delete(t),Cc(e,n)}function jc(e,t){return We(e,t)}function Nc(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Lc(e,t,n,r){return new Nc(e,t,n,r)}function Pc(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Rc(e,t){var n=e.alternate;return null===n?((n=Lc(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Oc(e,t,n,r,o,i){var l=2;if(r=e,"function"==typeof e)Pc(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case S:return Dc(n.children,o,i,t);case E:l=8,o|=8;break;case _:return(e=Lc(12,n,t,2|o)).elementType=_,e.lanes=i,e;case j:return(e=Lc(13,n,t,o)).elementType=j,e.lanes=i,e;case N:return(e=Lc(19,n,t,o)).elementType=N,e.lanes=i,e;case R:return Ic(n,o,i,t);default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case C:l=10;break e;case A:l=9;break e;case T:l=11;break e;case L:l=14;break e;case P:l=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=Lc(l,n,t,o)).elementType=e,t.type=r,t.lanes=i,t}function Dc(e,t,n,r){return(e=Lc(7,e,r,t)).lanes=n,e}function Ic(e,t,n,r){return(e=Lc(22,e,r,t)).elementType=R,e.lanes=n,e.stateNode={isHidden:!1},e}function Mc(e,t,n){return(e=Lc(6,e,null,t)).lanes=n,e}function Fc(e,t,n){return(t=Lc(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function zc(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ht(0),this.expirationTimes=ht(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ht(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Bc(e,t,n,r,o,a,i,l,s){return e=new zc(e,t,n,l,s),1===t?(t=1,!0===a&&(t|=8)):t=0,a=Lc(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ma(a),e}function $c(e){if(!e)return To;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(a(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Ro(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(a(171))}if(1===e.tag){var n=e.type;if(Ro(n))return Io(e,n,t)}return t}function Uc(e,t,n,r,o,a,i,l,s){return(e=Bc(n,r,!0,e,0,a,0,l,s)).context=$c(null),n=e.current,(a=za(r=ec(),o=tc(n))).callback=null!=t?t:null,Ba(n,a,o),e.current.lanes=o,yt(e,o,r),rc(e,r),e}function qc(e,t,n,r){var o=t.current,a=ec(),i=tc(o);return n=$c(n),null===t.context?t.context=n:t.pendingContext=n,(t=za(a,i)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Ba(o,t,i))&&(nc(e,o,i,a),$a(e,o,i)),i}function Hc(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Gc(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n{"use strict";var r=n(961);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},961:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(2551)},115:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,c,u;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!a(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;for(u=e.entries();!(s=u.next()).done;)if(!a(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(u=e.entries();!(s=u.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(o&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(c=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,c[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==c[s]&&"__v"!==c[s]&&"__o"!==c[s]||!e.$$typeof)&&!a(e[c[s]],i[c[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return a(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},545:(e,t,n)=>{"use strict";n.d(t,{mg:()=>J,vd:()=>G});var r=n(6540),o=n(5556),a=n.n(o),i=n(115),l=n.n(i),s=n(311),c=n.n(s),u=n(2833),d=n.n(u);function p(){return p=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}var h={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},y={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},v={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(h).map((function(e){return h[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},x=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},E=function(e){var t=S(e,h.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},_=function(e){return S(e,"onChangeClientState")||function(){}},C=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return p({},e,t)}),{})},A=function(e,t){return t.filter((function(e){return void 0!==e[h.BASE]})).map((function(e){return e[h.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o /g,">").replace(/"/g,""").replace(/'/g,"'")},D=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},I=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},M=function(e,t){return t.map((function(t,n){var o,a=((o={key:n})["data-rh"]=!0,o);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?a.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:a[n]=t[e]})),r.createElement(e,a)}))},F=function(e,t,n){switch(e){case h.TITLE:return{toComponent:function(){return n=t.titleAttributes,(o={key:e=t.title})["data-rh"]=!0,a=I(n,o),[r.createElement(h.TITLE,a,e)];var e,n,o,a},toString:function(){return function(e,t,n,r){var o=D(n),a=N(t);return o?"<"+e+' data-rh="true" '+o+">"+O(a,r)+""+e+">":"<"+e+' data-rh="true">'+O(a,r)+""+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return I(t)},toString:function(){return D(t)}};default:return{toComponent:function(){return M(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+O(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===R.indexOf(e);return t+"<"+e+' data-rh="true" '+o+(i?"/>":">"+a+""+e+">")}),"")}(e,t,n)}}}},z=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,c=e.titleAttributes,u=e.linkTags,d=e.metaTags,p=e.scriptTags,f={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,o=L(e.metaTags,v),a=L(t,y),i=L(n,b);return{priorityMethods:{toComponent:function(){return[].concat(M(h.META,o.priority),M(h.LINK,a.priority),M(h.SCRIPT,i.priority))},toString:function(){return F(h.META,o.priority,r)+" "+F(h.LINK,a.priority,r)+" "+F(h.SCRIPT,i.priority,r)}},metaTags:o.default,linkTags:a.default,scriptTags:i.default}}(e);f=m.priorityMethods,u=m.linkTags,d=m.metaTags,p=m.scriptTags}return{priority:f,base:F(h.BASE,t,r),bodyAttributes:F("bodyAttributes",n,r),htmlAttributes:F("htmlAttributes",o,r),link:F(h.LINK,u,r),meta:F(h.META,d,r),noscript:F(h.NOSCRIPT,a,r),script:F(h.SCRIPT,p,r),style:F(h.STYLE,i,r),title:F(h.TITLE,{title:s,titleAttributes:c},r)}},B=[],$=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?B:n.instances},add:function(e){(n.canUseDOM?B:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?B:n.instances).indexOf(e);(n.canUseDOM?B:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=z({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},U=r.createContext({}),q=a().shape({setHelmet:a().func,helmetInstances:a().shape({get:a().func,add:a().func,remove:a().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new $(r.props.context,t.canUseDOM),r}return f(t,e),t.prototype.render=function(){return r.createElement(U.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:a().shape({helmet:a().shape()}),children:a().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var V=function(e,t){var n,r=document.head||document.querySelector(h.HEAD),o=r.querySelectorAll(e+"[data-rh]"),a=[].slice.call(o),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&("innerHTML"===o?r.innerHTML=t.innerHTML:"cssText"===o?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(o,void 0===t[o]?"":t[o]));r.setAttribute("data-rh","true"),a.some((function(e,t){return n=t,r.isEqualNode(e)}))?a.splice(n,1):i.push(r)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:a,newTags:i}},W=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),l=0;l=0;d-=1)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},Q=function(e,t){var n=e.baseTag,r=e.htmlAttributes,o=e.linkTags,a=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,c=e.styleTags,u=e.title,d=e.titleAttributes;W(h.BODY,e.bodyAttributes),W(h.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=N(e)),W(h.TITLE,t)}(u,d);var p={baseTag:V(h.BASE,n),linkTags:V(h.LINK,o),metaTags:V(h.META,a),noscriptTags:V(h.NOSCRIPT,i),scriptTags:V(h.SCRIPT,s),styleTags:V(h.STYLE,c)},f={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(f[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,f,m)},K=null,Y=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return p({},r,((t={})[n.type]=[].concat(r[n.type]||[],[p({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case h.TITLE:return p({},o,((t={})[r.type]=i,t.titleAttributes=p({},a),t));case h.BODY:return p({},o,{bodyAttributes:p({},a)});case h.HTML:return p({},o,{htmlAttributes:p({},a)});default:return p({},o,((n={})[r.type]=p({},a),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=p({},t);return Object.keys(e).forEach((function(t){var r;n=p({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return c()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),c()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,o={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,a=r.children,i=g(r,Z),l=Object.keys(i).reduce((function(e,t){return e[x[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,a),s){case h.FRAGMENT:t=n.mapChildrenToProps(a,t);break;case h.LINK:case h.META:case h.NOSCRIPT:case h.SCRIPT:case h.STYLE:o=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:o,newChildProps:l,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:a})}}})),this.mapArrayTypeChildrenToProps(o,t)},n.render=function(){var e=this.props,t=e.children,n=g(e,X),o=p({},n),a=n.helmetData;return t&&(o=this.mapChildrenToProps(t,o)),!a||a instanceof $||(a=new $(a.context,a.instances)),a?r.createElement(Y,p({},o,{context:a.value,helmetData:void 0})):r.createElement(U.Consumer,null,(function(e){return r.createElement(Y,p({},o,{context:e}))}))},t}(r.Component);J.propTypes={base:a().object,bodyAttributes:a().object,children:a().oneOfType([a().arrayOf(a().node),a().node]),defaultTitle:a().string,defer:a().bool,encodeSpecialCharacters:a().bool,htmlAttributes:a().object,link:a().arrayOf(a().object),meta:a().arrayOf(a().object),noscript:a().arrayOf(a().object),onChangeClientState:a().func,script:a().arrayOf(a().object),style:a().arrayOf(a().object),title:a().string,titleAttributes:a().object,titleTemplate:a().string,prioritizeSeoTags:a().bool,helmetData:a().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},2799:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,c=n?Symbol.for("react.context"):60110,u=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,g=n?Symbol.for("react.memo"):60115,h=n?Symbol.for("react.lazy"):60116,y=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,v=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case u:case d:case a:case l:case i:case f:return e;default:switch(e=e&&e.$$typeof){case c:case p:case h:case g:case s:return e;default:return t}}case o:return t}}}function x(e){return k(e)===d}t.AsyncMode=u,t.ConcurrentMode=d,t.ContextConsumer=c,t.ContextProvider=s,t.Element=r,t.ForwardRef=p,t.Fragment=a,t.Lazy=h,t.Memo=g,t.Portal=o,t.Profiler=l,t.StrictMode=i,t.Suspense=f,t.isAsyncMode=function(e){return x(e)||k(e)===u},t.isConcurrentMode=x,t.isContextConsumer=function(e){return k(e)===c},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===p},t.isFragment=function(e){return k(e)===a},t.isLazy=function(e){return k(e)===h},t.isMemo=function(e){return k(e)===g},t.isPortal=function(e){return k(e)===o},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===d||e===l||e===i||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===g||e.$$typeof===s||e.$$typeof===c||e.$$typeof===p||e.$$typeof===b||e.$$typeof===v||e.$$typeof===w||e.$$typeof===y)},t.typeOf=k},4363:(e,t,n)=>{"use strict";e.exports=n(2799)},3259:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t{"use strict";n.d(t,{u:()=>i,v:()=>l});var r=n(6347),o=n(8168),a=n(6540);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var o=e.path?(0,r.B6)(t,e):n.length?n[n.length-1].match:r.Ix.computeRootMatch(t);return o&&(n.push({route:e,match:o}),e.routes&&i(e.routes,t,n)),o})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?a.createElement(r.dO,n,e.map((function(e,n){return a.createElement(r.qh,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,o.A)({},n,{},t,{route:e})):a.createElement(e.component,(0,o.A)({},n,t,{route:e}))}})}))):null}},4625:(e,t,n)=>{"use strict";n.d(t,{I9:()=>d,Kd:()=>u,N_:()=>y,k2:()=>w});var r=n(6347),o=n(2892),a=n(6540),i=n(1513),l=n(8168),s=n(8587),c=n(1561),u=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o{"use strict";n.d(t,{B6:()=>S,Ix:()=>v,W6:()=>P,XZ:()=>b,dO:()=>N,qh:()=>E,zy:()=>R});var r=n(2892),o=n(6540),a=n(5556),i=n.n(a),l=n(1513),s=n(1561),c=n(8168),u=n(8505),d=n.n(u),p=(n(4363),n(8587)),f=(n(4146),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var g=o.createContext||function(e,t){var n,a,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,o=arguments.length,a=new Array(o),i=0;i{var r=n(4634);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return l(a(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,l="",u=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var m=e[i],g=n[2],h=n[3],y=n[4],b=n[5],v=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=g&&null!=m&&m!==g,x="+"===v||"*"===v,S="?"===v||"*"===v,E=n[2]||u,_=y||b;r.push({name:h||a++,prefix:g||"",delimiter:E,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:_?c(_):w?".*":"[^"+s(E)+"]+?"})}}return i{"use strict";var r=n(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,n){var r,a={},c=null,u=null;for(r in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,r)&&!s.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:c,ref:u,props:a,_owner:l.current}}t.Fragment=a,t.jsx=c,t.jsxs=c},5287:(e,t)=>{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,h={};function y(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function b(){}function v(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},b.prototype=y.prototype;var w=v.prototype=new b;w.constructor=v,g(w,y.prototype),w.isPureReactComponent=!0;var k=Array.isArray,x=Object.prototype.hasOwnProperty,S={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function _(e,t,r){var o,a={},i=null,l=null;if(null!=t)for(o in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)x.call(t,o)&&!E.hasOwnProperty(o)&&(a[o]=t[o]);var s=arguments.length-2;if(1===s)a.children=r;else if(1{"use strict";e.exports=n(5287)},4848:(e,t,n)=>{"use strict";e.exports=n(1020)},7463:(e,t)=>{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0>>1,o=e[r];if(!(0>>1;ra(s,n))ca(u,s)?(e[r]=u,e[c]=n,r=c):(e[r]=s,e[l]=n,r=l);else{if(!(ca(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var c=[],u=[],d=1,p=null,f=3,m=!1,g=!1,h=!1,y="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,v="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(u);null!==t;){if(null===t.callback)o(u);else{if(!(t.startTime<=e))break;o(u),t.sortIndex=t.expirationTime,n(c,t)}t=r(u)}}function k(e){if(h=!1,w(e),!g)if(null!==r(c))g=!0,R(x);else{var t=r(u);null!==t&&O(k,t.startTime-e)}}function x(e,n){g=!1,h&&(h=!1,b(C),C=-1),m=!0;var a=f;try{for(w(n),p=r(c);null!==p&&(!(p.expirationTime>n)||e&&!j());){var i=p.callback;if("function"==typeof i){p.callback=null,f=p.priorityLevel;var l=i(p.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?p.callback=l:p===r(c)&&o(c),w(n)}else o(c);p=r(c)}if(null!==p)var s=!0;else{var d=r(u);null!==d&&O(k,d.startTime-n),s=!1}return s}finally{p=null,f=a,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var S,E=!1,_=null,C=-1,A=5,T=-1;function j(){return!(t.unstable_now()-Te||125i?(e.sortIndex=a,n(u,e),null===r(c)&&e===r(u)&&(h?(b(C),C=-1):h=!0,O(k,a-i))):(e.sortIndex=l,n(c,e),g||m||(g=!0,R(x))),e},t.unstable_shouldYield=j,t.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}},9982:(e,t,n)=>{"use strict";e.exports=n(7463)},2833:e=>{e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"Astral Documentation",tagline:"Open source tools + infrastructure for decentralized spatial data",favicon:"img/favicon.ico",url:"https://docs.astral.global",baseUrl:"/",organizationName:"AstralProtocol",projectName:"astralprotocol",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{sidebarPath:"./sidebars.ts"},blog:{showReadingTime:!0},theme:{customCss:"./src/css/custom.css"}}]],themeConfig:{image:"img/docusaurus-social-card.jpg",navbar:{title:"Astral",logo:{alt:"Astral Logo",src:"img/logo.svg",href:"/docs/location-proof-protocol/introduction"},items:[{type:"docSidebar",sidebarId:"docs",position:"left",label:"Docs"},{href:"https://github.com/AstralProtocol/astralprotocol",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Community",items:[{label:"Telegram",href:"https://t.me/+UkTOSXnDcDM5ZTBk"},{label:"Twitter",href:"https://twitter.com/docusaurus"},{label:"Farcaster",href:"https://warpcast.com/astralprotocol"}]},{title:"More",items:[{label:"GitHub",href:"https://github.com/AstralProtocol/astralprotocol"}]}],copyright:"Copyright \xa9 2024 Astral. Built with Docusaurus."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,future:{experimental_storage:{type:"localStorage",namespace:!1},experimental_router:"browser"},onBrokenAnchors:"warn",onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{format:"mdx",mermaid:!1,mdx1Compat:{comments:!0,admonitions:!0,headingIds:!0},anchors:{maintainCase:!1}}}},8168:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;tr})},2892:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>o})},8587:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},4164:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;to});const o=function(){for(var e,t,n=0,o="",a=arguments.length;n {"use strict";n.d(t,{My:()=>A,f4:()=>ee});var r,o,a,i,l,s,c,u=n(6540),d=n(4164),p=Object.create,f=Object.defineProperty,m=Object.defineProperties,g=Object.getOwnPropertyDescriptor,h=Object.getOwnPropertyDescriptors,y=Object.getOwnPropertyNames,b=Object.getOwnPropertySymbols,v=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,x=(e,t,n)=>t in e?f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,S=(e,t)=>{for(var n in t||(t={}))w.call(t,n)&&x(e,n,t[n]);if(b)for(var n of b(t))k.call(t,n)&&x(e,n,t[n]);return e},E=(e,t)=>m(e,h(t)),_=(e,t)=>{var n={};for(var r in e)w.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&b)for(var r of b(e))t.indexOf(r)<0&&k.call(e,r)&&(n[r]=e[r]);return n},C=(r={"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=x.value.length,x=x.next){var E=x.value;if(t.length>e.length)return;if(!(E instanceof o)){var _,C=1;if(b){if(!(_=a(k,S,e,y))||_.index>=e.length)break;var A=_.index,T=_.index+_[0].length,j=S;for(j+=x.value.length;A>=j;)j+=(x=x.next).value.length;if(S=j-=x.value.length,x.value instanceof o)continue;for(var N=x;N!==t.tail&&(jd.reach&&(d.reach=O);var D=x.prev;if(P&&(D=s(t,D,P),S+=P.length),c(t,D,C),x=s(t,D,new o(p,h?r.tokenize(L,h):L,v,L)),R&&s(t,x,R),C>1){var I={cause:p+","+m,reach:O};i(e,t,n,x.prev,S,I),d&&I.reach>d.reach&&(d.reach=I.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,o={value:n,prev:t,next:r};return t.next=o,r.prev=o,e.length++,o}function c(e,t,n){for(var r=t.next,o=0;o"+a.content+""+a.tag+">"},r}();t.exports=n,n.default=n}},function(){return o||(0,r[y(r)[0]])((o={exports:{}}).exports,o),o.exports}),A=((e,t,n)=>(n=null!=e?p(v(e)):{},((e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let o of y(t))w.call(e,o)||o===n||f(e,o,{get:()=>t[o],enumerable:!(r=g(t,o))||r.enumerable});return e})(!t&&e&&e.__esModule?n:f(n,"default",{value:e,enumerable:!0}),e)))(C());A.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/?[\da-f]{1,8};/i]},A.languages.markup.tag.inside["attr-value"].inside.entity=A.languages.markup.entity,A.languages.markup.doctype.inside["internal-subset"].inside=A.languages.markup,A.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(A.languages.markup.tag,"addInlined",{value:function(e,t){var n;(t=((n=((n={})["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:A.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}))["language-"+t]={pattern:/[\s\S]+/,inside:A.languages[t]},{}))[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:n},A.languages.insertBefore("markup","cdata",t)}}),Object.defineProperty(A.languages.markup.tag,"addAttribute",{value:function(e,t){A.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:A.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),A.languages.html=A.languages.markup,A.languages.mathml=A.languages.markup,A.languages.svg=A.languages.markup,A.languages.xml=A.languages.extend("markup",{}),A.languages.ssml=A.languages.xml,A.languages.atom=A.languages.xml,A.languages.rss=A.languages.xml,a=A,i={pattern:/\\[\\(){}[\]^$+*?|.]/,alias:"escape"},s="(?:[^\\\\-]|"+(l=/\\(?:x[\da-fA-F]{2}|u[\da-fA-F]{4}|u\{[\da-fA-F]+\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/).source+")",s=RegExp(s+"-"+s),c={pattern:/(<|')[^<>']+(?=[>']$)/,lookbehind:!0,alias:"variable"},a.languages.regex={"char-class":{pattern:/((?:^|[^\\])(?:\\\\)*)\[(?:[^\\\]]|\\[\s\S])*\]/,lookbehind:!0,inside:{"char-class-negation":{pattern:/(^\[)\^/,lookbehind:!0,alias:"operator"},"char-class-punctuation":{pattern:/^\[|\]$/,alias:"punctuation"},range:{pattern:s,inside:{escape:l,"range-punctuation":{pattern:/-/,alias:"operator"}}},"special-escape":i,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},escape:l}},"special-escape":i,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:"class-name"},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:"keyword"},{pattern:/\\k<[^<>']+>/,alias:"keyword",inside:{"group-name":c}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:"function"},escape:l,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,alias:"punctuation",inside:{"group-name":c}},{pattern:/\)/,alias:"punctuation"}],quantifier:{pattern:/(?:[+*?]|\{\d+(?:,\d*)?\})[?+]?/,alias:"number"},alternation:{pattern:/\|/,alias:"keyword"}},A.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},A.languages.javascript=A.languages.extend("clike",{"class-name":[A.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),A.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,A.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:A.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:A.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:A.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:A.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:A.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),A.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:A.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),A.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),A.languages.markup&&(A.languages.markup.tag.addInlined("script","javascript"),A.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),A.languages.js=A.languages.javascript,A.languages.actionscript=A.languages.extend("javascript",{keyword:/\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\b/,operator:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<|>>?>?|[!=]=?)=?|[~?@]/}),A.languages.actionscript["class-name"].alias="function",delete A.languages.actionscript.parameter,delete A.languages.actionscript["literal-property"],A.languages.markup&&A.languages.insertBefore("actionscript","string",{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:A.languages.markup}}),function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(A),function(e){var t=e.languages.javadoclike={parameter:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*@(?:arg|arguments|param)\s+)\w+/m,lookbehind:!0},keyword:{pattern:/(^[\t ]*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m,lookbehind:!0},punctuation:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t="string"==typeof t?[t]:t).forEach((function(t){var r=function(e){e.inside||(e.inside={}),e.inside.rest=n},o="doc-comment";if(a=e.languages[t]){var a,i=a[o];if((i=i||(a=e.languages.insertBefore(t,"comment",{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:"comment"}}))[o])instanceof RegExp&&(i=a[o]={pattern:i}),Array.isArray(i))for(var l=0,s=i.length;l|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),{pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0});e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(A),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(A),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source,i=(e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(A),A.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:A.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},A.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,o=r.inside["interpolation-punctuation"],a=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run("before-tokenize",t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run("after-tokenize",t),t.tokens}function s(t,n,i){var s=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),c=0,u={},d=(s=l(s.map((function(e){if("string"==typeof e)return e;var n,r;for(e=e.content;-1!==t.indexOf((r=c++,n="___"+i.toUpperCase()+"_"+r+"___")););return u[n]=e,n})).join(""),n,i),Object.keys(u));return c=0,function t(n){for(var a=0;a=d.length)return;var i,s,p,f,m,g,h,y=n[a];"string"==typeof y||"string"==typeof y.content?(i=d[c],-1!==(h=(g="string"==typeof y?y:y.content).indexOf(i))&&(++c,s=g.substring(0,h),m=u[i],p=void 0,(f={})["interpolation-punctuation"]=o,3===(f=e.tokenize(m,f)).length&&((p=[1,1]).push.apply(p,l(f[1],e.languages.javascript,"javascript")),f.splice.apply(f,p)),p=new e.Token("interpolation",f,r.alias,m),f=g.substring(h+i.length),m=[],s&&m.push(s),m.push(p),f&&(t(g=[f]),m.push.apply(m,g)),"string"==typeof y?(n.splice.apply(n,[a,1].concat(m)),a+=m.length-1):y.content=m)):(h=y.content,Array.isArray(h)?t(h):t([h]))}}(s),new e.Token(i,s,"language-"+i,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var c={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return"string"==typeof e?e:Array.isArray(e)?e.map(u).join(""):u(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in c&&function t(n){for(var r=0,o=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(A),function(e){var t=e.languages.javascript,n=/\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source,r="(@(?:arg|argument|param|property)\\s+(?:"+n+"\\s+)?)";e.languages.jsdoc=e.languages.extend("javadoclike",{parameter:{pattern:RegExp(r+/(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),lookbehind:!0,inside:{punctuation:/\./}}}),e.languages.insertBefore("jsdoc","keyword",{"optional-parameter":{pattern:RegExp(r+/\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),lookbehind:!0,inside:{parameter:{pattern:/(^\[)[$\w\xA0-\uFFFF\.]+/,lookbehind:!0,inside:{punctuation:/\./}},code:{pattern:/(=)[\s\S]*(?=\]$)/,lookbehind:!0,inside:t,alias:"language-javascript"},punctuation:/[=[\]]/}},"class-name":[{pattern:RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(//g,(function(){return n}))),lookbehind:!0,inside:{punctuation:/\./}},{pattern:RegExp("(@[a-z]+\\s+)"+n),lookbehind:!0,inside:{string:t.string,number:t.number,boolean:t.boolean,keyword:e.languages.typescript.keyword,operator:/=>|\.\.\.|[&|?:*]/,punctuation:/[.,;=<>{}()[\]]/}}],example:{pattern:/(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,lookbehind:!0,inside:{code:{pattern:/^([\t ]*(?:\*\s*)?)\S.*$/m,lookbehind:!0,inside:t,alias:"language-javascript"}}}}),e.languages.javadoclike.addSupport("javascript",e.languages.jsdoc)}(A),function(e){e.languages.flow=e.languages.extend("javascript",{}),e.languages.insertBefore("flow","keyword",{type:[{pattern:/\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\b/,alias:"class-name"}]}),e.languages.flow["function-variable"].pattern=/(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/i,delete e.languages.flow.parameter,e.languages.insertBefore("flow","operator",{"flow-punctuation":{pattern:/\{\||\|\}/,alias:"punctuation"}}),Array.isArray(e.languages.flow.keyword)||(e.languages.flow.keyword=[e.languages.flow.keyword]),e.languages.flow.keyword.unshift({pattern:/(^|[^$]\b)(?:Class|declare|opaque|type)\b(?!\$)/,lookbehind:!0},{pattern:/(^|[^$]\B)\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\b(?!\$)/,lookbehind:!0})}(A),A.languages.n4js=A.languages.extend("javascript",{keyword:/\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/}),A.languages.insertBefore("n4js","constant",{annotation:{pattern:/@+\w+/,alias:"operator"}}),A.languages.n4jsd=A.languages.n4js,function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function a(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return o})),RegExp(e,t)}function i(t){for(var n=[],r=0;r "!==o.content[o.content.length-1].content&&n.push({tagName:l(o.content[0].content[1]),openedBraces:0}):0+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:a(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:a(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var l=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(l).join(""):""};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||i(e.tokens)}))}(A),function(e){var t=e.util.clone(e.languages.typescript);(t=(e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"],e.languages.tsx.tag)).pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(A),A.languages.swift={comment:{pattern:/(^|[^\\:])(?:\/\/.*|\/\*(?:[^/*]|\/(?!\*)|\*(?!\/)|\/\*(?:[^*]|\*(?!\/))*\*\/)*\*\/)/,lookbehind:!0,greedy:!0},"string-literal":[{pattern:RegExp(/(^|[^"#])/.source+"(?:"+/"(?:\\(?:\((?:[^()]|\([^()]*\))*\)|\r\n|[^(])|[^\\\r\n"])*"/.source+"|"+/"""(?:\\(?:\((?:[^()]|\([^()]*\))*\)|[^(])|[^\\"]|"(?!""))*"""/.source+")"+/(?!["#])/.source),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\\($/,alias:"punctuation"},punctuation:/\\(?=[\r\n])/,string:/[\s\S]+/}},{pattern:RegExp(/(^|[^"#])(#+)/.source+"(?:"+/"(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|\r\n|[^#])|[^\\\r\n])*?"/.source+"|"+/"""(?:\\(?:#+\((?:[^()]|\([^()]*\))*\)|[^#])|[^\\])*?"""/.source+")\\2"),lookbehind:!0,greedy:!0,inside:{interpolation:{pattern:/(\\#+\()(?:[^()]|\([^()]*\))*(?=\))/,lookbehind:!0,inside:null},"interpolation-punctuation":{pattern:/^\)|\\#+\($/,alias:"punctuation"},string:/[\s\S]+/}}],directive:{pattern:RegExp(/#/.source+"(?:"+/(?:elseif|if)\b/.source+"(?:[ \t]*"+/(?:![ \t]*)?(?:\b\w+\b(?:[ \t]*\((?:[^()]|\([^()]*\))*\))?|\((?:[^()]|\([^()]*\))*\))(?:[ \t]*(?:&&|\|\|))?/.source+")+|"+/(?:else|endif)\b/.source+")"),alias:"property",inside:{"directive-name":/^#\w+/,boolean:/\b(?:false|true)\b/,number:/\b\d+(?:\.\d+)*\b/,operator:/!|&&|\|\||[<>]=?/,punctuation:/[(),]/}},literal:{pattern:/#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\b/,alias:"constant"},"other-directive":{pattern:/#\w+\b/,alias:"property"},attribute:{pattern:/@\w+/,alias:"atrule"},"function-definition":{pattern:/(\bfunc\s+)\w+/,lookbehind:!0,alias:"function"},label:{pattern:/\b(break|continue)\s+\w+|\b[a-zA-Z_]\w*(?=\s*:\s*(?:for|repeat|while)\b)/,lookbehind:!0,alias:"important"},keyword:/\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\b/,boolean:/\b(?:false|true)\b/,nil:{pattern:/\bnil\b/,alias:"constant"},"short-argument":/\$\d+\b/,omit:{pattern:/\b_\b/,alias:"keyword"},number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,"class-name":/\b[A-Z](?:[A-Z_\d]*[a-z]\w*)?\b/,function:/\b[a-z_]\w*(?=\s*\()/i,constant:/\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,operator:/[-+*/%=!<>&|^~?]+|\.[.\-+*/%=!<>&|^~?]+/,punctuation:/[{}[\]();,.:\\]/},A.languages.swift["string-literal"].forEach((function(e){e.inside.interpolation.inside=A.languages.swift})),function(e){e.languages.kotlin=e.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\b/,lookbehind:!0},function:[{pattern:/(?:`[^\r\n`]+`|\b\w+)(?=\s*\()/,greedy:!0},{pattern:/(\.)(?:`[^\r\n`]+`|\w+)(?=\s*\{)/,lookbehind:!0,greedy:!0}],number:/\b(?:0[xX][\da-fA-F]+(?:_[\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete e.languages.kotlin["class-name"];var t={"interpolation-punctuation":{pattern:/^\$\{?|\}$/,alias:"punctuation"},expression:{pattern:/[\s\S]+/,inside:e.languages.kotlin}};e.languages.insertBefore("kotlin","string",{"string-literal":[{pattern:/"""(?:[^$]|\$(?:(?!\{)|\{[^{}]*\}))*?"""/,alias:"multiline",inside:{interpolation:{pattern:/\$(?:[a-z_]\w*|\{[^{}]*\})/i,inside:t},string:/[\s\S]+/}},{pattern:/"(?:[^"\\\r\n$]|\\.|\$(?:(?!\{)|\{[^{}]*\}))*"/,alias:"singleline",inside:{interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$(?:[a-z_]\w*|\{[^{}]*\})/i,lookbehind:!0,inside:t},string:/[\s\S]+/}}],char:{pattern:/'(?:[^'\\\r\n]|\\(?:.|u[a-fA-F0-9]{0,4}))'/,greedy:!0}}),delete e.languages.kotlin.string,e.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),e.languages.insertBefore("kotlin","function",{label:{pattern:/\b\w+@|@\w+\b/,alias:"symbol"}}),e.languages.kt=e.languages.kotlin,e.languages.kts=e.languages.kotlin}(A),A.languages.c=A.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),A.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),A.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},A.languages.c.string],char:A.languages.c.char,comment:A.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:A.languages.c}}}}),A.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete A.languages.c.boolean,A.languages.objectivec=A.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete A.languages.objectivec["class-name"],A.languages.objc=A.languages.objectivec,A.languages.reason=A.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),A.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete A.languages.reason.function,function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,(function(){return t}));t=t.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<=?|>>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(A),A.languages.go=A.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),A.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete A.languages.go["class-name"],function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(A),A.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},A.languages.python["string-interpolation"].inside.interpolation.inside.rest=A.languages.python,A.languages.py=A.languages.python;((e,t)=>{for(var n in t)f(e,n,{get:t[n],enumerable:!0})})({},{dracula:()=>T,duotoneDark:()=>j,duotoneLight:()=>N,github:()=>L,jettwaveDark:()=>H,jettwaveLight:()=>G,nightOwl:()=>P,nightOwlLight:()=>R,oceanicNext:()=>I,okaidia:()=>M,oneDark:()=>V,oneLight:()=>W,palenight:()=>F,shadesOfPurple:()=>z,synthwave84:()=>B,ultramin:()=>$,vsDark:()=>U,vsLight:()=>q});var T={plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},j={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},N={plain:{backgroundColor:"#faf8f5",color:"#728fcb"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#b6ad9a"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#063289"}},{types:["property","function"],style:{color:"#b29762"}},{types:["tag-id","selector","atrule-id"],style:{color:"#2d2006"}},{types:["attr-name"],style:{color:"#896724"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule"],style:{color:"#728fcb"}},{types:["placeholder","variable"],style:{color:"#93abdc"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#896724"}}]},L={plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},P={plain:{color:"#d6deeb",backgroundColor:"#011627"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(99, 119, 119)",fontStyle:"italic"}},{types:["string","url"],style:{color:"rgb(173, 219, 103)"}},{types:["variable"],style:{color:"rgb(214, 222, 235)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation"],style:{color:"rgb(199, 146, 234)"}},{types:["selector","doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(255, 203, 139)"}},{types:["tag","operator","keyword"],style:{color:"rgb(127, 219, 202)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["property"],style:{color:"rgb(128, 203, 196)"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}}]},R={plain:{color:"#403f53",backgroundColor:"#FBFBFB"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)",fontStyle:"italic"}},{types:["inserted","attr-name"],style:{color:"rgb(72, 118, 214)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(152, 159, 177)",fontStyle:"italic"}},{types:["string","builtin","char","constant","url"],style:{color:"rgb(72, 118, 214)"}},{types:["variable"],style:{color:"rgb(201, 103, 101)"}},{types:["number"],style:{color:"rgb(170, 9, 130)"}},{types:["punctuation"],style:{color:"rgb(153, 76, 195)"}},{types:["function","selector","doctype"],style:{color:"rgb(153, 76, 195)",fontStyle:"italic"}},{types:["class-name"],style:{color:"rgb(17, 17, 17)"}},{types:["tag"],style:{color:"rgb(153, 76, 195)"}},{types:["operator","property","keyword","namespace"],style:{color:"rgb(12, 150, 155)"}},{types:["boolean"],style:{color:"rgb(188, 84, 84)"}}]},O="#c5a5c5",D="#8dc891",I={plain:{backgroundColor:"#282c34",color:"#ffffff"},styles:[{types:["attr-name"],style:{color:O}},{types:["attr-value"],style:{color:D}},{types:["comment","block-comment","prolog","doctype","cdata","shebang"],style:{color:"#999999"}},{types:["property","number","function-name","constant","symbol","deleted"],style:{color:"#5a9bcf"}},{types:["boolean"],style:{color:"#ff8b50"}},{types:["tag"],style:{color:"#fc929e"}},{types:["string"],style:{color:D}},{types:["punctuation"],style:{color:D}},{types:["selector","char","builtin","inserted"],style:{color:"#D8DEE9"}},{types:["function"],style:{color:"#79b6f2"}},{types:["operator","entity","url","variable"],style:{color:"#d7deea"}},{types:["keyword"],style:{color:O}},{types:["atrule","class-name"],style:{color:"#FAC863"}},{types:["important"],style:{fontWeight:"400"}},{types:["bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}}]},M={plain:{color:"#f8f8f2",backgroundColor:"#272822"},styles:[{types:["changed"],style:{color:"rgb(162, 191, 252)",fontStyle:"italic"}},{types:["deleted"],style:{color:"#f92672",fontStyle:"italic"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)",fontStyle:"italic"}},{types:["comment"],style:{color:"#8292a2",fontStyle:"italic"}},{types:["string","url"],style:{color:"#a6e22e"}},{types:["variable"],style:{color:"#f8f8f2"}},{types:["number"],style:{color:"#ae81ff"}},{types:["builtin","char","constant","function","class-name"],style:{color:"#e6db74"}},{types:["punctuation"],style:{color:"#f8f8f2"}},{types:["selector","doctype"],style:{color:"#a6e22e",fontStyle:"italic"}},{types:["tag","operator","keyword"],style:{color:"#66d9ef"}},{types:["boolean"],style:{color:"#ae81ff"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)",opacity:.7}},{types:["tag","property"],style:{color:"#f92672"}},{types:["attr-name"],style:{color:"#a6e22e !important"}},{types:["doctype"],style:{color:"#8292a2"}},{types:["rule"],style:{color:"#e6db74"}}]},F={plain:{color:"#bfc7d5",backgroundColor:"#292d3e"},styles:[{types:["comment"],style:{color:"rgb(105, 112, 152)",fontStyle:"italic"}},{types:["string","inserted"],style:{color:"rgb(195, 232, 141)"}},{types:["number"],style:{color:"rgb(247, 140, 108)"}},{types:["builtin","char","constant","function"],style:{color:"rgb(130, 170, 255)"}},{types:["punctuation","selector"],style:{color:"rgb(199, 146, 234)"}},{types:["variable"],style:{color:"rgb(191, 199, 213)"}},{types:["class-name","attr-name"],style:{color:"rgb(255, 203, 107)"}},{types:["tag","deleted"],style:{color:"rgb(255, 85, 114)"}},{types:["operator"],style:{color:"rgb(137, 221, 255)"}},{types:["boolean"],style:{color:"rgb(255, 88, 116)"}},{types:["keyword"],style:{fontStyle:"italic"}},{types:["doctype"],style:{color:"rgb(199, 146, 234)",fontStyle:"italic"}},{types:["namespace"],style:{color:"rgb(178, 204, 214)"}},{types:["url"],style:{color:"rgb(221, 221, 221)"}}]},z={plain:{color:"#9EFEFF",backgroundColor:"#2D2A55"},styles:[{types:["changed"],style:{color:"rgb(255, 238, 128)"}},{types:["deleted"],style:{color:"rgba(239, 83, 80, 0.56)"}},{types:["inserted"],style:{color:"rgb(173, 219, 103)"}},{types:["comment"],style:{color:"rgb(179, 98, 255)",fontStyle:"italic"}},{types:["punctuation"],style:{color:"rgb(255, 255, 255)"}},{types:["constant"],style:{color:"rgb(255, 98, 140)"}},{types:["string","url"],style:{color:"rgb(165, 255, 144)"}},{types:["variable"],style:{color:"rgb(255, 238, 128)"}},{types:["number","boolean"],style:{color:"rgb(255, 98, 140)"}},{types:["attr-name"],style:{color:"rgb(255, 180, 84)"}},{types:["keyword","operator","property","namespace","tag","selector","doctype"],style:{color:"rgb(255, 157, 0)"}},{types:["builtin","char","constant","function","class-name"],style:{color:"rgb(250, 208, 0)"}}]},B={plain:{backgroundColor:"linear-gradient(to bottom, #2a2139 75%, #34294f)",backgroundImage:"#34294f",color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"},styles:[{types:["comment","block-comment","prolog","doctype","cdata"],style:{color:"#495495",fontStyle:"italic"}},{types:["punctuation"],style:{color:"#ccc"}},{types:["tag","attr-name","namespace","number","unit","hexcode","deleted"],style:{color:"#e2777a"}},{types:["property","selector"],style:{color:"#72f1b8",textShadow:"0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475"}},{types:["function-name"],style:{color:"#6196cc"}},{types:["boolean","selector-id","function"],style:{color:"#fdfdfd",textShadow:"0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975"}},{types:["class-name","maybe-class-name","builtin"],style:{color:"#fff5f6",textShadow:"0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75"}},{types:["constant","symbol"],style:{color:"#f92aad",textShadow:"0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3"}},{types:["important","atrule","keyword","selector-class"],style:{color:"#f4eee4",textShadow:"0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575"}},{types:["string","char","attr-value","regex","variable"],style:{color:"#f87c32"}},{types:["parameter"],style:{fontStyle:"italic"}},{types:["entity","url"],style:{color:"#67cdcc"}},{types:["operator"],style:{color:"ffffffee"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["entity"],style:{cursor:"help"}},{types:["inserted"],style:{color:"green"}}]},$={plain:{color:"#282a2e",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(197, 200, 198)"}},{types:["string","number","builtin","variable"],style:{color:"rgb(150, 152, 150)"}},{types:["class-name","function","tag","attr-name"],style:{color:"rgb(40, 42, 46)"}}]},U={plain:{color:"#9CDCFE",backgroundColor:"#1E1E1E"},styles:[{types:["prolog"],style:{color:"rgb(0, 0, 128)"}},{types:["comment"],style:{color:"rgb(106, 153, 85)"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"rgb(86, 156, 214)"}},{types:["number","inserted"],style:{color:"rgb(181, 206, 168)"}},{types:["constant"],style:{color:"rgb(100, 102, 149)"}},{types:["attr-name","variable"],style:{color:"rgb(156, 220, 254)"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"rgb(206, 145, 120)"}},{types:["selector"],style:{color:"rgb(215, 186, 125)"}},{types:["tag"],style:{color:"rgb(78, 201, 176)"}},{types:["tag"],languages:["markup"],style:{color:"rgb(86, 156, 214)"}},{types:["punctuation","operator"],style:{color:"rgb(212, 212, 212)"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"rgb(220, 220, 170)"}},{types:["class-name"],style:{color:"rgb(78, 201, 176)"}},{types:["char"],style:{color:"rgb(209, 105, 105)"}}]},q={plain:{color:"#000000",backgroundColor:"#ffffff"},styles:[{types:["comment"],style:{color:"rgb(0, 128, 0)"}},{types:["builtin"],style:{color:"rgb(0, 112, 193)"}},{types:["number","variable","inserted"],style:{color:"rgb(9, 134, 88)"}},{types:["operator"],style:{color:"rgb(0, 0, 0)"}},{types:["constant","char"],style:{color:"rgb(129, 31, 63)"}},{types:["tag"],style:{color:"rgb(128, 0, 0)"}},{types:["attr-name"],style:{color:"rgb(255, 0, 0)"}},{types:["deleted","string"],style:{color:"rgb(163, 21, 21)"}},{types:["changed","punctuation"],style:{color:"rgb(4, 81, 165)"}},{types:["function","keyword"],style:{color:"rgb(0, 0, 255)"}},{types:["class-name"],style:{color:"rgb(38, 127, 153)"}}]},H={plain:{color:"#f8fafc",backgroundColor:"#011627"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#569CD6"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#f8fafc"}},{types:["attr-name","variable"],style:{color:"#9CDCFE"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#cbd5e1"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#D4D4D4"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#7dd3fc"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},G={plain:{color:"#0f172a",backgroundColor:"#f1f5f9"},styles:[{types:["prolog"],style:{color:"#000080"}},{types:["comment"],style:{color:"#6A9955"}},{types:["builtin","changed","keyword","interpolation-punctuation"],style:{color:"#0c4a6e"}},{types:["number","inserted"],style:{color:"#B5CEA8"}},{types:["constant"],style:{color:"#0f172a"}},{types:["attr-name","variable"],style:{color:"#0c4a6e"}},{types:["deleted","string","attr-value","template-punctuation"],style:{color:"#64748b"}},{types:["selector"],style:{color:"#D7BA7D"}},{types:["tag"],style:{color:"#0ea5e9"}},{types:["tag"],languages:["markup"],style:{color:"#0ea5e9"}},{types:["punctuation","operator"],style:{color:"#475569"}},{types:["punctuation"],languages:["markup"],style:{color:"#808080"}},{types:["function"],style:{color:"#0e7490"}},{types:["class-name"],style:{color:"#0ea5e9"}},{types:["char"],style:{color:"#D16969"}}]},V={plain:{backgroundColor:"hsl(220, 13%, 18%)",color:"hsl(220, 14%, 71%)",textShadow:"0 1px rgba(0, 0, 0, 0.3)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(220, 10%, 40%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(220, 14%, 71%)"}},{types:["attr-name","class-name","maybe-class-name","boolean","constant","number","atrule"],style:{color:"hsl(29, 54%, 61%)"}},{types:["keyword"],style:{color:"hsl(286, 60%, 67%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(355, 65%, 65%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value"],style:{color:"hsl(95, 38%, 62%)"}},{types:["variable","operator","function"],style:{color:"hsl(207, 82%, 66%)"}},{types:["url"],style:{color:"hsl(187, 47%, 55%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(220, 14%, 71%)"}}]},W={plain:{backgroundColor:"hsl(230, 1%, 98%)",color:"hsl(230, 8%, 24%)"},styles:[{types:["comment","prolog","cdata"],style:{color:"hsl(230, 4%, 64%)"}},{types:["doctype","punctuation","entity"],style:{color:"hsl(230, 8%, 24%)"}},{types:["attr-name","class-name","boolean","constant","number","atrule"],style:{color:"hsl(35, 99%, 36%)"}},{types:["keyword"],style:{color:"hsl(301, 63%, 40%)"}},{types:["property","tag","symbol","deleted","important"],style:{color:"hsl(5, 74%, 59%)"}},{types:["selector","string","char","builtin","inserted","regex","attr-value","punctuation"],style:{color:"hsl(119, 34%, 47%)"}},{types:["variable","operator","function"],style:{color:"hsl(221, 87%, 60%)"}},{types:["url"],style:{color:"hsl(198, 99%, 37%)"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"hsl(230, 8%, 24%)"}}]},Q=(e,t)=>{const{plain:n}=e,r=e.styles.reduce(((e,n)=>{const{languages:r,style:o}=n;return r&&!r.includes(t)||n.types.forEach((t=>{const n=S(S({},e[t]),o);e[t]=n})),e}),{});return r.root=n,r.plain=E(S({},n),{backgroundColor:void 0}),r},K=/\r\n|\r|\n/,Y=e=>{0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},Z=(e,t)=>{const n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},X=e=>{const t=[[]],n=[e],r=[0],o=[e.length];let a=0,i=0,l=[];const s=[l];for(;i>-1;){for(;(a=r[i]++)0?c:["plain"],e=u):(c=Z(c,u.type),u.alias&&(c=Z(c,u.alias)),e=u.content),"string"!=typeof e){i++,t.push(c),n.push(e),r.push(0),o.push(e.length);continue}const d=e.split(K),p=d.length;l.push({types:c,content:d[0]});for(let t=1;t{const a=t.toLowerCase(),i=((e,t)=>{const[n,r]=(0,u.useState)(Q(t,e)),o=(0,u.useRef)(),a=(0,u.useRef)();return(0,u.useEffect)((()=>{t===o.current&&e===a.current||(o.current=t,a.current=e,r(Q(t,e)))}),[e,t]),n})(a,r),l=(e=>(0,u.useCallback)((t=>{var n=t,{className:r,style:o,line:a}=n,i=_(n,["className","style","line"]);const l=E(S({},i),{className:(0,d.A)("token-line",r)});return"object"==typeof e&&"plain"in e&&(l.style=e.plain),"object"==typeof o&&(l.style=S(S({},l.style||{}),o)),l}),[e]))(i),s=(e=>{const t=(0,u.useCallback)((({types:t,empty:n})=>{if(null!=e)return 1===t.length&&"plain"===t[0]?null!=n?{display:"inline-block"}:void 0:1===t.length&&null!=n?e[t[0]]:Object.assign(null!=n?{display:"inline-block"}:{},...t.map((t=>e[t])))}),[e]);return(0,u.useCallback)((e=>{var n=e,{token:r,className:o,style:a}=n,i=_(n,["token","className","style"]);const l=E(S({},i),{className:(0,d.A)("token",...r.types,o),children:r.content,style:t(r)});return null!=a&&(l.style=S(S({},l.style||{}),a)),l}),[t])})(i),c=(({prism:e,code:t,grammar:n,language:r})=>{const o=(0,u.useRef)(e);return(0,u.useMemo)((()=>{if(null==n)return X([t]);const e={code:t,grammar:n,language:r,tokens:[]};return o.current.hooks.run("before-tokenize",e),e.tokens=o.current.tokenize(t,n),o.current.hooks.run("after-tokenize",e),X(e.tokens)}),[t,n,r])})({prism:o,language:a,code:n,grammar:o.languages[a]});return e({tokens:c,className:`prism-code language-${a}`,style:null!=i?i.root:{},getLineProps:l,getTokenProps:s})},ee=e=>(0,u.createElement)(J,E(S({},e),{prism:e.prism||A,theme:e.theme||U,code:e.code,language:e.language}))},1561:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=!0,o="Invariant failed";function a(e,t){if(!e){if(r)throw new Error(o);var n="function"==typeof t?t():t,a=n?"".concat(o,": ").concat(n):o;throw new Error(a)}}},2654:e=>{"use strict";e.exports={}},4054:e=>{"use strict";e.exports=JSON.parse('{"/blog-b2f":{"__comp":"a6aa9e1f","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"__props":"c15d9823"},"/blog/archive-182":{"__comp":"9e4087bc","__context":{"plugin":"36994c47"},"__props":"f81c1134"},"/blog/first-blog-post-89a":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"e273c56f"},"/blog/long-blog-post-9ad":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"73664a40"},"/blog/mdx-blog-post-e9f":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"59362658"},"/blog/tags-287":{"__comp":"01a85c17","__context":{"plugin":"36994c47"},"sidebar":"814f3328","__props":"3a2db09e"},"/blog/tags/docusaurus-704":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"f4f34a3a"},{"content":"8717b14a"},{"content":"925b3f96"}],"__props":"3217192f"},"/blog/tags/facebook-858":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"}],"__props":"e5aefb32"},"/blog/tags/hello-299":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"7661071f"},{"content":"8717b14a"}],"__props":"f82cd581"},"/blog/tags/hola-00d":{"__comp":"6875c492","__context":{"plugin":"36994c47"},"sidebar":"814f3328","items":[{"content":"925b3f96"}],"__props":"5e90a9b3"},"/blog/welcome-d2b":{"__comp":"ccc49370","__context":{"data":{"blogMetadata":"acecf23e"},"plugin":"36994c47"},"sidebar":"814f3328","content":"d9f32620"},"/markdown-page-3d7":{"__comp":"1f391b9e","__context":{"plugin":"a7456010"},"content":"393be207"},"/docs-536":{"__comp":"5e95c892","__context":{"plugin":"aba21aa0"}},"/docs-cb5":{"__comp":"a7bd4aaa","__props":"0058b4c6"},"/docs-205":{"__comp":"a94703ab"},"/docs/core-concepts/decentralized-spatial-data-0ea":{"__comp":"17896441","content":"a8f61235"},"/docs/core-concepts/location-proofs-ed4":{"__comp":"17896441","content":"fa823849"},"/docs/core-concepts/onchain-geospatial-9ba":{"__comp":"17896441","content":"ce48dac6"},"/docs/core-concepts/what-is-spatial-data-b74":{"__comp":"17896441","content":"7ae2cc57"},"/docs/developer-resources/location-attestations-964":{"__comp":"17896441","content":"9176b25c"},"/docs/developer-resources/quickstart-a05":{"__comp":"17896441","content":"6edd94a7"},"/docs/developer-resources/spatial-registries-145":{"__comp":"17896441","content":"00fb3d82"},"/docs/examples-4b9":{"__comp":"17896441","content":"09d5ad39"},"/docs/hello-7ae":{"__comp":"17896441","content":"9dfd250b"},"/docs/intro-853":{"__comp":"17896441","content":"0e384e19"},"/docs/introducing-astral-2e2":{"__comp":"17896441","content":"4e345e3b"},"/docs/location-proof-protocol/architecture-f1f":{"__comp":"17896441","content":"1b6ec5d4"},"/docs/location-proof-protocol/eas-schema-841":{"__comp":"17896441","content":"2c1b52bf"},"/docs/location-proof-protocol/introduction-2a1":{"__comp":"17896441","content":"003da42b"},"/docs/location-proof-protocol/location-types-46b":{"__comp":"17896441","content":"b5b6e5e3"},"/docs/location-proof-protocol/media-types-ae6":{"__comp":"17896441","content":"207666d2"},"/docs/location-proof-protocol/rationale-790":{"__comp":"17896441","content":"f0e24734"},"/docs/location-proof-protocol/strategies-recipes-187":{"__comp":"17896441","content":"584535cc"},"/docs/spatial-registries/logbook-de3":{"__comp":"17896441","content":"bd6d0e35"},"/docs/spatial-registries/spatial-sol-4b0":{"__comp":"17896441","content":"35131ec2"},"/docs/tutorial-basics/congratulations-70e":{"__comp":"17896441","content":"822bd8ab"},"/docs/tutorial-basics/create-a-blog-post-315":{"__comp":"17896441","content":"533a09ca"},"/docs/tutorial-basics/create-a-document-f86":{"__comp":"17896441","content":"1e4232ab"},"/docs/tutorial-basics/create-a-page-9f6":{"__comp":"17896441","content":"5c868d36"},"/docs/tutorial-basics/deploy-your-site-b91":{"__comp":"17896441","content":"f55d3e7a"},"/docs/tutorial-basics/markdown-features-272":{"__comp":"17896441","content":"18c41134"},"/docs/tutorial-extras/manage-docs-versions-a34":{"__comp":"17896441","content":"dff1c289"},"/docs/tutorial-extras/translate-your-site-739":{"__comp":"17896441","content":"e44a2883"},"/-e5f":{"__comp":"1df93b7f","__context":{"plugin":"a7456010"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[1869],(()=>{return t=8536,e(e.s=t);var t}));e.O()}]);
\ No newline at end of file
diff --git a/assets/js/main.2164645d.js.LICENSE.txt b/assets/js/main.2164645d.js.LICENSE.txt
new file mode 100644
index 0000000..91dc894
--- /dev/null
+++ b/assets/js/main.2164645d.js.LICENSE.txt
@@ -0,0 +1,64 @@
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */
+
+/*! Bundled license information:
+
+prismjs/prism.js:
+ (**
+ * Prism: Lightweight, robust, elegant syntax highlighting
+ *
+ * @license MIT
+ * @author Lea Verou
+ * @namespace
+ * @public
+ *)
+*/
+
+/**
+ * @license React
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-jsx-runtime.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
diff --git a/assets/js/runtime~main.ee2fcbd6.js b/assets/js/runtime~main.ee2fcbd6.js
new file mode 100644
index 0000000..87be12c
--- /dev/null
+++ b/assets/js/runtime~main.ee2fcbd6.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,c,f,t,r={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var c=d[e]={id:e,loaded:!1,exports:{}};return r[e].call(c.exports,c,c.exports,b),c.loaded=!0,c.exports}b.m=r,b.c=d,e=[],b.O=(a,c,f,t)=>{if(!c){var r=1/0;for(i=0;i=t)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(d=!1,t0&&e[i-1][2]>t;i--)e[i]=e[i-1];e[i]=[c,f,t]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var t=Object.create(null);b.r(t);var r={};a=a||[null,c({}),c([]),c(c)];for(var d=2&f&&e;"object"==typeof d&&!~a.indexOf(d);d=c(d))Object.getOwnPropertyNames(d).forEach((a=>r[a]=()=>e[a]));return r.default=()=>e,b.d(t,r),t},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({637:"003da42b",849:"0058b4c6",981:"ce48dac6",1235:"a7456010",1450:"f0e24734",1724:"dff1c289",1798:"bd6d0e35",1864:"09d5ad39",1903:"acecf23e",1953:"1e4232ab",1972:"73664a40",1974:"5c868d36",2148:"207666d2",2382:"2c1b52bf",2711:"9e4087bc",2748:"822bd8ab",2887:"9dfd250b",3098:"533a09ca",3249:"ccc49370",3276:"e5aefb32",3637:"f4f34a3a",3666:"35131ec2",3694:"8717b14a",3764:"7ae2cc57",3874:"9176b25c",3976:"0e384e19",4134:"393be207",4192:"00fb3d82",4365:"1b6ec5d4",4583:"1df93b7f",4584:"f82cd581",4736:"e44a2883",4813:"6875c492",5557:"d9f32620",5742:"aba21aa0",6061:"1f391b9e",7098:"a7bd4aaa",7174:"4e345e3b",7298:"b5b6e5e3",7472:"814f3328",7643:"a6aa9e1f",8025:"5e90a9b3",8121:"3a2db09e",8130:"f81c1134",8146:"c15d9823",8209:"01a85c17",8401:"17896441",8462:"3217192f",8609:"925b3f96",8623:"584535cc",8737:"7661071f",8863:"f55d3e7a",9002:"fa823849",9048:"a94703ab",9103:"6edd94a7",9262:"18c41134",9269:"a8f61235",9325:"59362658",9328:"e273c56f",9647:"5e95c892",9858:"36994c47"}[e]||e)+"."+{637:"767baa12",849:"1baed65d",981:"c8131e26",1235:"5f9bbb01",1450:"b195996c",1538:"a265ec9d",1724:"9333c787",1798:"413a63d4",1864:"24aea618",1903:"92dddac5",1953:"81526a43",1972:"93ba7b65",1974:"00dc99bc",2148:"a9f47421",2237:"fe867cfb",2382:"3592ad26",2711:"9b70b1ae",2748:"daee8353",2887:"e705d71e",3098:"b8570790",3242:"e2456824",3249:"a9298228",3276:"33ae4d86",3637:"b47754e9",3666:"82b557e5",3694:"a93f16c9",3764:"0c88ed34",3874:"8a4aa6a5",3976:"00bed4f2",4134:"a0ef7dd4",4192:"a8ad1435",4365:"440a55b5",4583:"0275efec",4584:"c160cd7f",4736:"1dd47946",4813:"ab63eb90",5557:"2564a5e9",5742:"ed09cce9",6061:"cb5e65be",7098:"b74e8d88",7174:"0aaadb8d",7298:"9d608202",7472:"5dfaceaf",7643:"02f3ef1b",8025:"111c581f",8121:"39dab5fe",8130:"e9ba17ee",8146:"a40c7001",8209:"4b09fa65",8401:"aca2f39a",8462:"f67096cb",8609:"71100b88",8623:"4efad016",8737:"d4c31643",8863:"88d09a56",9002:"72126d87",9048:"6844256b",9103:"ba7d4649",9262:"946ac897",9269:"cffc3c7f",9325:"fceb63f4",9328:"3d9c4200",9647:"3d1fe17f",9858:"337a7516"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},t="docs:",b.l=(e,a,c,r)=>{if(f[e])f[e].push(a);else{var d,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var t=f[e];if(delete f[e],d.parentNode&&d.parentNode.removeChild(d),t&&t.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"8401",59362658:"9325","003da42b":"637","0058b4c6":"849",ce48dac6:"981",a7456010:"1235",f0e24734:"1450",dff1c289:"1724",bd6d0e35:"1798","09d5ad39":"1864",acecf23e:"1903","1e4232ab":"1953","73664a40":"1972","5c868d36":"1974","207666d2":"2148","2c1b52bf":"2382","9e4087bc":"2711","822bd8ab":"2748","9dfd250b":"2887","533a09ca":"3098",ccc49370:"3249",e5aefb32:"3276",f4f34a3a:"3637","35131ec2":"3666","8717b14a":"3694","7ae2cc57":"3764","9176b25c":"3874","0e384e19":"3976","393be207":"4134","00fb3d82":"4192","1b6ec5d4":"4365","1df93b7f":"4583",f82cd581:"4584",e44a2883:"4736","6875c492":"4813",d9f32620:"5557",aba21aa0:"5742","1f391b9e":"6061",a7bd4aaa:"7098","4e345e3b":"7174",b5b6e5e3:"7298","814f3328":"7472",a6aa9e1f:"7643","5e90a9b3":"8025","3a2db09e":"8121",f81c1134:"8130",c15d9823:"8146","01a85c17":"8209","3217192f":"8462","925b3f96":"8609","584535cc":"8623","7661071f":"8737",f55d3e7a:"8863",fa823849:"9002",a94703ab:"9048","6edd94a7":"9103","18c41134":"9262",a8f61235:"9269",e273c56f:"9328","5e95c892":"9647","36994c47":"9858"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var f=b.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var t=new Promise(((c,t)=>f=e[a]=[c,t]));c.push(f[2]=t);var r=b.p+b.u(a),d=new Error;b.l(r,(c=>{if(b.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var t=c&&("load"===c.type?"missing":c.type),r=c&&c.target&&c.target.src;d.message="Loading chunk "+a+" failed.\n("+t+": "+r+")",d.name="ChunkLoadError",d.type=t,d.request=r,f[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var f,t,r=c[0],d=c[1],o=c[2],n=0;if(r.some((a=>0!==e[a]))){for(f in d)b.o(d,f)&&(b.m[f]=d[f]);if(o)var i=o(b)}for(a&&a(c);n
+
+
+
+
+Archive | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/blog/atom.xml b/blog/atom.xml
new file mode 100644
index 0000000..f4a3d22
--- /dev/null
+++ b/blog/atom.xml
@@ -0,0 +1,99 @@
+
+
+ https://docs.astral.global/blog
+ Astral Documentation Blog
+ 2021-08-26T00:00:00.000Z
+ https://github.com/jpmonette/feed
+
+ Astral Documentation Blog
+ https://docs.astral.global/img/favicon.ico
+
+
+ https://docs.astral.global/blog/welcome
+
+ 2021-08-26T00:00:00.000Z
+
+ Docusaurus blogging features are powered by the blog plugin .
+Simply add Markdown files (or folders) to the blog
directory.
+Regular blog authors can be added to authors.yml
.
+The blog post date can be extracted from filenames, such as:
+
+2019-05-30-welcome.md
+2019-05-30-welcome/index.md
+
+A blog post folder can be convenient to co-locate blog post images:
+
+The blog supports tags as well!
+And if you don't want a blog : just delete this directory, and use blog: false
in your Docusaurus config.
]]>
+
+ SΓ©bastien Lorber
+ https://sebastienlorber.com
+
+
+ Yangshun Tay
+ https://github.com/yangshun
+
+
+
+
+
+
+
+ https://docs.astral.global/blog/mdx-blog-post
+
+ 2021-08-01T00:00:00.000Z
+
+ Blog posts support Docusaurus Markdown features , such as MDX .
+Use the power of React to create interactive blog posts.
< button onClick = { ( ) => alert ( 'button clicked!' ) } > Click me ! < / button >
Click me! ]]>
+
+ SΓ©bastien Lorber
+ https://sebastienlorber.com
+
+
+
+
+
+ https://docs.astral.global/blog/long-blog-post
+
+ 2019-05-29T00:00:00.000Z
+
+ This is the summary of a very long blog post,
+Use a <!--
truncate
-->
comment to limit blog post size in the list view.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
]]>
+
+ Endilie Yacop Sucipto
+ https://github.com/endiliey
+
+
+
+
+
+
+ https://docs.astral.global/blog/first-blog-post
+
+ 2019-05-28T00:00:00.000Z
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet]]>
+
+ Gao Wei
+ https://github.com/wgao19
+
+
+
+
+
\ No newline at end of file
diff --git a/blog/first-blog-post/index.html b/blog/first-blog-post/index.html
new file mode 100644
index 0000000..52a1d27
--- /dev/null
+++ b/blog/first-blog-post/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+First Blog Post | Astral Documentation
+
+
+
+
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
+
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
new file mode 100644
index 0000000..65a9b5c
--- /dev/null
+++ b/blog/index.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+Blog | Astral Documentation
+
+
+
+
+
+Docusaurus blogging features are powered by the blog plugin .
+
Simply add Markdown files (or folders) to the blog
directory.
+
Regular blog authors can be added to authors.yml
.
+
The blog post date can be extracted from filenames, such as:
+
+2019-05-30-welcome.md
+2019-05-30-welcome/index.md
+
+
A blog post folder can be convenient to co-locate blog post images:
+
+
The blog supports tags as well!
+
And if you don't want a blog : just delete this directory, and use blog: false
in your Docusaurus config.
Blog posts support Docusaurus Markdown features , such as MDX .
+
Use the power of React to create interactive blog posts.
< button onClick = { ( ) => alert ( 'button clicked!' ) } > Click me ! < / button >
Click me! This is the summary of a very long blog post,
+
Use a <!--
truncate
-->
comment to limit blog post size in the list view.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
+
\ No newline at end of file
diff --git a/blog/long-blog-post/index.html b/blog/long-blog-post/index.html
new file mode 100644
index 0000000..32b2a99
--- /dev/null
+++ b/blog/long-blog-post/index.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+Long Blog Post | Astral Documentation
+
+
+
+
+
+This is the summary of a very long blog post,
+
Use a <!--
truncate
-->
comment to limit blog post size in the list view.
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
+
\ No newline at end of file
diff --git a/blog/mdx-blog-post/index.html b/blog/mdx-blog-post/index.html
new file mode 100644
index 0000000..c33c7d8
--- /dev/null
+++ b/blog/mdx-blog-post/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+MDX Blog Post | Astral Documentation
+
+
+
+
+
+Blog posts support Docusaurus Markdown features , such as MDX .
+
Use the power of React to create interactive blog posts.
< button onClick = { ( ) => alert ( 'button clicked!' ) } > Click me ! < / button >
Click me!
+
+
\ No newline at end of file
diff --git a/blog/rss.xml b/blog/rss.xml
new file mode 100644
index 0000000..5714ee9
--- /dev/null
+++ b/blog/rss.xml
@@ -0,0 +1,81 @@
+
+
+
+ Astral Documentation Blog
+ https://docs.astral.global/blog
+ Astral Documentation Blog
+ Thu, 26 Aug 2021 00:00:00 GMT
+ https://validator.w3.org/feed/docs/rss2.html
+ https://github.com/jpmonette/feed
+ en
+ -
+
+ https://docs.astral.global/blog/welcome
+ https://docs.astral.global/blog/welcome
+ Thu, 26 Aug 2021 00:00:00 GMT
+
+ Docusaurus blogging features are powered by the blog plugin .
+Simply add Markdown files (or folders) to the blog
directory.
+Regular blog authors can be added to authors.yml
.
+The blog post date can be extracted from filenames, such as:
+
+2019-05-30-welcome.md
+2019-05-30-welcome/index.md
+
+A blog post folder can be convenient to co-locate blog post images:
+
+The blog supports tags as well!
+And if you don't want a blog : just delete this directory, and use blog: false
in your Docusaurus config.
]]>
+ Facebook
+ Hello
+ Docusaurus
+
+ -
+
+ https://docs.astral.global/blog/mdx-blog-post
+ https://docs.astral.global/blog/mdx-blog-post
+ Sun, 01 Aug 2021 00:00:00 GMT
+
+ Blog posts support Docusaurus Markdown features , such as MDX .
+Use the power of React to create interactive blog posts.
< button onClick = { ( ) => alert ( 'button clicked!' ) } > Click me ! < / button >
Click me! ]]>
+ Docusaurus
+
+ -
+
+ https://docs.astral.global/blog/long-blog-post
+ https://docs.astral.global/blog/long-blog-post
+ Wed, 29 May 2019 00:00:00 GMT
+
+ This is the summary of a very long blog post,
+Use a <!--
truncate
-->
comment to limit blog post size in the list view.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
]]>
+ Hello
+ Docusaurus
+
+ -
+
+ https://docs.astral.global/blog/first-blog-post
+ https://docs.astral.global/blog/first-blog-post
+ Tue, 28 May 2019 00:00:00 GMT
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet]]>
+ Hola
+ Docusaurus
+
+
+
\ No newline at end of file
diff --git a/blog/tags/docusaurus/index.html b/blog/tags/docusaurus/index.html
new file mode 100644
index 0000000..71d5075
--- /dev/null
+++ b/blog/tags/docusaurus/index.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+4 posts tagged with "Docusaurus" | Astral Documentation
+
+
+
+
+
+Docusaurus blogging features are powered by the blog plugin .
+
Simply add Markdown files (or folders) to the blog
directory.
+
Regular blog authors can be added to authors.yml
.
+
The blog post date can be extracted from filenames, such as:
+
+2019-05-30-welcome.md
+2019-05-30-welcome/index.md
+
+
A blog post folder can be convenient to co-locate blog post images:
+
+
The blog supports tags as well!
+
And if you don't want a blog : just delete this directory, and use blog: false
in your Docusaurus config.
Blog posts support Docusaurus Markdown features , such as MDX .
+
Use the power of React to create interactive blog posts.
< button onClick = { ( ) => alert ( 'button clicked!' ) } > Click me ! < / button >
Click me! This is the summary of a very long blog post,
+
Use a <!--
truncate
-->
comment to limit blog post size in the list view.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
+
\ No newline at end of file
diff --git a/blog/tags/facebook/index.html b/blog/tags/facebook/index.html
new file mode 100644
index 0000000..201c608
--- /dev/null
+++ b/blog/tags/facebook/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+One post tagged with "Facebook" | Astral Documentation
+
+
+
+
+
+One post tagged with "Facebook" Facebook tag description
View All Tags Docusaurus blogging features are powered by the blog plugin .
+
Simply add Markdown files (or folders) to the blog
directory.
+
Regular blog authors can be added to authors.yml
.
+
The blog post date can be extracted from filenames, such as:
+
+2019-05-30-welcome.md
+2019-05-30-welcome/index.md
+
+
A blog post folder can be convenient to co-locate blog post images:
+
+
The blog supports tags as well!
+
And if you don't want a blog : just delete this directory, and use blog: false
in your Docusaurus config.
+
+
\ No newline at end of file
diff --git a/blog/tags/hello/index.html b/blog/tags/hello/index.html
new file mode 100644
index 0000000..edb5582
--- /dev/null
+++ b/blog/tags/hello/index.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+2 posts tagged with "Hello" | Astral Documentation
+
+
+
+
+
+Docusaurus blogging features are powered by the blog plugin .
+
Simply add Markdown files (or folders) to the blog
directory.
+
Regular blog authors can be added to authors.yml
.
+
The blog post date can be extracted from filenames, such as:
+
+2019-05-30-welcome.md
+2019-05-30-welcome/index.md
+
+
A blog post folder can be convenient to co-locate blog post images:
+
+
The blog supports tags as well!
+
And if you don't want a blog : just delete this directory, and use blog: false
in your Docusaurus config.
This is the summary of a very long blog post,
+
Use a <!--
truncate
-->
comment to limit blog post size in the list view.
+
+
\ No newline at end of file
diff --git a/blog/tags/hola/index.html b/blog/tags/hola/index.html
new file mode 100644
index 0000000..636d4e9
--- /dev/null
+++ b/blog/tags/hola/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+One post tagged with "Hola" | Astral Documentation
+
+
+
+
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
+
+
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
new file mode 100644
index 0000000..5f2b15c
--- /dev/null
+++ b/blog/tags/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Tags | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/blog/welcome/index.html b/blog/welcome/index.html
new file mode 100644
index 0000000..5937649
--- /dev/null
+++ b/blog/welcome/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+Welcome | Astral Documentation
+
+
+
+
+
+Docusaurus blogging features are powered by the blog plugin .
+
Simply add Markdown files (or folders) to the blog
directory.
+
Regular blog authors can be added to authors.yml
.
+
The blog post date can be extracted from filenames, such as:
+
+2019-05-30-welcome.md
+2019-05-30-welcome/index.md
+
+
A blog post folder can be convenient to co-locate blog post images:
+
+
The blog supports tags as well!
+
And if you don't want a blog : just delete this directory, and use blog: false
in your Docusaurus config.
+
+
\ No newline at end of file
diff --git a/bun.lockb b/bun.lockb
deleted file mode 100755
index bfc3a2f..0000000
Binary files a/bun.lockb and /dev/null differ
diff --git a/docs/core-concepts/decentralized-spatial-data/index.html b/docs/core-concepts/decentralized-spatial-data/index.html
new file mode 100644
index 0000000..3010e67
--- /dev/null
+++ b/docs/core-concepts/decentralized-spatial-data/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Decentralized spatial data | Astral Documentation
+
+
+
+
+
+
Decentralized spatial data
+
+
\ No newline at end of file
diff --git a/docs/core-concepts/location-proofs/index.html b/docs/core-concepts/location-proofs/index.html
new file mode 100644
index 0000000..bf5594d
--- /dev/null
+++ b/docs/core-concepts/location-proofs/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Location proofs | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/core-concepts/onchain-geospatial/index.html b/docs/core-concepts/onchain-geospatial/index.html
new file mode 100644
index 0000000..788fc46
--- /dev/null
+++ b/docs/core-concepts/onchain-geospatial/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Onchain geospatial | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/core-concepts/what-is-spatial-data/index.html b/docs/core-concepts/what-is-spatial-data/index.html
new file mode 100644
index 0000000..8ea15fc
--- /dev/null
+++ b/docs/core-concepts/what-is-spatial-data/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+What is spatial data? | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/developer-resources/location-attestations/index.html b/docs/developer-resources/location-attestations/index.html
new file mode 100644
index 0000000..e37299e
--- /dev/null
+++ b/docs/developer-resources/location-attestations/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Location attestations | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/developer-resources/quickstart/index.html b/docs/developer-resources/quickstart/index.html
new file mode 100644
index 0000000..dc69457
--- /dev/null
+++ b/docs/developer-resources/quickstart/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Quickstart | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/developer-resources/spatial-registries/index.html b/docs/developer-resources/spatial-registries/index.html
new file mode 100644
index 0000000..3ac844e
--- /dev/null
+++ b/docs/developer-resources/spatial-registries/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Spatial registries | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/examples/index.html b/docs/examples/index.html
new file mode 100644
index 0000000..daf14ce
--- /dev/null
+++ b/docs/examples/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Content goes here... | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/hello/index.html b/docs/hello/index.html
new file mode 100644
index 0000000..1eee3a6
--- /dev/null
+++ b/docs/hello/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+Hello | Astral Documentation
+
+
+
+
+
+Hello
+
This is my first Docusaurus document !# Hello
+
This is my first Docusaurus document !
+
+
\ No newline at end of file
diff --git a/docs/intro/index.html b/docs/intro/index.html
new file mode 100644
index 0000000..cb6e46b
--- /dev/null
+++ b/docs/intro/index.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+Tutorial Intro | Astral Documentation
+
+
+
+
+
+On this page
Tutorial Intro
+
Let's discover Docusaurus in less than 5 minutes .
+
Getting Startedβ
+
Get started by creating a new site .
+
Or try Docusaurus immediately with docusaurus.new .
+
What you'll needβ
+
+Node.js version 18.0 or above:
+
+When installing Node.js, you are recommended to check all checkboxes related to dependencies.
+
+
+
+
Generate a new siteβ
+
Generate a new Docusaurus site using the classic template .
+
The classic template will automatically be added to your project after you run the command:
+
npm init docusaurus@latest my-website classic
+
You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor.
+
The command also installs all necessary dependencies you need to run Docusaurus.
+
Start your siteβ
+
Run the development server:
+
cd my-website npm run start
+
The cd
command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there.
+
The npm run start
command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/ .
+
Open docs/intro.md
(this page) and edit some lines: the site reloads automatically and displays your changes.
+
+
\ No newline at end of file
diff --git a/docs/introducing-astral/index.html b/docs/introducing-astral/index.html
new file mode 100644
index 0000000..a1ec9da
--- /dev/null
+++ b/docs/introducing-astral/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Introduction | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/location-proof-protocol/architecture/index.html b/docs/location-proof-protocol/architecture/index.html
new file mode 100644
index 0000000..83abf6b
--- /dev/null
+++ b/docs/location-proof-protocol/architecture/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+Architecture | Astral Documentation
+
+
+
+
+
+Location Proof Protocol Architecture On this page
Architecture
+
We are designing the overall architecture of the onchain component of the generalized location proof protocol. If you'd like to weigh in β
+or help us build it! βΒ reach out on Telegram .
+
Here's the top-level abstract of the work we're doing:
+
Abstractβ
+
This spike examines two approaches of extensible contracts, managed by a *RecipeCoordinator.sol*
contract that controls the addition and
+upgrade of multiple implementation contracts. These implementation contracts each hold a recipe for a βproof-of-locationβ strategy.
+
The primary purpose of this design is to coordinate the addition, use and upgrade of these recipes / strategies, through one coordinating
+contract β RecipeCoordinator.sol
. Adding recipes is a permissionless , public action taken through the RecipeCoordinator
. Upgrade
+functionality is required for both the RecipeCoordinator and, optionally, on recipe implementation contracts.
+
In this spike, we consider two architectural design patterns to serve this purpose: the Diamond pattern and ERC-165 interface matching.
+
For example, a team developing a proof-of-location strategy that requires users to scan NFC devices would implement the Solidity code to
+record and verify location proofs, then register the implementation with the RecipeCoordinator
.
The βrecipeβ would describe the shape + content of the data that needs to be included in a location proof for it to adhere to that strategy.
+The implementation contract developed by the strategy designers would include a verify
method.
+
This is all work in progress, we'd love input!
+
+
\ No newline at end of file
diff --git a/docs/location-proof-protocol/eas-schema/index.html b/docs/location-proof-protocol/eas-schema/index.html
new file mode 100644
index 0000000..2ab79a7
--- /dev/null
+++ b/docs/location-proof-protocol/eas-schema/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+EAS Schema | Astral Documentation
+
+
+
+
+
+Location Proof Protocol EAS Schema On this page
EAS Schema
+
Location Proof Protocol: Core Schema v0.1 (Sepolia Testnet)β
+
The core layer of the Location Proof Protocol includes a standard data model. v0.1 of the data model is described in this document. The
+current working schema is deployed on Ethereum Sepolia testnet, UID 0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b
+(view on EASScan ).
+
Field Description Key Data Type Source Identifier Unique ID for the location proof. uid
bytes32
EAS provides this Prover Address Address of the prover. from
address
Sender address, as specified by EAS Subject Identifier Unique ID for the subject/event. subject
address
EAS provides this, however future iterations may require IDs that are not Ethereum addresses (DIDs, for example) Timestamp Time the location proof was created. timestamp
uint256
EAS Event Timestamp Time of the event referenced by the location proof. eventTimestamp
uint256
User input Spatial Reference System Coordinate system within which the object is positioned. srs
string
in v0.1, hard coded to "EPSG:4326" Location Type A string defining how the location field is structured. locationType
string
Depends on the recipe
/ strategy, or user input Location The location of the object/event. location
bytes
Depends on the recipe
/ strategy, or user input Proof Recipe Identifier Indicates the proof recipe used. recipeType
string[]
Defined from a set of registered recipes, to be stored in the @/recipes directory Proof Recipe Payload Encoded data specific to the proof recipe, which could include encrypted location data, a zero-knowledge proof, or references to other verification data. recipePayload
bytes[]
Specified in recipe definition Media Type A unique string referring to the media to be included in a bytes
field, Media Data. This pattern is similar to OpenGraph Protocolβs type
definition. mediaType
string[]
Defined from a set of supported media types, to be stored in the @/media directory Media Data A bytes
field allowing the attachment of arbitrary data to a location proof. This data is intended to be irrelevant to the location proof and not required/utilized in the proof recipe verification. mediaData
bytes[]
Specified in media type definition Memo An arbitrary message memo
string
User input
+
Note that this design supports location proofs that include multiple recipe types / recipe payloads and media type / media data.
+
+
\ No newline at end of file
diff --git a/docs/location-proof-protocol/introduction/index.html b/docs/location-proof-protocol/introduction/index.html
new file mode 100644
index 0000000..f91913a
--- /dev/null
+++ b/docs/location-proof-protocol/introduction/index.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+Introduction | Astral Documentation
+
+
+
+
+
+Location Proof Protocol Introduction On this page
Introduction
+
The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way.
+
Given the diverse requirements and approaches for location proofs, our goal is to support innovation across a wide range of proof strategies
+while providing a standard data model for creating and verifying these proofs.
+
We're working on the Location Proof Protocol in a few places:
+most active work is happening in the Astral Logbook dapp (especially the
+<CheckinForm> component )
+we're planning to store code in the astralprotocol monorepo, located
+here on Github .
+ The structure is subject to change β these docs are the most current!
+
This section of the monorepo currently contains:
+
+Specifications of the core Ethereum Attestation Service (EAS) schema for the protocol
+Details on how to create location proofs using different location types
+A framework (in development) for building "recipes" that allow for many different strategies for proving
+location to be added (WIP)
+Information on attaching differet types of media to location proofs (WIP)
+
+
Contributingβ
+
We welcome contributions to improve the protocol and tools. Please read our
+contributing guidelines for more details.
+
+
\ No newline at end of file
diff --git a/docs/location-proof-protocol/location-types/index.html b/docs/location-proof-protocol/location-types/index.html
new file mode 100644
index 0000000..1397786
--- /dev/null
+++ b/docs/location-proof-protocol/location-types/index.html
@@ -0,0 +1,82 @@
+
+
+
+
+
+Location Types | Astral Documentation
+
+
+
+
+
+Location Proof Protocol Location Types On this page
Location Types
+
+
To ensure location proofs are as versatile as possible, we are giving users / developers the option of creating proofs that adhere to any
+location type.
+
This requires creating a standardized set of categories for "location types" that include various ways of representing locations such as
+different coordinate systems, H3 strings, geohashes, and more. The purpose of this is to ensure interoperability and clarity in geospatial
+data management, while still offering flexibility for different proof types.
+
Initially, location proofs will use WGS84 decimal degree coordinates, ordered as [longitude, latitude]
.
These coordinate pairs will be formatted as strings, converted to bytes for storage onchain. The working locationType
will be set to
+DecimalDegrees<string>
.
+
If you would like to develop proofs that use an alternative location encoding (like those listed below), reach out on
+Telegram .
+
Future Categories of Location Typesβ
+
+Geographic Coordinates (Lat/Long)
+
+Decimal Degrees : Standard longitude and latitude (e.g., [-122.4194, 37.7749]
).
+Degrees, Minutes, Seconds (DMS) : Latitude and longitude in degrees, minutes, and seconds (e.g., 37Β°46'30" N, 122Β°25'10" W
).
+
+
+Projected Coordinates
+
+Universal Transverse Mercator (UTM) : Uses a series of zones for global coverage (e.g., 10S 551000 4182000
).
+State Plane Coordinate System (SPCS) : Used in the United States (e.g., X: 2000000, Y: 500000
in a specific state plane zone).
+
+
+Geohashes
+
+Geohash : A hierarchical spatial data structure which subdivides space into buckets of grid shape (e.g., 9q8yyz
).
+
+
+H3 Hexagons
+
+H3 : A hierarchical hexagonal grid system used for spatial indexing (e.g., 85283473fffffff
).
+
+
+Plus Codes
+
+Open Location Code (OLC) : Developed by Google, it's a code that represents an area anywhere on Earth (e.g., 7FG8V4VC+G7
).
+
+
+Grid References
+
+Military Grid Reference System (MGRS) : Used by NATO militaries for locating points on the Earth (e.g., 33TWN8382558454
).
+British National Grid (OSGB) : Used in Great Britain (e.g., TQ 298828
).
+
+
+Place Names / Addresses
+
+Postal Address : Standard mailing address (e.g., 1600 Amphitheatre Parkway, Mountain View, CA
).
+Named Locations : Known place names (e.g., Eiffel Tower
).
+
+
+What3Words References
+
+W3W : A geocoding system that encodes geographic coordinates into three dictionary words (e.g., ///filled.count.soap).
+
+
+
+
Formal specification of the location types and how they are represented is in development, and will be documented here.
+
Diverse Spatial Reference Systemsβ
+
Location proofs may not always relate to Earth-based coordinates but could be relative to other objects or within different spatial
+reference systems, such as:
+
+Being with a person at a particular time
+Location in a metaverse space
+Presence in a vehicle or a specific room
+
+
Astral's Location Proof Protocol aims to support location proofs within a wide range of different spatial reference systems, both global and
+relative. However, initial development of the protocol will focus on positioning objects / events on Earth.
+
+
\ No newline at end of file
diff --git a/docs/location-proof-protocol/media-types/index.html b/docs/location-proof-protocol/media-types/index.html
new file mode 100644
index 0000000..645290e
--- /dev/null
+++ b/docs/location-proof-protocol/media-types/index.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+Media Types | Astral Documentation
+
+
+
+
+
+Location Proof Protocol Media Types On this page
Media Types
+
Users have the capability to attach a diverse range of media types to a location proof. This functionality is powered by the use of MIME
+types, allowing for the inclusion of various data formats such as photos, videos, audio, URLs, LIDAR scans, point clouds, and more. This
+section provides an overview of the media types we aim to build support for, their MIME types, and considerations for their use.
+
This is the alpha version and is subject to change!
+
+
Currently, the location proofs we're registering on EAS have two fields related to media:
+
+mediaType
: an array of strings, each a unique designator of the media attached, to ease parsing when location proofs are read
+mediaData
: an array of bytes containing either the media itself or some kind of media identifier, likely a CID
+
+
Of course, elements in each array correspond accoding to index.
+
In this way, any set of media data can be attached to a location proof. This opens use cases such as geotagged photos and videos, dMRV data
+for impact / regeneration projects, etc.
+
Data included in the media fields should NOT be required for the location proof strategy. For example, if a strategy used photos of the
+surrounding area (i.e. of known landmarks), this data should be included in the proof recipe.
+
At this point, we have not fully scoped the requirements of the mediaType
string designators. Any content can be attached to a location
+proof (which is why we selected the versatile bytes
data type) β but note there is no standardized way of knowing what type of file / data
+is attached. Stay tuned here.
+
+
1. Photosβ
+
Photos can be attached in various formats, each with its corresponding MIME type:
+
+JPEG : image/jpeg
+PNG : image/png
+GIF : image/gif
+TIFF : image/tiff
+BMP : image/bmp
+
+
2. Videosβ
+
Video attachments support multiple formats to ensure compatibility and optimal performance:
+
+MP4 : video/mp4
+WebM : video/webm
+AVI : video/x-msvideo
+MOV : video/quicktime
+MKV : video/x-matroska
+
+
3. Audioβ
+
Audio files in the following formats can be attached to a location proof:
+
+MP3 : audio/mpeg
+WAV : audio/wav
+OGG : audio/ogg
+AAC : audio/aac
+
+
4. URLsβ
+
URLs can be linked directly from a location proof, providing access to external resources:
+
+
5. LIDAR Scansβ
+
LIDAR scans provide detailed three-dimensional data and are supported in these formats:
+
+LAS : application/vnd.las
+LAZ : application/vnd.laszip
+
+
6. Point Cloudsβ
+
Point clouds, representing spatial data points, can be attached in various formats:
+
+PCD : application/pcd
+PLY : application/ply
+XYZ : application/xyz
+
+
7. Documentsβ
+
Users can attach documents to provide additional information or context:
+
+PDF : application/pdf
+Microsoft Word : application/msword
, application/vnd.openxmlformats-officedocument.wordprocessingml.document
+Microsoft Excel : application/vnd.ms-excel
, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
+Plain Text : text/plain
+
+
+
We also support a wide range of other media types to ensure flexibility:
+
+JSON : application/json
+XML : application/xml
+CSV : text/csv
+ZIP : application/zip
+
+
Considerations for Useβ
+
+
+File Size : Different media types can have varying file sizes. It's essential to consider the storage implications and performance
+impact of large files, especially high-resolution videos, LIDAR scans, and point clouds.
+
+
+Format Compatibility : Ensure that the attached media format is compatible with the systems and applications that will access the
+location proof. For example, not all browsers or devices may support every video or audio format.
+
+
+Security : Validate and sanitize media files to protect against potential security threats such as malware or malicious code embedded
+in files.
+
+
+Metadata : Including metadata with media files (e.g., EXIF data for photos, geolocation for videos) can provide additional context and
+improve the usability of the attached media.
+
+
+Compression : Utilize compression for large files to optimize storage and transmission. Formats like LAZ (compressed LAS) are
+preferable for LIDAR scans.
+
+
+
By leveraging MIME types, our system provides a flexible and robust framework for attaching a wide range of media types to location proofs,
+enhancing the richness and utility of the data associated with each proof.
+
+
\ No newline at end of file
diff --git a/docs/location-proof-protocol/rationale/index.html b/docs/location-proof-protocol/rationale/index.html
new file mode 100644
index 0000000..05487ca
--- /dev/null
+++ b/docs/location-proof-protocol/rationale/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+Rationale | Astral Documentation
+
+
+
+
+
+Location Proof Protocol Rationale Rationale
+
We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and
+verifying location proofs.
+
+Locations can be represented in a range of ways, within a range of different spatial reference systems
+There are many different possible strategies for proving location in trust-minimized environments β different use cases will require
+different levels of precision, confidence, cost, privacy etc
+Users will want to attach all sorts of different media to proofs, from photos and videos to LIDAR scans to URLs
+
+
Our design is intended to flexibly serve all of these use cases, while provided a common format to talk about verifiable location on the
+decentralized web. By converging on this standard we hope location proofs will be composable and interoperable.
+
+
\ No newline at end of file
diff --git a/docs/location-proof-protocol/strategies-recipes/index.html b/docs/location-proof-protocol/strategies-recipes/index.html
new file mode 100644
index 0000000..6ec1b74
--- /dev/null
+++ b/docs/location-proof-protocol/strategies-recipes/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+Strategies + Recipes | Astral Documentation
+
+
+
+
+
+Location Proof Protocol Strategies + Recipes On this page
Strategies + Recipes
+
The generalized location proof protocol is designed as it is to accommodate the wide range of strategies for proving location on the
+decentralized web, while also provided a standard way of representing these proofs.
+
In this section of the documentation, we will define these different location proof strategies, and document how to contribute a new
+strategy to the protocol. (For a clearer idea of our design, see the Architecture page).
+
A contributing guide, along with documentation on specific strategies, is in the work. If you want to help us develop this, reach out!
+
Broad Approaches to Location Proofsβ
+
+Authority-based Strategies : Authorized individuals attest to someone's presence. i.e. ticket checkers, event hosts
+Social Strategies : People verify each other's claims, confirming or challenging their validity. i.e. permissionless social
+confirmation, perhaps with sybil-resistant scoring of confirmer accounts; PIN exchange
+Near-field Machine Strategies : Hardware devices attest to the presence of another device through information exchange or cryptographic
+'endorsement' of a claim. i.e. RFID; NFC; Bluetooth
+Network Machine Strategies : Nodes on a local network or hardware wallets triangulate position and sign confirmation attestations. i.e.
+Time of Flight; Time Difference of Arrival
+Sensor Data Strategies : Where devices sense local networks, environmental conditions, images + audio, accelerometers, etc, and
+location is discerned from analysis of this evidence. i.e. radio frequency / optical / inertial / acoustic / magnetometer localization
+
+
In addition to these different categories of strategies, various verification schemes can be employed to endow location proof recipes with a
+different attributes, such as privacy, game theoretic assurances of validity, etc.
+
+Time-based Schemes : Involves waiting or challenge periods.
+Cryptographic Schemes : Zero-knowledge proofs verified on-chain or in peer nodes.
+AI-based Schemes : Analyzing photos or contextual information.
+Economic Schemes : Requires payment or staking value for proof creation.
+
+
This is an incomplete list, and we hope to support a growing set of experiments in location proof design.
+
+
\ No newline at end of file
diff --git a/docs/spatial-registries/logbook/index.html b/docs/spatial-registries/logbook/index.html
new file mode 100644
index 0000000..bef7708
--- /dev/null
+++ b/docs/spatial-registries/logbook/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Logbook | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/spatial-registries/spatial-sol/index.html b/docs/spatial-registries/spatial-sol/index.html
new file mode 100644
index 0000000..4ac1c59
--- /dev/null
+++ b/docs/spatial-registries/spatial-sol/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Spatial.sol | Astral Documentation
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/tutorial-basics/congratulations/index.html b/docs/tutorial-basics/congratulations/index.html
new file mode 100644
index 0000000..1449af3
--- /dev/null
+++ b/docs/tutorial-basics/congratulations/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+Congratulations! | Astral Documentation
+
+
+
+
+
+On this page
Congratulations!
+
You have just learned the basics of Docusaurus and made some changes to the initial template .
+
Docusaurus has much more to offer !
+
Have 5 more minutes ? Take a look at versioning and i18n .
+
Anything unclear or buggy in this tutorial? Please report it!
+
What's next?β
+
+
+
\ No newline at end of file
diff --git a/docs/tutorial-basics/create-a-blog-post/index.html b/docs/tutorial-basics/create-a-blog-post/index.html
new file mode 100644
index 0000000..9097823
--- /dev/null
+++ b/docs/tutorial-basics/create-a-blog-post/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+Create a Blog Post | Astral Documentation
+
+
+
+
+
+On this page
Create a Blog Post
+
Docusaurus creates a page for each blog post , but also a blog index page , a tag system , an RSS feed...
+
Create your first Postβ
+
Create a file at blog/2021-02-28-greetings.md
:
+
blog/2021-02-28-greetings.md
--- slug : greetings title : Greetings ! authors : - name : Joel Marcey title : Co - creator of Docusaurus 1 url : https : //github.com/JoelMarcey image_url : https : //github.com/JoelMarcey.png - name : SΓ©bastien Lorber title : Docusaurus maintainer url : https : //sebastienlorber.com image_url : https : //github.com/slorber.png tags : [ greetings ] --- Congratulations, you have made your first post! Feel free to play around and edit this post as much as you like.
+
A new blog post is now available at http://localhost:3000/blog/greetings .
+
+
\ No newline at end of file
diff --git a/docs/tutorial-basics/create-a-document/index.html b/docs/tutorial-basics/create-a-document/index.html
new file mode 100644
index 0000000..aa5de23
--- /dev/null
+++ b/docs/tutorial-basics/create-a-document/index.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+Create a Document | Astral Documentation
+
+
+
+
+
+On this page
Create a Document
+
Documents are groups of pages connected through:
+
+a sidebar
+previous/next navigation
+versioning
+
+
Create your first Docβ
+
Create a Markdown file at docs/hello.md
:
+
docs/hello.md
# Hello This is my ** first Docusaurus document ** !
+
A new document is now available at http://localhost:3000/docs/hello .
+
+
Docusaurus automatically creates a sidebar from the docs
folder.
+
Add metadata to customize the sidebar label and position:
+
docs/hello.md
--- sidebar_label : 'Hi!' sidebar_position : 3 --- # Hello This is my ** first Docusaurus document ** !
+
It is also possible to create your sidebar explicitly in sidebars.js
:
+
sidebars.js
export default { tutorialSidebar : [ 'intro' , 'hello' , { type : 'category' , label : 'Tutorial' , items : [ 'tutorial-basics/create-a-document' ] , } , ] , } ;
+
+
\ No newline at end of file
diff --git a/docs/tutorial-basics/create-a-page/index.html b/docs/tutorial-basics/create-a-page/index.html
new file mode 100644
index 0000000..17bd3bf
--- /dev/null
+++ b/docs/tutorial-basics/create-a-page/index.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+Create a Page | Astral Documentation
+
+
+
+
+
+On this page
Create a Page
+
Add Markdown or React files to src/pages
to create a standalone page :
+
+src/pages/index.js
β localhost:3000/
+src/pages/foo.md
β localhost:3000/foo
+src/pages/foo/bar.js
β localhost:3000/foo/bar
+
+
Create your first React Pageβ
+
Create a file at src/pages/my-react-page.js
:
+
src/pages/my-react-page.js
import React from 'react' ; import Layout from '@theme/Layout' ; export default function MyReactPage ( ) { return ( < Layout > < h1 > My React page </ h1 > < p > This is a React page </ p > </ Layout > ) ; }
+
A new page is now available at http://localhost:3000/my-react-page .
+
Create your first Markdown Pageβ
+
Create a file at src/pages/my-markdown-page.md
:
+
src/pages/my-markdown-page.md
# My Markdown page This is a Markdown page
+
A new page is now available at http://localhost:3000/my-markdown-page .
+
+
\ No newline at end of file
diff --git a/docs/tutorial-basics/deploy-your-site/index.html b/docs/tutorial-basics/deploy-your-site/index.html
new file mode 100644
index 0000000..52271fa
--- /dev/null
+++ b/docs/tutorial-basics/deploy-your-site/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+Deploy your site | Astral Documentation
+
+
+
+
+
+On this page
Deploy your site
+
Docusaurus is a static-site-generator (also called Jamstack ).
+
It builds your site as simple static HTML, JavaScript and CSS files .
+
Build your siteβ
+
Build your site for production :
+
+
The static files are generated in the build
folder.
+
Deploy your siteβ
+
Test your production build locally:
+
+
The build
folder is now served at http://localhost:3000/ .
+
You can now deploy the build
folder almost anywhere easily, for free or very small cost (read the Deployment Guide ).
+
+
\ No newline at end of file
diff --git a/docs/tutorial-basics/markdown-features/index.html b/docs/tutorial-basics/markdown-features/index.html
new file mode 100644
index 0000000..8fb545f
--- /dev/null
+++ b/docs/tutorial-basics/markdown-features/index.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+Markdown Features | Astral Documentation
+
+
+
+
+
+On this page
Markdown Features
+
Docusaurus supports Markdown and a few additional features .
+
Front Matterβ
+
Markdown documents have metadata at the top called Front Matter :
+
my-doc.md
--- id: my-doc-id title: My document title description: My document description slug: /my-custom-url --- ## Markdown heading Markdown text with [links](./hello.md)
+
+
Regular Markdown links are supported, using url paths or relative file paths.
+
Let's see how to [ Create a page ]( /create-a-page ) .
+
Let's see how to [ Create a page ]( ./create-a-page.md ) .
+
Result: Let's see how to Create a page .
+
+
Regular Markdown images are supported.
+
You can use absolute paths to reference images in the static directory (static/img/docusaurus.png
):
+
! [ Docusaurus logo ]( /img/docusaurus.png )
+
+
You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them:
+
! [ Docusaurus logo ]( ./img/docusaurus.png )
+
Code Blocksβ
+
Markdown code blocks are supported with Syntax highlighting.
+
``` jsx title="src/components/HelloDocusaurus.js" function HelloDocusaurus() { return <h1>Hello, Docusaurus!</h1>; } ```
+
src/components/HelloDocusaurus.js
function HelloDocusaurus ( ) { return < h1 > Hello, Docusaurus! </ h1 > ; }
+
Admonitionsβ
+
Docusaurus has a special syntax to create admonitions and callouts:
+
:::tip[My tip] Use this awesome feature option ::: :::danger[Take care] This action is dangerous :::
+
Use this awesome feature option
+
+
MDX and React Componentsβ
+
MDX can make your documentation more interactive and allows using any React components inside Markdown :
+
export const Highlight = ( { children , color } ) => ( < span style = { { backgroundColor : color , borderRadius : '20px' , color : '#fff' , padding : '10px' , cursor : 'pointer' , } } onClick = { ( ) => { alert ( ` You clicked the color ${ color } with label ${ children } ` ) } } > { children } </ span > ) ; This is < Highlight color = " #25c2a0 " > Docusaurus green </ Highlight > ! This is < Highlight color = " #1877F2 " > Facebook blue </ Highlight > !
+
+
This is Docusaurus green !
+
This is Facebook blue !
+
+
\ No newline at end of file
diff --git a/docs/tutorial-extras/manage-docs-versions/index.html b/docs/tutorial-extras/manage-docs-versions/index.html
new file mode 100644
index 0000000..0e3f471
--- /dev/null
+++ b/docs/tutorial-extras/manage-docs-versions/index.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+Manage Docs Versions | Astral Documentation
+
+
+
+
+
+On this page
Manage Docs Versions
+
Docusaurus can manage multiple versions of your docs.
+
Create a docs versionβ
+
Release a version 1.0 of your project:
+
npm run docusaurus docs:version 1.0
+
The docs
folder is copied into versioned_docs/version-1.0
and versions.json
is created.
+
Your docs now have 2 versions:
+
+1.0
at http://localhost:3000/docs/
for the version 1.0 docs
+current
at http://localhost:3000/docs/next/
for the upcoming, unreleased docs
+
+
Add a Version Dropdownβ
+
To navigate seamlessly across versions, add a version dropdown.
+
Modify the docusaurus.config.js
file:
+
docusaurus.config.js
export default { themeConfig : { navbar : { items : [ { type : 'docsVersionDropdown' , } , ] , } , } , } ;
+
The docs version dropdown appears in your navbar:
+
+
Update an existing versionβ
+
It is possible to edit versioned docs in their respective folder:
+
+versioned_docs/version-1.0/hello.md
updates http://localhost:3000/docs/hello
+docs/hello.md
updates http://localhost:3000/docs/next/hello
+
+
+
\ No newline at end of file
diff --git a/docs/tutorial-extras/translate-your-site/index.html b/docs/tutorial-extras/translate-your-site/index.html
new file mode 100644
index 0000000..f6d89de
--- /dev/null
+++ b/docs/tutorial-extras/translate-your-site/index.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+Translate your site | Astral Documentation
+
+
+
+
+
+On this page
Translate your site
+
Let's translate docs/intro.md
to French.
+
+
Modify docusaurus.config.js
to add support for the fr
locale:
+
docusaurus.config.js
export default { i18n : { defaultLocale : 'en' , locales : [ 'en' , 'fr' ] , } , } ;
+
Translate a docβ
+
Copy the docs/intro.md
file to the i18n/fr
folder:
+
mkdir -p i18n/fr/docusaurus-plugin-content-docs/current/ cp docs/intro.md i18n/fr/docusaurus-plugin-content-docs/current/intro.md
+
Translate i18n/fr/docusaurus-plugin-content-docs/current/intro.md
in French.
+
Start your localized siteβ
+
Start your site on the French locale:
+
npm run start -- --locale fr
+
Your localized site is accessible at http://localhost:3000/fr/ and the Getting Started
page is translated.
+
In development, you can only use one locale at a time.
+
Add a Locale Dropdownβ
+
To navigate seamlessly across languages, add a locale dropdown.
+
Modify the docusaurus.config.js
file:
+
docusaurus.config.js
export default { themeConfig : { navbar : { items : [ { type : 'localeDropdown' , } , ] , } , } , } ;
+
The locale dropdown now appears in your navbar:
+
+
Build your localized siteβ
+
Build your site for a specific locale:
+
npm run build -- --locale fr
+
Or build your site to include all the locales at once:
+
+
+
\ No newline at end of file
diff --git a/foundry.toml b/foundry.toml
deleted file mode 100644
index 852ae3c..0000000
--- a/foundry.toml
+++ /dev/null
@@ -1,53 +0,0 @@
-# Full reference https://github.com/foundry-rs/foundry/tree/master/crates/config
-
-[profile.default]
- auto_detect_solc = false
- block_timestamp = 1_680_220_800 # March 31, 2023 at 00:00 GMT
- bytecode_hash = "none"
- evm_version = "paris" # See https://www.evmdiff.com/features?name=PUSH0&kind=opcode
- fuzz = { runs = 1_000 }
- gas_reports = ["*"]
- optimizer = true
- optimizer_runs = 10_000
- out = "out"
- script = "script"
- solc = "0.8.25"
- src = "src"
- test = "test"
-
-[profile.ci]
- fuzz = { runs = 10_000 }
- verbosity = 4
-
-[etherscan]
- arbitrum = { key = "${API_KEY_ARBISCAN}" }
- avalanche = { key = "${API_KEY_SNOWTRACE}" }
- bnb_smart_chain = { key = "${API_KEY_BSCSCAN}" }
- gnosis_chain = { key = "${API_KEY_GNOSISSCAN}" }
- goerli = { key = "${API_KEY_ETHERSCAN}" }
- mainnet = { key = "${API_KEY_ETHERSCAN}" }
- optimism = { key = "${API_KEY_OPTIMISTIC_ETHERSCAN}" }
- polygon = { key = "${API_KEY_POLYGONSCAN}" }
- sepolia = { key = "${API_KEY_ETHERSCAN}" }
-
-[fmt]
- bracket_spacing = true
- int_types = "long"
- line_length = 120
- multiline_func_header = "all"
- number_underscore = "thousands"
- quote_style = "double"
- tab_width = 4
- wrap_comments = true
-
-[rpc_endpoints]
- arbitrum = "https://arbitrum-mainnet.infura.io/v3/${API_KEY_INFURA}"
- avalanche = "https://avalanche-mainnet.infura.io/v3/${API_KEY_INFURA}"
- # bnb_smart_chain = "https://bsc-dataseed.binance.org"
- gnosis_chain = "https://rpc.gnosischain.com"
- goerli = "https://goerli.infura.io/v3/${API_KEY_INFURA}"
- localhost = "http://localhost:8545"
- mainnet = "https://eth-mainnet.g.alchemy.com/v2/${API_KEY_ALCHEMY}"
- optimism = "https://optimism-mainnet.infura.io/v3/${API_KEY_INFURA}"
- polygon = "https://polygon-mainnet.infura.io/v3/${API_KEY_INFURA}"
- sepolia = "https://sepolia.infura.io/v3/${API_KEY_INFURA}"
diff --git a/img/docusaurus-social-card.jpg b/img/docusaurus-social-card.jpg
new file mode 100644
index 0000000..ffcb448
Binary files /dev/null and b/img/docusaurus-social-card.jpg differ
diff --git a/img/docusaurus.png b/img/docusaurus.png
new file mode 100644
index 0000000..f458149
Binary files /dev/null and b/img/docusaurus.png differ
diff --git a/img/favicon.ico b/img/favicon.ico
new file mode 100644
index 0000000..c01d54b
Binary files /dev/null and b/img/favicon.ico differ
diff --git a/img/logo.svg b/img/logo.svg
new file mode 100644
index 0000000..47dc0d6
--- /dev/null
+++ b/img/logo.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/img/undraw_docusaurus_mountain.svg b/img/undraw_docusaurus_mountain.svg
new file mode 100644
index 0000000..af961c4
--- /dev/null
+++ b/img/undraw_docusaurus_mountain.svg
@@ -0,0 +1,171 @@
+
+ Easy to Use
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/img/undraw_docusaurus_react.svg b/img/undraw_docusaurus_react.svg
new file mode 100644
index 0000000..94b5cf0
--- /dev/null
+++ b/img/undraw_docusaurus_react.svg
@@ -0,0 +1,170 @@
+
+ Powered by React
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/img/undraw_docusaurus_tree.svg b/img/undraw_docusaurus_tree.svg
new file mode 100644
index 0000000..d9161d3
--- /dev/null
+++ b/img/undraw_docusaurus_tree.svg
@@ -0,0 +1,40 @@
+
+ Focus on What Matters
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..3fe7818
--- /dev/null
+++ b/index.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+Hello from Astral Documentation | Astral Documentation
+
+
+
+
+
+Easy to Use Docusaurus was designed from the ground up to be easily installed and used to get your website up and running quickly.
Focus on What Matters Docusaurus lets you focus on your docs, and we'll do the chores. Go ahead and move your docs into the docs
directory.
Powered by React Extend or customize your website layout by reusing React. Docusaurus can be extended while reusing the same header and footer.
+
+
\ No newline at end of file
diff --git a/legacy/.travis.yml b/legacy/.travis.yml
deleted file mode 100644
index b19e88a..0000000
--- a/legacy/.travis.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-language: node_js
-node_js:
- - "14"
-notifications:
- email: false
-branches:
- only:
- - master
-matrix:
- include:
- - env: TARGET=packages/contracts
-script: if .travis/build-condition.sh $TRAVIS_COMMIT_RANGE $TARGET; then echo "$TARGET is being built" && yarn install && yarn contracts-coverage; else echo "$TARGET is NOT being built"; fi
diff --git a/legacy/.travis/build-condition.sh b/legacy/.travis/build-condition.sh
deleted file mode 100755
index 63a5e7e..0000000
--- a/legacy/.travis/build-condition.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-
-if [[ -z $1 ]]; then
- echo "Commit range cannot be empty"
- exit 1
-fi
-
-if [[ -z $2 ]]; then
- echo "Change path cannot be empty"
- exit 1
-fi
-
-git diff --name-only $1 | sort -u | uniq | grep $2 > /dev/null
\ No newline at end of file
diff --git a/legacy/LICENSE-APACHE b/legacy/LICENSE-APACHE
deleted file mode 100644
index 2ad0ad1..0000000
--- a/legacy/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- 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 [2020] [astralDAO]
-
- 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.
diff --git a/legacy/README.md b/legacy/README.md
deleted file mode 100644
index c4bc7e9..0000000
--- a/legacy/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-![astralDAO](https://github.com/astralDAO/overview/blob/master/brand-identity/Transparent-Logo-Only-Astral.png?raw=true)
-[![Twitter](https://img.shields.io/twitter/follow/astralprotocol?style=social)](https://twitter.com/astralprotocol)
-
-# Research
-
-Monorepo containing early research into Web3-native geospatial technologies.
-
-!!! Note that this is NOT the current implementation of the Astral Protocol, and all references to the protocol in this directory are deprecated.
-
-## Project Status - `Ropsten testnet / Hosted Powergate` | [![Build Status](https://www.travis-ci.com/AstralProtocol/astralprotocol.svg?branch=master)](https://www.travis-ci.com/AstralProtocol/astralprotocol)
-
-## Project Structure
-
-This monorepo is made up of several different packages.
-
-| Package | Current Version | Coverage | Description |
-| ------------------------------------ | ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
-| @astralprotocol/core | ![npm](https://img.shields.io/npm/v/@astralprotocol/core) | -- | Core Astral Protocol Implementation |
-| @astralprotocol/contracts | ![npm](https://img.shields.io/npm/v/@astralprotocol/contracts) | [![Coverage Status](https://coveralls.io/repos/github/AstralProtocol/astralprotocol/badge.svg?branch=master)](https://coveralls.io/github/AstralProtocol/astralprotocol?branch=master) | Astral Smart Contracts - GeoDID Registry |
-| @astralprotocol/subgraph | ![npm](https://img.shields.io/npm/v/@astralprotocol/subgraph) | -- | Subgraph for astral-protocol-contracts |
-| @astralprotocol/stac-validator-js | ![npm](https://img.shields.io/npm/v/@astralprotocol/stac-validator-js) | -- | Node validator for stac item files |
-| @astralprotocol/ipld-encoded-geotiff | ![npm](https://img.shields.io/npm/v/@astralprotocol/ipld-encoded-geotiff) | -- | IPLD Encoded GeoTIFFs |
-
-## Development
-
-### Project setup
-
-This project uses yarn and lerna to manage packages and dependencies. To install dependencies for all packages in this repo, go to root dir and run:
-
-```
-$ yarn install
-```
-
-Then build all packages:
-
-```
-$ yarn run build
-```
diff --git a/legacy/lerna.json b/legacy/lerna.json
deleted file mode 100644
index 642edcf..0000000
--- a/legacy/lerna.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "packages": ["packages/*"],
- "version": "independent",
- "npmClient": "yarn",
- "useWorkspaces": true,
- "command": {
- "publish": {
- "conventionalCommits": true,
- "message": "chore(release): publish",
- "registry": "https://registry.npmjs.org",
- "allowBranch": "master"
- }
- }
-}
diff --git a/legacy/package.json b/legacy/package.json
deleted file mode 100644
index ad1b36c..0000000
--- a/legacy/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "astralprotocol",
- "private": true,
- "workspaces": {
- "packages": [
- "packages/*"
- ],
- "nohoist": [
- "packages/subgraph/@graphprotocol/graph-ts",
- "packages/subgraph/@graphprotocol/graph-ts/**"
- ]
- },
- "scripts": {
- "contracts-coverage": "yarn workspace @astralprotocol/contracts coverage && cat coverage/lcov.info | coveralls",
- "test": "lerna run test",
- "build": "lerna run build",
- "publish:force": "lerna publish --force-publish",
- "publish:simple": "lerna publish",
- "publish": "lerna run tsc && lerna publish",
- "publish:from": "lerna publish from-package --conventional-commits",
- "publish:next": "lerna run tsc && lerna publish --no-push --conventional-prerelease --dist-tag next",
- "publish:latest": "lerna run tsc && lerna publish --allow-branch master --conventional-graduate --create-release github",
- "lint": "lerna run lint",
- "clean": "rm -rf ./lib",
- "lerna-add": "lerna add @astralprotocol/core --scope=@astralprotocol/contracts"
- },
- "dependencies": {
- "lerna": "^3.20.2",
- "ts-node": "^9.0.0",
- "typedoc": "^0.19.2",
- "typescript": "^3.8.3"
- }
-}
diff --git a/legacy/packages/contracts/.solcover.js b/legacy/packages/contracts/.solcover.js
deleted file mode 100644
index f52860b..0000000
--- a/legacy/packages/contracts/.solcover.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
- istanbulFolder: '../../coverage'
- };
\ No newline at end of file
diff --git a/legacy/packages/contracts/CHANGELOG.md b/legacy/packages/contracts/CHANGELOG.md
deleted file mode 100644
index 249305b..0000000
--- a/legacy/packages/contracts/CHANGELOG.md
+++ /dev/null
@@ -1,368 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file.
-See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
-
-## [1.0.12](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.11...@astralprotocol/contracts@1.0.12) (2021-03-29)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.11](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.10...@astralprotocol/contracts@1.0.11) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.9...@astralprotocol/contracts@1.0.10) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.8...@astralprotocol/contracts@1.0.9) (2021-03-17)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.7...@astralprotocol/contracts@1.0.8) (2021-03-16)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.6...@astralprotocol/contracts@1.0.7) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.5...@astralprotocol/contracts@1.0.6) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.4...@astralprotocol/contracts@1.0.5) (2021-02-25)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.3...@astralprotocol/contracts@1.0.4) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.2...@astralprotocol/contracts@1.0.3) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@1.0.1...@astralprotocol/contracts@1.0.2) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [1.0.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.14...@astralprotocol/contracts@1.0.1) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.14](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.13...@astralprotocol/contracts@0.1.14) (2021-02-23)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.13](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.12...@astralprotocol/contracts@0.1.13) (2021-02-19)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.12](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.11...@astralprotocol/contracts@0.1.12) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.11](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.10...@astralprotocol/contracts@0.1.11) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.9...@astralprotocol/contracts@0.1.10) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.8...@astralprotocol/contracts@0.1.9) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.7...@astralprotocol/contracts@0.1.8) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.6...@astralprotocol/contracts@0.1.7) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.5...@astralprotocol/contracts@0.1.6) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.4...@astralprotocol/contracts@0.1.5) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.3...@astralprotocol/contracts@0.1.4) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.1.1...@astralprotocol/contracts@0.1.3) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.1.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.0.3...@astralprotocol/contracts@0.1.1) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.0.2...@astralprotocol/contracts@0.0.3) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/contracts@0.0.1...@astralprotocol/contracts@0.0.2) (2021-02-09)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## 0.0.1 (2021-01-05)
-
-**Note:** Version bump only for package @astralprotocol/contracts
-
-
-
-
-
-## [0.0.37](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.36...@astraldao/astral-protocol-contracts@0.0.37) (2020-12-17)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.36](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.35...@astraldao/astral-protocol-contracts@0.0.36) (2020-12-01)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.35](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.34...@astraldao/astral-protocol-contracts@0.0.35) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.34](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.33...@astraldao/astral-protocol-contracts@0.0.34) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.33](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.32...@astraldao/astral-protocol-contracts@0.0.33) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.32](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.31...@astraldao/astral-protocol-contracts@0.0.32) (2020-11-21)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.31](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.30...@astraldao/astral-protocol-contracts@0.0.31) (2020-11-21)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.30](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.29...@astraldao/astral-protocol-contracts@0.0.30) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.29](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.28...@astraldao/astral-protocol-contracts@0.0.29) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.28](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.27...@astraldao/astral-protocol-contracts@0.0.28) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.27](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.26...@astraldao/astral-protocol-contracts@0.0.27) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.26](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.25...@astraldao/astral-protocol-contracts@0.0.26) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.25](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.24...@astraldao/astral-protocol-contracts@0.0.25) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.24](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.23...@astraldao/astral-protocol-contracts@0.0.24) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.23](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.22...@astraldao/astral-protocol-contracts@0.0.23) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.22](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.21...@astraldao/astral-protocol-contracts@0.0.22) (2020-10-16)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.21](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.20...@astraldao/astral-protocol-contracts@0.0.21) (2020-10-16)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
-
-
-
-
-
-## [0.0.20](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-contracts@0.0.19...@astraldao/astral-protocol-contracts@0.0.20) (2020-10-16)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-contracts
diff --git a/legacy/packages/contracts/LICENSE-APACHE b/legacy/packages/contracts/LICENSE-APACHE
deleted file mode 100644
index 2ad0ad1..0000000
--- a/legacy/packages/contracts/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- 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 [2020] [astralDAO]
-
- 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.
diff --git a/legacy/packages/contracts/LICENSE-MIT b/legacy/packages/contracts/LICENSE-MIT
deleted file mode 100644
index 1874419..0000000
--- a/legacy/packages/contracts/LICENSE-MIT
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 astralDAO
-
-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.
diff --git a/legacy/packages/contracts/README.md b/legacy/packages/contracts/README.md
deleted file mode 100644
index b6b3f2b..0000000
--- a/legacy/packages/contracts/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# `@astralprotocol/contracts`
-
-[![Build Status](https://www.travis-ci.com/AstralProtocol/astralprotocol.svg?branch=master)](https://www.travis-ci.com/AstralProtocol/astralprotocol) [![Coverage Status](https://coveralls.io/repos/github/AstralProtocol/astralprotocol/badge.svg?branch=master)](https://coveralls.io/github/AstralProtocol/astralprotocol?branch=master)
-
-## Description
-
-These contracts serve as the Registry for the Astral Protocol GeoDIDs. It allows binding of a GeoDID to an ethereum address and CID name resolving.
-
-By registering a spatial asset Smart Contract events are triggered, which are picked up by the subgraph indexer to build the tree of relationships for easy querying.
-
-## To add Astral Protocol Contracts to your application
-
-```
-yarn add @astralprotocol/contracts
-```
-
-## To develop or try the Astral Protocol Contracts locally
-
-- Clone the astralprotocol repository and go to packages/contracts:
-
-```
-git clone git@github.com:AstralProtocol/astralprotocol.git
-cd astralprotocol/packages/contracts
-```
-
-- Run ganache `yarn ganache`
-- Deploy contracts with `yarn truffle`
-- Run tests with `yarn truffle-test` or do coverage check up `yarn coverage`
-- You can deploy an instance by running `yarn new-instance`. It builds a tree with some GeoDIDs with fake ids and cids.
-- You can test the removal of some links by running `yarn remove-links`.
-- Watch the changes in a locally deployed subgraph.
-
-## To deploy your own contracts in the Ropsten testnet
-
-- Create a .env file in /packages/contracts with a `MNEMONIC` and `ROPSTEN_API_KEY`:
-
-```
-MNEMONIC="mnemonic phrase goes here with testnet ether in address[0] on ropsten cool"
-ROPSTEN_API_KEY=https://ropsten.infura.io/v3/
-```
diff --git a/legacy/packages/contracts/contracts/Migrations.sol b/legacy/packages/contracts/contracts/Migrations.sol
deleted file mode 100644
index 5a671e5..0000000
--- a/legacy/packages/contracts/contracts/Migrations.sol
+++ /dev/null
@@ -1,26 +0,0 @@
-pragma solidity ^0.6.0;
-
-// SPDX-License-Identifier: UNLICENSED
-
-
-contract Migrations {
- address public owner;
- uint public last_completed_migration;
-
- constructor() public {
- owner = msg.sender;
- }
-
- modifier restricted() {
- if (msg.sender == owner) _;
- }
-
- function setCompleted(uint completed) public restricted {
- last_completed_migration = completed;
- }
-
- function upgrade(address new_address) public restricted {
- Migrations upgraded = Migrations(new_address);
- upgraded.setCompleted(last_completed_migration);
- }
-}
diff --git a/legacy/packages/contracts/contracts/SpatialAssets.sol b/legacy/packages/contracts/contracts/SpatialAssets.sol
deleted file mode 100644
index ab48aed..0000000
--- a/legacy/packages/contracts/contracts/SpatialAssets.sol
+++ /dev/null
@@ -1,329 +0,0 @@
-// SPDX-License-Identifier: APACHE OR MIT
-pragma solidity ^0.6.0;
-
-import "@openzeppelin/contracts/access/AccessControl.sol";
-import "@openzeppelin/contracts/GSN/Context.sol";
-
-/**
- * @dev {SpatialAssets} registry
- * This contract uses {AccessControl} to lock permissioned functions using the
- * different roles - head to its documentation for details.
- *
- * The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant
- * 'DATA_SUPPLIER' roles to other accounts
- */
-contract SpatialAssets is Context, AccessControl {
- /**
- * @dev Emitted when Spatial Assets of id `id` are transferred to `to``.
- */
- event SpatialAssetRegistered(address indexed to, bytes32 indexed geoDIDId, bytes32 indexed cid, bytes32 offChainStorage, bytes32 root, bool canBeParent);
-
- /**
- * @dev Emitted when Spatial Assets of id `id` are deactivated.
- */
- event SpatialAssetDeactivated(bytes32 indexed geoDIDId);
-
- /**
- * @dev Emitted when a parent geodid is added to a node
- */
- event ParentAdded(bytes32 indexed geoDIDId, bytes32 indexed parentGeoDIDId);
-
- /**
- * @dev Emitted when a children geodid is added to a node
- */
- event ChildrenAdded(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);
-
- /**
- * @dev Emitted when a parent geodid is removed from a node
- */
- event ParentRemoved(bytes32 indexed geoDIDId, bytes32 indexed parentGeoDIDId);
-
- /**
- * @dev Emitted when a children geodid is removed from a node
- */
- event ChildrenRemoved(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);
-
-
- /**
- * @dev Emitted when a children geodid does not have a parent when trying to remove it from a parent
- */
- event ChildrenErrorNoParent(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);
-
-
- /**
- * @dev Emitted when a children geodid does not exist
- */
- event ChildrenErrorNoExistence(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);
-
-
- /**
- * @dev Emitted when a children geodid already has a parent but shouldn't have
- */
- event ChildrenErrorHasParent(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);
-
-
- bytes32 public constant DATA_SUPPLIER = keccak256("DATA_SUPPLIER");
-
- string private _uri;
-
- // Mapping from GeodidID to registrant
- mapping (bytes32 => address) private _owners;
-
- // Mapping from GeodidID to Cid
- mapping (bytes32 => bytes32) private _cids;
-
- // Mapping from GeodidID to parenthood status
- mapping (bytes32 => bool) private _hasParent;
-
- // Mapping from GeodidID to parenthood type
- mapping (bytes32 => bool) private _canBeParent;
-
- // Mapping from GeodidID to root GeoDID
- mapping (bytes32 => bytes32) private _root;
-
- // Mapping from id to spatial asset external storage
- mapping (bytes32 => bytes32) private _externalStorage;
-
- // Allowed external storages signatures
- mapping (bytes32 => bool) private _allowedStorages;
-
-
- /**
- * @dev Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that
- * deploys the contract.
- */
- constructor(string memory uri) public {
- _setURI(uri);
- _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
- _setupRole(DATA_SUPPLIER, _msgSender());
-
- }
-
- /**
- * @dev Registers a new user with the ability to register a spatial asset.
- */
- function registerRole() public {
- require(!hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must not have a DATA_SUPPLIER role yet");
- _setupRole(DATA_SUPPLIER, _msgSender());
- }
-
- /**
- * @dev Registers a new storage that can accept GeoDID document creation
- */
- function enableStorage(bytes32 offChainStorage) public {
- require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), "SpatialAssets: must have admin role to edit allowed offchain storages");
- require(_allowedStorages[offChainStorage]== false, "SpatialAssets: storage must not be active yet");
- _allowedStorages[offChainStorage] = true;
- }
-
- /**
- * @dev Disables an existing storage
- */
- function disableStorage(bytes32 offChainStorage) public {
- require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), "SpatialAssets: must have admin role to edit allowed offchain storages");
- _allowedStorages[offChainStorage] = false;
- }
-
-
- /**
- * @dev Registers one spatial asset with external storage 'data' and assigns them to `account`.
- *
- * Emits a {SpatialAssetRegistered} event.
- */
- function registerSpatialAsset(address owner, bytes32 geoDIDId, bytes32 parentGeoDIDId , bytes32[] memory childrenGeoDIDIds, bytes32 cid, bytes32 offChainStorage, uint256 geoDIDtype) public {
- require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register");
- require(allowedStorages(offChainStorage), "SpatialAssets: storage must be allowed");
- require(_owners[geoDIDId] == address(0), "SpatialAssets: id must not have an owner yet");
- require(geoDIDtype == 0 || geoDIDtype == 1, "Spatial Assets: wrong geodidtype");
-
- _cids[geoDIDId] =cid;
- _owners[geoDIDId] = owner;
- _externalStorage[geoDIDId] = offChainStorage;
-
- if (geoDIDtype == 0) {
- _canBeParent[geoDIDId] = true;
- } else if (geoDIDtype == 1) {
- _canBeParent[geoDIDId] = false;
- }
-
- if (parentGeoDIDId == bytes32(0)) {
- _hasParent[geoDIDId] = false;
- _root[geoDIDId] = geoDIDId;
- emit SpatialAssetRegistered(owner, geoDIDId, cid, offChainStorage, geoDIDId, _canBeParent[geoDIDId]);
- } else {
- _hasParent[geoDIDId] = true;
- emit SpatialAssetRegistered(owner, geoDIDId, cid, offChainStorage, _root[parentGeoDIDId], _canBeParent[geoDIDId]);
- emit ParentAdded(geoDIDId, parentGeoDIDId);
- }
-
- uint256 childrensLen = childrenGeoDIDIds.length;
-
- if (childrensLen > 0 && _canBeParent[geoDIDId]){
- for(uint256 j=0; j < childrensLen; j++) {
- bytes32 childrenGeoDID = childrenGeoDIDIds[j];
- _hasParent[childrenGeoDID] = true;
- emit ChildrenAdded(geoDIDId, childrenGeoDID);
- }
- }
- }
-
-
- /**
- * @dev Adds children GeoDIDs to an already existent geoDID
- *
- * Emits a {ChildrenAdded} event.
- */
- function addChildrenGeoDIDs(bytes32 geoDIDId, bytes32[] memory childrenGeoDIDIds) public {
- require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register");
- require(_owners[geoDIDId] == _msgSender(), "SpatialAssets: geoDIDId must be owned by its creator");
- require(_canBeParent[geoDIDId], "SpatialAssets: geoDIDId must be able to be parent (a Collection)");
-
- uint256 childrensLen = childrenGeoDIDIds.length;
-
- if (childrensLen > 0){
- for(uint256 j=0; j < childrensLen; j++) {
- bytes32 childrenGeoDID = childrenGeoDIDIds[j];
- if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]) {
- _hasParent[childrenGeoDID] = true;
- _root[childrenGeoDID] = _root[geoDIDId];
- emit ChildrenAdded(geoDIDId, childrenGeoDID);
- } else if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]){
- emit ChildrenErrorHasParent(geoDIDId, childrenGeoDID);
- } else {
- emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID);
- }
- }
- }
- }
-
- /**
- * @dev Adds a parent GeoDID to an already existent geoDID
- *
- * Emits a {ParentAdded} event.
- */
- function addParentGeoDID(bytes32 geoDIDId, bytes32 parentGeoDIDId) public {
- require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register");
- require(_owners[geoDIDId] == _msgSender(), "SpatialAssets: geoDIDId must be owned by its creator");
- require(_owners[parentGeoDIDId] != address(0), "SpatialAssets: parentGeoDIDId does not exist");
- require(!_hasParent[geoDIDId], "SpatialAssets: geoDIDId already has a parent");
- require(_canBeParent[parentGeoDIDId], "SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)");
-
- _hasParent[geoDIDId] = true;
- _root[geoDIDId] = _root[parentGeoDIDId];
- emit ParentAdded(geoDIDId, parentGeoDIDId);
- }
-
-
- /**
- * @dev Removes childrenGeoDIDs from a geoDID
- *
- * Emits a {ChildrenRemoved} event.
- */
- function removeChildrenGeoDIDs(bytes32 geoDIDId, bytes32[] memory childrenGeoDIDIds) public {
- require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register");
- require(_owners[geoDIDId] == _msgSender(), "SpatialAssets: id must not have an owner yet");
-
- uint256 childrensLen = childrenGeoDIDIds.length;
-
- if (childrensLen > 0){
- for(uint256 j=0; j < childrensLen; j++) {
- bytes32 childrenGeoDID = childrenGeoDIDIds[j];
- if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]) {
- _hasParent[childrenGeoDID] = false;
- _root[childrenGeoDID] = childrenGeoDID;
- emit ChildrenRemoved(geoDIDId, childrenGeoDID);
- } else if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]){
- emit ChildrenErrorNoParent(geoDIDId, childrenGeoDID);
- } else {
- emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID);
- }
- }
- }
- }
-
-
- /**
- * @dev Removes a parent GeoDID from an already existent geoDID
- *
- * Emits a {ParentAdded} event.
- */
- function removeParentGeoDID(bytes32 geoDIDId, bytes32 parentGeoDIDId) public {
- require(hasRole(DATA_SUPPLIER, _msgSender()), "SpatialAssets: must have data supplier role to register");
- require(_owners[geoDIDId] == _msgSender(), "SpatialAssets: id must not have an owner yet");
- require(_owners[parentGeoDIDId] != address(0), "SpatialAssets: GeoDID to be removed as parent does not exist");
- require(_hasParent[geoDIDId], "SpatialAssets: GeoDID does not have a parent to remove");
-
- _hasParent[geoDIDId] = false;
- _root[geoDIDId] = geoDIDId;
-
- emit ParentRemoved(geoDIDId, parentGeoDIDId);
- }
-
- /**
- * @dev De-registers a spatial asset
- */
- function deactivateSpatialAsset(bytes32 geoDIDId, bytes32[] memory childrenToRemove) public {
- require(
- _owners[geoDIDId] == _msgSender(),"SpatialAssets: caller is not owner of the Spatial Asset"
- );
- _owners[geoDIDId] = address(0);
- _externalStorage[geoDIDId] = "";
- _cids[geoDIDId] = "";
- _hasParent[geoDIDId] = false;
- _root[geoDIDId] = "";
-
- uint256 childrensLen = childrenToRemove.length;
-
- if (childrensLen > 0){
- for(uint256 j=0; j < childrensLen; j++) {
- bytes32 childrenGeoDID = childrenToRemove[j];
- if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]) {
- _hasParent[childrenGeoDID] = false;
- _root[childrenGeoDID] = childrenGeoDID;
- emit ChildrenRemoved(geoDIDId, childrenGeoDID);
- } else if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]){
- emit ChildrenErrorNoParent(geoDIDId, childrenGeoDID);
- } else {
- emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID);
- }
- }
- }
-
- emit SpatialAssetDeactivated(geoDIDId);
- }
-
- /**
- * @dev Sets a new URI for all the spatial asset types
- */
- function _setURI(string memory newuri) internal {
- _uri = newuri;
- }
-
- function idToOwner(bytes32 id) public view returns (address) {
- return _owners[id];
- }
-
- function idToCid(bytes32 id) public view returns (bytes32) {
- return _cids[id];
- }
-
- function idToCanBeParent(bytes32 id) public view returns (bool) {
- return _canBeParent[id];
- }
-
- function idToHasParent(bytes32 id) public view returns (bool) {
- return _hasParent[id];
- }
-
- function idToExternalStorage(bytes32 id) public view returns (bytes32) {
- return _externalStorage[id];
- }
-
- function allowedStorages(bytes32 offChainStorage) public view returns (bool) {
- return _allowedStorages[offChainStorage];
- }
-
- function uri() public view returns (string memory) {
- return _uri;
- }
-}
diff --git a/legacy/packages/contracts/coverage.json b/legacy/packages/contracts/coverage.json
deleted file mode 100644
index 53f0d4e..0000000
--- a/legacy/packages/contracts/coverage.json
+++ /dev/null
@@ -1 +0,0 @@
-{"contracts/SpatialAssets.sol":{"l":{"96":3,"97":3,"98":3,"106":3,"107":1,"114":6,"115":4,"116":2,"123":3,"124":1,"134":24,"135":22,"136":20,"137":18,"139":16,"140":16,"141":16,"143":16,"144":9,"146":7,"149":16,"150":12,"151":12,"152":12,"154":4,"155":4,"156":4,"159":16,"161":16,"162":2,"163":2,"164":2,"165":2,"177":7,"178":5,"179":3,"181":1,"183":1,"184":1,"185":1,"186":1,"187":1,"188":1,"189":1,"191":0,"193":0,"205":11,"206":9,"207":7,"208":5,"209":3,"211":1,"212":1,"213":1,"223":5,"224":3,"226":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":1,"234":1,"236":0,"238":0,"251":9,"252":7,"253":5,"254":3,"256":1,"257":1,"259":1,"266":4,"269":2,"270":2,"271":2,"272":2,"273":2,"275":2,"277":2,"278":1,"279":1,"280":1,"281":1,"282":1,"283":1,"285":0,"287":0,"292":2,"299":3,"303":8,"307":2,"311":6,"315":12,"319":8,"323":24,"327":1},"path":"/home/j-mars/astralprotocol/astralprotocol/packages/contracts/contracts/SpatialAssets.sol","s":{"1":3,"2":3,"3":3,"4":3,"5":1,"6":6,"7":4,"8":2,"9":3,"10":1,"11":24,"12":22,"13":20,"14":18,"15":16,"16":16,"17":16,"18":16,"19":9,"20":7,"21":7,"22":16,"23":12,"24":12,"25":12,"26":4,"27":4,"28":4,"29":16,"30":16,"31":2,"32":2,"33":2,"34":2,"35":7,"36":5,"37":3,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":0,"47":0,"48":0,"49":11,"50":9,"51":7,"52":5,"53":3,"54":1,"55":1,"56":1,"57":5,"58":3,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":0,"68":0,"69":0,"70":9,"71":7,"72":5,"73":3,"74":1,"75":1,"76":1,"77":4,"78":2,"79":2,"80":2,"81":2,"82":2,"83":2,"84":2,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":0,"92":0,"93":0,"94":2,"95":3,"96":8,"97":2,"98":6,"99":12,"100":8,"101":24,"102":1},"b":{"1":[1,2],"2":[4,2],"3":[2,2],"4":[1,2],"5":[22,2],"6":[20,2],"7":[18,2],"8":[16,2],"9":[9,7],"10":[7,0],"11":[12,4],"12":[2,14],"13":[5,2],"14":[3,2],"15":[1,2],"16":[1,0],"17":[1,0],"18":[0,0],"19":[9,2],"20":[7,2],"21":[5,2],"22":[3,2],"23":[1,2],"24":[3,2],"25":[1,2],"26":[1,0],"27":[1,0],"28":[0,0],"29":[7,2],"30":[5,2],"31":[3,2],"32":[1,2],"33":[2,2],"34":[1,1],"35":[1,0],"36":[0,0]},"f":{"1":3,"2":3,"3":6,"4":3,"5":24,"6":7,"7":11,"8":5,"9":9,"10":4,"11":3,"12":8,"13":2,"14":6,"15":12,"16":8,"17":24,"18":1},"fnMap":{"1":{"name":"constructor","line":95,"loc":{"start":{"line":95,"column":4},"end":{"line":100,"column":4}}},"2":{"name":"registerRole","line":105,"loc":{"start":{"line":105,"column":4},"end":{"line":108,"column":4}}},"3":{"name":"enableStorage","line":113,"loc":{"start":{"line":113,"column":4},"end":{"line":117,"column":4}}},"4":{"name":"disableStorage","line":122,"loc":{"start":{"line":122,"column":4},"end":{"line":125,"column":4}}},"5":{"name":"registerSpatialAsset","line":133,"loc":{"start":{"line":133,"column":4},"end":{"line":168,"column":4}}},"6":{"name":"addChildrenGeoDIDs","line":176,"loc":{"start":{"line":176,"column":4},"end":{"line":197,"column":4}}},"7":{"name":"addParentGeoDID","line":204,"loc":{"start":{"line":204,"column":4},"end":{"line":214,"column":4}}},"8":{"name":"removeChildrenGeoDIDs","line":222,"loc":{"start":{"line":222,"column":4},"end":{"line":242,"column":4}}},"9":{"name":"removeParentGeoDID","line":250,"loc":{"start":{"line":250,"column":4},"end":{"line":260,"column":4}}},"10":{"name":"deactivateSpatialAsset","line":265,"loc":{"start":{"line":265,"column":5},"end":{"line":293,"column":4}}},"11":{"name":"_setURI","line":298,"loc":{"start":{"line":298,"column":4},"end":{"line":300,"column":4}}},"12":{"name":"idToOwner","line":302,"loc":{"start":{"line":302,"column":4},"end":{"line":304,"column":4}}},"13":{"name":"idToCid","line":306,"loc":{"start":{"line":306,"column":4},"end":{"line":308,"column":4}}},"14":{"name":"idToCanBeParent","line":310,"loc":{"start":{"line":310,"column":4},"end":{"line":312,"column":4}}},"15":{"name":"idToHasParent","line":314,"loc":{"start":{"line":314,"column":4},"end":{"line":316,"column":4}}},"16":{"name":"idToExternalStorage","line":318,"loc":{"start":{"line":318,"column":4},"end":{"line":320,"column":4}}},"17":{"name":"allowedStorages","line":322,"loc":{"start":{"line":322,"column":4},"end":{"line":324,"column":4}}},"18":{"name":"uri","line":326,"loc":{"start":{"line":326,"column":4},"end":{"line":328,"column":4}}}},"statementMap":{"1":{"start":{"line":96,"column":8},"end":{"line":96,"column":19}},"2":{"start":{"line":97,"column":8},"end":{"line":97,"column":51}},"3":{"start":{"line":98,"column":8},"end":{"line":98,"column":46}},"4":{"start":{"line":106,"column":8},"end":{"line":106,"column":110}},"5":{"start":{"line":107,"column":8},"end":{"line":107,"column":46}},"6":{"start":{"line":114,"column":8},"end":{"line":114,"column":130}},"7":{"start":{"line":115,"column":8},"end":{"line":115,"column":106}},"8":{"start":{"line":116,"column":8},"end":{"line":116,"column":47}},"9":{"start":{"line":123,"column":8},"end":{"line":123,"column":130}},"10":{"start":{"line":124,"column":8},"end":{"line":124,"column":48}},"11":{"start":{"line":134,"column":8},"end":{"line":134,"column":111}},"12":{"start":{"line":135,"column":8},"end":{"line":135,"column":90}},"13":{"start":{"line":136,"column":8},"end":{"line":136,"column":95}},"14":{"start":{"line":137,"column":8},"end":{"line":137,"column":87}},"15":{"start":{"line":139,"column":8},"end":{"line":139,"column":27}},"16":{"start":{"line":140,"column":8},"end":{"line":140,"column":32}},"17":{"start":{"line":141,"column":8},"end":{"line":141,"column":51}},"18":{"start":{"line":143,"column":8},"end":{"line":143,"column":5254}},"19":{"start":{"line":144,"column":12},"end":{"line":144,"column":40}},"20":{"start":{"line":145,"column":15},"end":{"line":145,"column":5335}},"21":{"start":{"line":146,"column":12},"end":{"line":146,"column":41}},"22":{"start":{"line":149,"column":8},"end":{"line":149,"column":5421}},"23":{"start":{"line":150,"column":12},"end":{"line":150,"column":39}},"24":{"start":{"line":151,"column":12},"end":{"line":151,"column":37}},"25":{"start":{"line":152,"column":8},"end":{"line":152,"column":108}},"26":{"start":{"line":154,"column":12},"end":{"line":154,"column":38}},"27":{"start":{"line":155,"column":12},"end":{"line":155,"column":125}},"28":{"start":{"line":156,"column":12},"end":{"line":156,"column":54}},"29":{"start":{"line":159,"column":8},"end":{"line":159,"column":55}},"30":{"start":{"line":161,"column":8},"end":{"line":161,"column":5967}},"31":{"start":{"line":162,"column":12},"end":{"line":162,"column":6032}},"32":{"start":{"line":163,"column":16},"end":{"line":163,"column":61}},"33":{"start":{"line":164,"column":16},"end":{"line":164,"column":48}},"34":{"start":{"line":165,"column":16},"end":{"line":165,"column":60}},"35":{"start":{"line":177,"column":8},"end":{"line":177,"column":111}},"36":{"start":{"line":178,"column":8},"end":{"line":178,"column":105}},"37":{"start":{"line":179,"column":8},"end":{"line":179,"column":106}},"38":{"start":{"line":181,"column":8},"end":{"line":181,"column":55}},"39":{"start":{"line":183,"column":8},"end":{"line":183,"column":6896}},"40":{"start":{"line":184,"column":12},"end":{"line":184,"column":6935}},"41":{"start":{"line":185,"column":16},"end":{"line":185,"column":61}},"42":{"start":{"line":186,"column":16},"end":{"line":186,"column":7060}},"43":{"start":{"line":187,"column":20},"end":{"line":187,"column":52}},"44":{"start":{"line":188,"column":20},"end":{"line":188,"column":58}},"45":{"start":{"line":189,"column":20},"end":{"line":189,"column":64}},"46":{"start":{"line":190,"column":23},"end":{"line":190,"column":7341}},"47":{"start":{"line":191,"column":20},"end":{"line":191,"column":72}},"48":{"start":{"line":193,"column":20},"end":{"line":193,"column":75}},"49":{"start":{"line":205,"column":8},"end":{"line":205,"column":111}},"50":{"start":{"line":206,"column":8},"end":{"line":206,"column":105}},"51":{"start":{"line":207,"column":8},"end":{"line":207,"column":101}},"52":{"start":{"line":208,"column":8},"end":{"line":208,"column":85}},"53":{"start":{"line":209,"column":8},"end":{"line":209,"column":118}},"54":{"start":{"line":211,"column":8},"end":{"line":211,"column":34}},"55":{"start":{"line":212,"column":8},"end":{"line":212,"column":46}},"56":{"start":{"line":213,"column":8},"end":{"line":213,"column":50}},"57":{"start":{"line":223,"column":8},"end":{"line":223,"column":111}},"58":{"start":{"line":224,"column":8},"end":{"line":224,"column":97}},"59":{"start":{"line":226,"column":8},"end":{"line":226,"column":55}},"60":{"start":{"line":228,"column":8},"end":{"line":228,"column":9012}},"61":{"start":{"line":229,"column":12},"end":{"line":229,"column":9051}},"62":{"start":{"line":230,"column":16},"end":{"line":230,"column":61}},"63":{"start":{"line":231,"column":16},"end":{"line":231,"column":9176}},"64":{"start":{"line":232,"column":20},"end":{"line":232,"column":53}},"65":{"start":{"line":233,"column":20},"end":{"line":233,"column":57}},"66":{"start":{"line":234,"column":20},"end":{"line":234,"column":66}},"67":{"start":{"line":235,"column":23},"end":{"line":235,"column":9458}},"68":{"start":{"line":236,"column":20},"end":{"line":236,"column":73}},"69":{"start":{"line":238,"column":20},"end":{"line":238,"column":75}},"70":{"start":{"line":251,"column":8},"end":{"line":251,"column":111}},"71":{"start":{"line":252,"column":8},"end":{"line":252,"column":97}},"72":{"start":{"line":253,"column":8},"end":{"line":253,"column":117}},"73":{"start":{"line":254,"column":8},"end":{"line":254,"column":94}},"74":{"start":{"line":256,"column":8},"end":{"line":256,"column":35}},"75":{"start":{"line":257,"column":8},"end":{"line":257,"column":33}},"76":{"start":{"line":259,"column":8},"end":{"line":259,"column":52}},"77":{"start":{"line":266,"column":8},"end":{"line":266,"column":10703}},"78":{"start":{"line":269,"column":8},"end":{"line":269,"column":37}},"79":{"start":{"line":270,"column":8},"end":{"line":270,"column":38}},"80":{"start":{"line":271,"column":8},"end":{"line":271,"column":27}},"81":{"start":{"line":272,"column":8},"end":{"line":272,"column":35}},"82":{"start":{"line":273,"column":8},"end":{"line":273,"column":27}},"83":{"start":{"line":275,"column":8},"end":{"line":275,"column":54}},"84":{"start":{"line":277,"column":8},"end":{"line":277,"column":11072}},"85":{"start":{"line":278,"column":12},"end":{"line":278,"column":11111}},"86":{"start":{"line":279,"column":16},"end":{"line":279,"column":60}},"87":{"start":{"line":280,"column":16},"end":{"line":280,"column":11235}},"88":{"start":{"line":281,"column":20},"end":{"line":281,"column":53}},"89":{"start":{"line":282,"column":20},"end":{"line":282,"column":57}},"90":{"start":{"line":283,"column":20},"end":{"line":283,"column":66}},"91":{"start":{"line":284,"column":24},"end":{"line":284,"column":11518}},"92":{"start":{"line":285,"column":20},"end":{"line":285,"column":73}},"93":{"start":{"line":287,"column":20},"end":{"line":287,"column":75}},"94":{"start":{"line":292,"column":8},"end":{"line":292,"column":46}},"95":{"start":{"line":299,"column":8},"end":{"line":299,"column":20}},"96":{"start":{"line":303,"column":8},"end":{"line":303,"column":26}},"97":{"start":{"line":307,"column":8},"end":{"line":307,"column":24}},"98":{"start":{"line":311,"column":8},"end":{"line":311,"column":31}},"99":{"start":{"line":315,"column":8},"end":{"line":315,"column":29}},"100":{"start":{"line":319,"column":8},"end":{"line":319,"column":35}},"101":{"start":{"line":323,"column":8},"end":{"line":323,"column":48}},"102":{"start":{"line":327,"column":8},"end":{"line":327,"column":19}}},"branchMap":{"1":{"line":106,"type":"if","locations":[{"start":{"line":106,"column":8},"end":{"line":106,"column":8}},{"start":{"line":106,"column":8},"end":{"line":106,"column":8}}]},"2":{"line":114,"type":"if","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":8}},{"start":{"line":114,"column":8},"end":{"line":114,"column":8}}]},"3":{"line":115,"type":"if","locations":[{"start":{"line":115,"column":8},"end":{"line":115,"column":8}},{"start":{"line":115,"column":8},"end":{"line":115,"column":8}}]},"4":{"line":123,"type":"if","locations":[{"start":{"line":123,"column":8},"end":{"line":123,"column":8}},{"start":{"line":123,"column":8},"end":{"line":123,"column":8}}]},"5":{"line":134,"type":"if","locations":[{"start":{"line":134,"column":8},"end":{"line":134,"column":8}},{"start":{"line":134,"column":8},"end":{"line":134,"column":8}}]},"6":{"line":135,"type":"if","locations":[{"start":{"line":135,"column":8},"end":{"line":135,"column":8}},{"start":{"line":135,"column":8},"end":{"line":135,"column":8}}]},"7":{"line":136,"type":"if","locations":[{"start":{"line":136,"column":8},"end":{"line":136,"column":8}},{"start":{"line":136,"column":8},"end":{"line":136,"column":8}}]},"8":{"line":137,"type":"if","locations":[{"start":{"line":137,"column":8},"end":{"line":137,"column":8}},{"start":{"line":137,"column":8},"end":{"line":137,"column":8}}]},"9":{"line":143,"type":"if","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":8}},{"start":{"line":143,"column":8},"end":{"line":143,"column":8}}]},"10":{"line":145,"type":"if","locations":[{"start":{"line":145,"column":15},"end":{"line":145,"column":15}},{"start":{"line":145,"column":15},"end":{"line":145,"column":15}}]},"11":{"line":149,"type":"if","locations":[{"start":{"line":149,"column":8},"end":{"line":149,"column":8}},{"start":{"line":149,"column":8},"end":{"line":149,"column":8}}]},"12":{"line":161,"type":"if","locations":[{"start":{"line":161,"column":8},"end":{"line":161,"column":8}},{"start":{"line":161,"column":8},"end":{"line":161,"column":8}}]},"13":{"line":177,"type":"if","locations":[{"start":{"line":177,"column":8},"end":{"line":177,"column":8}},{"start":{"line":177,"column":8},"end":{"line":177,"column":8}}]},"14":{"line":178,"type":"if","locations":[{"start":{"line":178,"column":8},"end":{"line":178,"column":8}},{"start":{"line":178,"column":8},"end":{"line":178,"column":8}}]},"15":{"line":179,"type":"if","locations":[{"start":{"line":179,"column":8},"end":{"line":179,"column":8}},{"start":{"line":179,"column":8},"end":{"line":179,"column":8}}]},"16":{"line":183,"type":"if","locations":[{"start":{"line":183,"column":8},"end":{"line":183,"column":8}},{"start":{"line":183,"column":8},"end":{"line":183,"column":8}}]},"17":{"line":186,"type":"if","locations":[{"start":{"line":186,"column":16},"end":{"line":186,"column":16}},{"start":{"line":186,"column":16},"end":{"line":186,"column":16}}]},"18":{"line":190,"type":"if","locations":[{"start":{"line":190,"column":23},"end":{"line":190,"column":23}},{"start":{"line":190,"column":23},"end":{"line":190,"column":23}}]},"19":{"line":205,"type":"if","locations":[{"start":{"line":205,"column":8},"end":{"line":205,"column":8}},{"start":{"line":205,"column":8},"end":{"line":205,"column":8}}]},"20":{"line":206,"type":"if","locations":[{"start":{"line":206,"column":8},"end":{"line":206,"column":8}},{"start":{"line":206,"column":8},"end":{"line":206,"column":8}}]},"21":{"line":207,"type":"if","locations":[{"start":{"line":207,"column":8},"end":{"line":207,"column":8}},{"start":{"line":207,"column":8},"end":{"line":207,"column":8}}]},"22":{"line":208,"type":"if","locations":[{"start":{"line":208,"column":8},"end":{"line":208,"column":8}},{"start":{"line":208,"column":8},"end":{"line":208,"column":8}}]},"23":{"line":209,"type":"if","locations":[{"start":{"line":209,"column":8},"end":{"line":209,"column":8}},{"start":{"line":209,"column":8},"end":{"line":209,"column":8}}]},"24":{"line":223,"type":"if","locations":[{"start":{"line":223,"column":8},"end":{"line":223,"column":8}},{"start":{"line":223,"column":8},"end":{"line":223,"column":8}}]},"25":{"line":224,"type":"if","locations":[{"start":{"line":224,"column":8},"end":{"line":224,"column":8}},{"start":{"line":224,"column":8},"end":{"line":224,"column":8}}]},"26":{"line":228,"type":"if","locations":[{"start":{"line":228,"column":8},"end":{"line":228,"column":8}},{"start":{"line":228,"column":8},"end":{"line":228,"column":8}}]},"27":{"line":231,"type":"if","locations":[{"start":{"line":231,"column":16},"end":{"line":231,"column":16}},{"start":{"line":231,"column":16},"end":{"line":231,"column":16}}]},"28":{"line":235,"type":"if","locations":[{"start":{"line":235,"column":23},"end":{"line":235,"column":23}},{"start":{"line":235,"column":23},"end":{"line":235,"column":23}}]},"29":{"line":251,"type":"if","locations":[{"start":{"line":251,"column":8},"end":{"line":251,"column":8}},{"start":{"line":251,"column":8},"end":{"line":251,"column":8}}]},"30":{"line":252,"type":"if","locations":[{"start":{"line":252,"column":8},"end":{"line":252,"column":8}},{"start":{"line":252,"column":8},"end":{"line":252,"column":8}}]},"31":{"line":253,"type":"if","locations":[{"start":{"line":253,"column":8},"end":{"line":253,"column":8}},{"start":{"line":253,"column":8},"end":{"line":253,"column":8}}]},"32":{"line":254,"type":"if","locations":[{"start":{"line":254,"column":8},"end":{"line":254,"column":8}},{"start":{"line":254,"column":8},"end":{"line":254,"column":8}}]},"33":{"line":266,"type":"if","locations":[{"start":{"line":266,"column":8},"end":{"line":266,"column":8}},{"start":{"line":266,"column":8},"end":{"line":266,"column":8}}]},"34":{"line":277,"type":"if","locations":[{"start":{"line":277,"column":8},"end":{"line":277,"column":8}},{"start":{"line":277,"column":8},"end":{"line":277,"column":8}}]},"35":{"line":280,"type":"if","locations":[{"start":{"line":280,"column":16},"end":{"line":280,"column":16}},{"start":{"line":280,"column":16},"end":{"line":280,"column":16}}]},"36":{"line":284,"type":"if","locations":[{"start":{"line":284,"column":24},"end":{"line":284,"column":24}},{"start":{"line":284,"column":24},"end":{"line":284,"column":24}}]}}}}
\ No newline at end of file
diff --git a/legacy/packages/contracts/migrations/1_initial_migration.js b/legacy/packages/contracts/migrations/1_initial_migration.js
deleted file mode 100644
index 1eb6f9d..0000000
--- a/legacy/packages/contracts/migrations/1_initial_migration.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var Migrations = artifacts.require('./Migrations.sol')
-
-module.exports = function(deployer) {
- deployer.deploy(Migrations)
-}
diff --git a/legacy/packages/contracts/migrations/2_deploy_contract.js b/legacy/packages/contracts/migrations/2_deploy_contract.js
deleted file mode 100644
index a621f81..0000000
--- a/legacy/packages/contracts/migrations/2_deploy_contract.js
+++ /dev/null
@@ -1,13 +0,0 @@
-const SpatialAssets = artifacts.require("./SpatialAssets.sol");
-
-module.exports = async function (deployer) {
- await deployer.deploy(SpatialAssets, "did:geo:{id}");
-
- const SpatialAssetsContract = await SpatialAssets.deployed();
-
- console.log(
- "Spatial Asset Registrar deployed at:",
- SpatialAssetsContract.address
- );
-
-};
diff --git a/legacy/packages/contracts/package.json b/legacy/packages/contracts/package.json
deleted file mode 100644
index 7808850..0000000
--- a/legacy/packages/contracts/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "@astralprotocol/contracts",
- "version": "1.0.12",
- "description": "These contracts serve as the Registry for the Astral Protocol GeoDIDs. It allows binding of a GeoDID to an ethereum address and CID name resolving. ",
- "author": "Astral ",
- "homepage": "https://github.com/AstralProtocol/astralprotocol#readme",
- "license": "MIT OR Apache-2.0",
- "main": "truffle-config.js",
- "directories": {
- "build": "build",
- "contracts": "contracts",
- "migrations": "migrations"
- },
- "files": [
- "build"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/AstralProtocol/astralprotocol.git",
- "directory": "packages/contracts"
- },
- "publishConfig": {
- "registry": "https://registry.npmjs.org"
- },
- "scripts": {
- "tsc": "tsc",
- "test": "echo \"Error: run tests from root\" && exit 1",
- "console": "truffle console --network development",
- "ganache": "ganache-cli -h 0.0.0.0 -p 8545 -d -i 333",
- "deployGeoDIDs": "truffle exec scripts/deployGeoDIDs.js --network ropsten",
- "testg": "truffle exec scripts/test.js --network development",
- "new-instance": "truffle exec scripts/newInstance.js --network development",
- "remove-links": "truffle exec scripts/newInstance-remove.js --network development",
- "truffle-build": "truffle compile -all",
- "truffle": "truffle compile --all && truffle migrate --network development --reset && cp -vr ./build/contracts/SpatialAssets.json ../subgraph/abis/SpatialAssets.json",
- "truffle-ropsten": "truffle compile --all && truffle migrate --network ropsten --reset && cp -vr ./build/contracts/SpatialAssets.json ../subgraph/abis/SpatialAssets.json",
- "mythx": "truffle run verify",
- "truffle-test": "truffle test",
- "coverage": "truffle run coverage --solcoverjs ./.solcover.js --network development"
- },
- "bugs": {
- "url": "https://github.com/AstralProtocol/astralprotocol/issues",
- "access": "public"
- },
- "dependencies": {
- "@astralprotocol/core": "^0.1.10",
- "@openzeppelin/contracts": "^3.2.0",
- "@truffle/hdwallet-provider": "^1.1.1",
- "bs58": "^4.0.1",
- "coveralls": "^3.1.0",
- "dotenv": "^8.2.0",
- "solidity-coverage": "^0.7.13",
- "truffle": "^5.1.49"
- }
-}
diff --git a/legacy/packages/contracts/scripts/deployGeoDIDs.js b/legacy/packages/contracts/scripts/deployGeoDIDs.js
deleted file mode 100644
index 4c796f3..0000000
--- a/legacy/packages/contracts/scripts/deployGeoDIDs.js
+++ /dev/null
@@ -1,100 +0,0 @@
-const { AstralClient } = require('@astralprotocol/core');
-const SpatialAssets = require("../build/contracts/SpatialAssets.json")
-const bs58 = require('bs58')
-
-module.exports = async function (callback) {
- const stringToBytes = (string) => web3.utils.asciiToHex(string)
-
- // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32
- // Return bytes32 hex string from base58 encoded ipfs hash,
- // stripping leading 2 bytes from 34 byte IPFS hash
- // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits
- // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" -->
- // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231"
- function getBytes32FromIpfsHash(ipfsListing) {
- return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex')
- }
-
- try {
-
- const accounts = await web3.eth.getAccounts()
- const userAccount = accounts[0]
-
- // find contract in network 3 (Ropsten)
- const SpatialAssetsContract = new web3.eth.Contract(SpatialAssets.abi, SpatialAssets.networks['3'].address, {
- from: userAccount,
- data: SpatialAssets.deployedBytecode,
- });
-
- const astral = new AstralClient(userAccount);
-
- const storage = stringToBytes('FILECOIN');
- // Enable a storage first
-
- try {
- await SpatialAssetsContract.methods.enableStorage(storage).send()
- .on('receipt', function(receipt){
- // receipt example
- console.log(receipt);
-
- })
- .on('error', function() { // If the transaction was rejected by the network with a receipt, the second parameter will be the receipt.
- console.log('Already enabled storage: ' + storage);
- });
- }
- catch (err) {
- // Will throw an error if storage is already active
- console.log(err)
- }
-
-
- // Creates a Genesis GeoDID
-
- const genDocRes = await astral.createGenesisGeoDID('collection')
- console.log(genDocRes);
-
- // With the returned IDocumentInfo from the last function, we can pin it.
- // Since no token was specified the client will assign a new auth Token to the user.
-
- const results = await astral.pinDocument(genDocRes);
- console.log(results);
-
- const token = results.token;
-
- // register the geodid id and cid obtained. Type 0 because it is a collection
-
- console.log(results.geodidid)
- console.log(results.cid)
-
- const bytes32GeoDID= getBytes32FromIpfsHash(results.geodidid.substring(8));
- const bytes32Cid = getBytes32FromIpfsHash(results.cid);
-
- try {
- await SpatialAssetsContract.methods.registerSpatialAsset(userAccount, bytes32GeoDID, stringToBytes(''),[], bytes32Cid, storage,0).send()
- .on('receipt', function(receipt){
- // receipt example
- console.log(receipt);
-
- })
- .on('error', function(error) { // If the transaction was rejected by the network with a receipt, the second parameter will be the receipt.
- console.log(error);
- });
- }
- catch (err) {
- // Will throw an error if tx reverts
- console.log(err)
- }
-
-
- // With the Auth Token and the GeoDID ID we can load the document with the loadDocument function
-
- const loadResults = await astral.loadDocument(results.geodidid, token);
- console.log(loadResults);
-
- }
- catch(error) {
- console.log(error)
- }
-
- callback()
-};
diff --git a/legacy/packages/contracts/scripts/newInstance-remove.js b/legacy/packages/contracts/scripts/newInstance-remove.js
deleted file mode 100644
index 9eae4f8..0000000
--- a/legacy/packages/contracts/scripts/newInstance-remove.js
+++ /dev/null
@@ -1,107 +0,0 @@
-const SpatialAssets = artifacts.require("./SpatialAssets.sol");
-const bs58 = require('bs58')
-
-module.exports = async function (callback) {
- const stringToBytes = (string) => web3.utils.asciiToHex(string)
-
-
- // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32
- // Return bytes32 hex string from base58 encoded ipfs hash,
- // stripping leading 2 bytes from 34 byte IPFS hash
- // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits
- // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" -->
- // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231"
- function getBytes32FromIpfsHash(ipfsListing) {
- return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex')
- }
-
- const geoDID1 = 'did:geo:QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ';
-
- const geoDID2 = 'did:geo:QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL';
-
- const geoDID3 = 'did:geo:QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd';
-
- const geoDID4 = 'did:geo:QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE';
-
- const geoDID5 = 'did:geo:QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps';
-
- const geoDID6 = 'did:geo:QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd';
-
- const geoDID7 = 'did:geo:QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW';
-
- const geoDIDError = 'did:geo:QmYS4JAwG45SvDEC5AM9Hzv1dfzPoXoBq1N9aTbT3bEs86';
-
- const bytes32GeoDID1= getBytes32FromIpfsHash(geoDID1.substring(8));
- const bytes32GeoDID2= getBytes32FromIpfsHash(geoDID2.substring(8));
- const bytes32GeoDID3= getBytes32FromIpfsHash(geoDID3.substring(8));
- const bytes32GeoDID4= getBytes32FromIpfsHash(geoDID4.substring(8));
- const bytes32GeoDID5= getBytes32FromIpfsHash(geoDID5.substring(8));
- const bytes32GeoDID6= getBytes32FromIpfsHash(geoDID6.substring(8));
- const bytes32GeoDID7= getBytes32FromIpfsHash(geoDID7.substring(8));
- const bytes32GeoDIDError= getBytes32FromIpfsHash(geoDIDError.substring(8));
-
-
- try {
-
- const SpatialAssetsContract = await SpatialAssets.deployed();
- let tx
-
- // geodid id 4 remove parent 3
- tx = await SpatialAssetsContract.removeParentGeoDID(bytes32GeoDID4,bytes32GeoDID3)
-
- console.log(
- " geodid id 4 remove parent 3 ",
- tx.tx )
-
-
- // geodid id 6 remove children 1 and 5
- tx = await SpatialAssetsContract.removeChildrenGeoDIDs(bytes32GeoDID6,[bytes32GeoDID1,bytes32GeoDID5])
-
- console.log(
- " geodid id 6 remove children 1 and 5",
- tx.tx
- );
-
-
-
- tx = await SpatialAssetsContract.deactivateSpatialAsset(bytes32GeoDID2,[bytes32GeoDID7])
-
- console.log(
- " geodid id 2 delete",
- tx.tx
- );
-
- // should emit an error that children to be added does not exist
- tx = await SpatialAssetsContract.removeChildrenGeoDIDs(bytes32GeoDID1,[bytes32GeoDIDError])
-
- console.log(
- " geodid id 1 remove error child does not exist",
- tx.tx
- );
-
- // should emit an error in 6 that children already has a parent
- tx = await SpatialAssetsContract.addChildrenGeoDIDs(bytes32GeoDID6,[bytes32GeoDID3])
-
- console.log(
- " geodid id 6 remove error 3 already has a parent",
- tx.tx
- );
-
- // should emit an error that children to be removed does not have a parent
- tx = await SpatialAssetsContract.removeChildrenGeoDIDs(bytes32GeoDID1,[bytes32GeoDID4])
-
- console.log(
- " geodid id 1 remove error 4 does not have a parent",
- tx.tx
- );
-
-
-
-
- }
- catch(error) {
- console.log(error)
- }
-
- callback()
-};
diff --git a/legacy/packages/contracts/scripts/newInstance.js b/legacy/packages/contracts/scripts/newInstance.js
deleted file mode 100644
index f04e154..0000000
--- a/legacy/packages/contracts/scripts/newInstance.js
+++ /dev/null
@@ -1,148 +0,0 @@
-const SpatialAssets = artifacts.require("./SpatialAssets.sol");
-const bs58 = require('bs58')
-
-module.exports = async function (callback) {
-
- const stringToBytes = (string) => web3.utils.asciiToHex(string)
-
-
- // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32
- // Return bytes32 hex string from base58 encoded ipfs hash,
- // stripping leading 2 bytes from 34 byte IPFS hash
- // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits
- // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" -->
- // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231"
- function getBytes32FromIpfsHash(ipfsListing) {
- return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex')
- }
-
- const geoDID1 = 'did:geo:QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ';
- const cid1 = 'QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ';
-
- const geoDID2 = 'did:geo:QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL';
- const cid2 = 'QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL';
-
- const geoDID3 = 'did:geo:QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd';
- const cid3 = 'QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd';
-
- const geoDID4 = 'did:geo:QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE';
- const cid4 = 'QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE';
-
- const geoDID5 = 'did:geo:QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps';
- const cid5 = 'QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps';
-
- const geoDID6 = 'did:geo:QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd';
- const cid6 = 'QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd';
-
- const geoDID7 = 'did:geo:QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW';
- const cid7 = 'QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW';
-
-
- const bytes32GeoDID1= getBytes32FromIpfsHash(geoDID1.substring(8));
- const bytes32Cid1 = getBytes32FromIpfsHash(cid1);
-
- const bytes32GeoDID2= getBytes32FromIpfsHash(geoDID2.substring(8));
- const bytes32Cid2 = getBytes32FromIpfsHash(cid2);
-
- const bytes32GeoDID3= getBytes32FromIpfsHash(geoDID3.substring(8));
- const bytes32Cid3 = getBytes32FromIpfsHash(cid3);
-
- const bytes32GeoDID4= getBytes32FromIpfsHash(geoDID4.substring(8));
- const bytes32Cid4 = getBytes32FromIpfsHash(cid4);
-
- const bytes32GeoDID5= getBytes32FromIpfsHash(geoDID5.substring(8));
- const bytes32Cid5 = getBytes32FromIpfsHash(cid5);
-
- const bytes32GeoDID6= getBytes32FromIpfsHash(geoDID6.substring(8));
- const bytes32Cid6 = getBytes32FromIpfsHash(cid6);
-
- const bytes32GeoDID7= getBytes32FromIpfsHash(geoDID7.substring(8));
- const bytes32Cid7 = getBytes32FromIpfsHash(cid7);
-
-
-
- try {
-
- const accounts = await web3.eth.getAccounts()
-
- const SpatialAssetsContract = await SpatialAssets.deployed();
-
- let tx = await SpatialAssetsContract.enableStorage(stringToBytes('FILECOIN'));
-
- console.log(
- "Storage enabled. Tx: ",
- tx.tx
- );
-
- tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0], bytes32GeoDID1, stringToBytes(''),[], bytes32Cid1,stringToBytes('FILECOIN'),0);
-
-
- console.log(
- "geodid ",
- tx.tx
- );
-
- tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID2,bytes32GeoDID1,[],bytes32Cid2, stringToBytes("FILECOIN"),0)
-
-
- console.log(
- "geodid ",
- tx.tx
- );
-
- tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID3,bytes32GeoDID1,[],bytes32Cid3, stringToBytes("FILECOIN"),0)
-
- console.log(
- "geodid ",
- tx.tx
- );
-
- tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID4,bytes32GeoDID3,[],bytes32Cid4, stringToBytes("FILECOIN"),1)
-
- console.log(
- "geodid ",
- tx.tx
- );
-
- tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID5,stringToBytes(''),[],bytes32Cid5, stringToBytes("FILECOIN"),1)
-
- console.log(
- "geodid 1",
- tx.tx
- );
-
- tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID6,stringToBytes(''),[],bytes32Cid6, stringToBytes("FILECOIN"),0)
-
- console.log(
- "geodid ",
- tx.tx
- );
- tx = await SpatialAssetsContract.addChildrenGeoDIDs(bytes32GeoDID6,[bytes32GeoDID1,bytes32GeoDID5])
-
- console.log(
- "geodid ",
- tx.tx
- );
-
- tx = await SpatialAssetsContract.registerSpatialAsset(accounts[0],bytes32GeoDID7,stringToBytes(''),[],bytes32Cid7, stringToBytes("FILECOIN"),1)
-
- console.log(
- "geodid ",
- tx.tx
- );
-
-
- tx = await SpatialAssetsContract.addParentGeoDID(bytes32GeoDID7,bytes32GeoDID2)
-
- console.log(
- " geodid ",
- tx.tx
- );
-
- }
- catch(error) {
- console.log(error)
- }
-
- callback()
-};
diff --git a/legacy/packages/contracts/scripts/test.js b/legacy/packages/contracts/scripts/test.js
deleted file mode 100644
index 60aae33..0000000
--- a/legacy/packages/contracts/scripts/test.js
+++ /dev/null
@@ -1,82 +0,0 @@
-const SpatialAssets = artifacts.require("./SpatialAssets.sol");
-const bs58 = require('bs58')
-
-module.exports = async function (callback) {
-
- const stringToBytes = (string) => web3.utils.asciiToHex(string)
-
-
- // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32
- // Return bytes32 hex string from base58 encoded ipfs hash,
- // stripping leading 2 bytes from 34 byte IPFS hash
- // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits
- // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" -->
- // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231"
- function getBytes32FromIpfsHash(ipfsListing) {
- return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex')
- }
-
- // Return base58 encoded ipfs hash from bytes32 hex string,
- // E.g. "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231"
- // --> "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL"
-
- function getIpfsHashFromBytes32(bytes32Hex) {
- // Add our default ipfs values for first 2 bytes:
- // function:0x12=sha2, size:0x20=256 bits
- // and cut off leading "0x"
- const hashHex = "1220" + bytes32Hex.slice(2)
- const hashBytes = Buffer.from(hashHex, 'hex');
- const hashStr = bs58.encode(hashBytes)
- return hashStr
- }
-
- const geoDID1 = 'did:geo:QmUZ4e5quBeXG5t38hGBgXweob5rat9mcix6qn9AsAMrsC';
-
- const geoDID2 = 'did:geo:QmZ9Mc8sPk6oASJz4g1cvgh5bvps6bp7s6B2seK9NyL5qj';
-
- const geoDID3 = 'did:geo:QmYgxdsHwArsZdActpg5APsTuYuFAYJY4gZxZkxAcCuDNN';
-
-
- const bytes32GeoDID1= getBytes32FromIpfsHash(geoDID1.substring(8));
-
- const bytes32GeoDID2= getBytes32FromIpfsHash(geoDID2.substring(8));
-
- const bytes32GeoDID3= getBytes32FromIpfsHash(geoDID3.substring(8));
-
-
-
- try {
-
-
- console.log("GeoDID1: ", geoDID1)
-
- console.log("Bytes32 GeoDID1: ", bytes32GeoDID1)
-
- console.log("Calculated GeoDID1: ", getIpfsHashFromBytes32(bytes32GeoDID1))
- console.log("Calculated GeoDID from subgraph: ", getIpfsHashFromBytes32("0x5c5426554833fdbd64d4041b07a49363a9275520839c88cb9d7d4b5957acbe73"))
-
- console.log(" ")
-
- console.log("GeoDID2: ", geoDID2)
-
- console.log("Bytes32 GeoDID2: ", bytes32GeoDID2)
-
- console.log("Calculated GeoDID2: ", getIpfsHashFromBytes32(bytes32GeoDID2))
- console.log("Calculated GeoDID from subgraph: ", getIpfsHashFromBytes32("0xa08bd4357eb3a3dbc6b8634c90ab033e51c7027c10468cb90550ad53429f1e32"))
-
- console.log(" ")
-
- console.log("GeoDI3: ", geoDID3)
-
- console.log("Bytes32 GeoDID3: ", bytes32GeoDID3)
-
- console.log("Calculated GeoDID3: ", getIpfsHashFromBytes32(bytes32GeoDID3))
- console.log("Calculated GeoDID3 from subgraph: ", getIpfsHashFromBytes32("0x99c8c166e8986ffd28f5f5b6438791fb030c406e6fb717cdf3e6a84888be47f7"))
-
- }
- catch(error) {
- console.log(error)
- }
-
- callback()
-};
diff --git a/legacy/packages/contracts/test/SpatialAssets.js b/legacy/packages/contracts/test/SpatialAssets.js
deleted file mode 100644
index 4a118d3..0000000
--- a/legacy/packages/contracts/test/SpatialAssets.js
+++ /dev/null
@@ -1,773 +0,0 @@
-const SpatialAssets = artifacts.require("SpatialAssets");
-const bs58 = require('bs58')
-
-contract("SpatialAssets", async accounts => {
- let spatialAssets;
- const testUri = "did:geo:{id}";
- const testRole = "DATA_SUPPLIER";
- const testStorage = "FILECOIN";
-
- const stringToBytes = (string) => web3.utils.asciiToHex(string)
-
-
- // based on https://ethereum.stackexchange.com/questions/17094/how-to-store-ipfs-hash-using-bytes32
- // Return bytes32 hex string from base58 encoded ipfs hash,
- // stripping leading 2 bytes from 34 byte IPFS hash
- // Assume IPFS defaults: function:0x12=sha2, size:0x20=256 bits
- // E.g. "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL" -->
- // "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231"
- function getBytes32FromIpfsHash(ipfsListing) {
- return "0x"+bs58.decode(ipfsListing).slice(2).toString('hex')
- }
-
-
- // Return base58 encoded ipfs hash from bytes32 hex string,
- // E.g. "0x017dfd85d4f6cb4dcd715a88101f7b1f06cd1e009b2327a0809d01eb9c91f231"
- // --> "QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL"
-
- function getIpfsHashFromBytes32(bytes32Hex) {
- // Add our default ipfs values for first 2 bytes:
- // function:0x12=sha2, size:0x20=256 bits
- // and cut off leading "0x"
- const hashHex = "1220" + bytes32Hex.slice(2)
- const hashBytes = Buffer.from(hashHex, 'hex');
- const hashStr = bs58.encode(hashBytes)
- return hashStr
- }
-
- before(async () => {
- spatialAssets = await SpatialAssets.deployed();
- });
-
- it('Should deploy smart contract properly', async() => {
- const spatialAssets = await SpatialAssets.deployed();
- assert(spatialAssets.address !== '');
- });
-
- it("Should assign the uri correctly", async () => {
- const uri = await spatialAssets.uri();
- assert.equal(testUri, uri, "The uri was incorrectly assigned");
- });
-
- it("Should enable a storage correctly", async () => {
- await spatialAssets.enableStorage(stringToBytes(testStorage), {from: accounts[0]});
- const storageAllowed = await spatialAssets.allowedStorages(stringToBytes(testStorage));
- assert(storageAllowed, "The storage was created");
- });
-
- it("Shouldn't let a non admin user register a storage", async () => {
- try {
- await spatialAssets.enableStorage(stringToBytes('SKYDB'), {from: accounts[1]});
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: must have admin role to edit allowed offchain storages"));
- }
- });
-
- it("Shouldn't let the same storage be registerd twice", async () => {
- try {
- await spatialAssets.enableStorage(stringToBytes(testStorage), {from: accounts[0]});
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: storage must not be active yet"));
- }
- });
-
- it("Should disable a storage correctly", async () => {
- await spatialAssets.enableStorage(stringToBytes('SKYDB'), {from: accounts[0]});
- await spatialAssets.disableStorage(stringToBytes('SKYDB'), {from: accounts[0]});
- const storageAllowed = await spatialAssets.allowedStorages(stringToBytes('SKYDB'));
- assert(!storageAllowed, "The storage was disabled");
- });
-
-
- it("Shouldn't let a non admin user disable a storage", async () => {
- try {
- await spatialAssets.disableStorage(stringToBytes(testStorage), {from: accounts[1]});
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: must have admin role to edit allowed offchain storages"));
- }
- });
-
- it("Should register a role correctly", async () => {
- await spatialAssets.registerRole({from: accounts[1]});
-
- assert(spatialAssets.hasRole(stringToBytes(testRole), accounts[1]), "The role was created");
- });
-
-
- it("Shouldn't let a user register with the same role twice", async () => {
- try {
- await spatialAssets.registerRole({from: accounts[1]});
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: must not have a DATA_SUPPLIER role yet"));
- }
- });
-
- it("Should register a spatial asset correctly without a parent", async () => {
- const geodidid = 'did:geo:QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL';
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
- const cid = 'QmNSUYVKDSvPUnRLKmuxk9diJ6yS96r1TrAXzjTiBcCLAL';
- const bytes32Cid = getBytes32FromIpfsHash(cid);
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, stringToBytes(''), [], bytes32Cid, stringToBytes(testStorage), 0, {from: accounts[1]});
-
- const owner = await spatialAssets.idToOwner(bytes32GeoDID);
- const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDID);
- const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDID);
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDID);
-
- assert.equal(owner, accounts[1], "Ownership not correctly assigned");
- assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned");
- assert(canBeParent, "Can be parent");
- assert(!hasParent, "Does not have parent");
-
- });
-
- it("Should register a spatial asset correctly with a parent", async () => {
- const geodididParent = 'did:geo:QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4';
- const cidParent = 'QmRAQB6YaCyidP37UdDnjFY5vQuiBrcqdyoW1CuDgwxkD4';
-
- const geodididChild = 'did:geo:QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd';
- const cidChild = 'QmTtDqWzo179ujTXU7pf2PodLNjpcpQQCXhkiQXi6wZvKd';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
- const bytes32CidParent = getBytes32FromIpfsHash(cidParent);
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
- const bytes32CidChild = getBytes32FromIpfsHash(cidChild);
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]});
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, bytes32GeoDIDParent, [], bytes32CidChild, stringToBytes(testStorage), 0, {from: accounts[1]});
-
- const owner = await spatialAssets.idToOwner(bytes32GeoDIDChild);
- const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDChild);
- const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDIDChild);
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild);
-
- assert.equal(owner, accounts[1], "Ownership not correctly assigned");
- assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned");
- assert(canBeParent, "Can be parent");
- assert(hasParent, "Does have parent");
-
-});
-
- it("Should register a spatial asset correctly of type 1 without parent", async () => {
- const geodidid = 'did:geo:QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE';
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
- const cid = 'QmYA2fn8cMbVWo4v95RwcwJVyQsNtnEwHerfWR8UNtEwoE';
- const bytes32Cid = getBytes32FromIpfsHash(cid);
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, stringToBytes(''), [], bytes32Cid, stringToBytes(testStorage), 1, {from: accounts[1]});
-
- const owner = await spatialAssets.idToOwner(bytes32GeoDID);
- const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDID);
- const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDID);
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDID);
-
- assert.equal(owner, accounts[1], "Ownership not correctly assigned");
- assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned");
- assert(!canBeParent, "Cannot be parent");
- assert(!hasParent, "Does not have parent");
-
-});
-
-it("Should register a spatial asset correctly of type 1 with a parent", async () => {
- const geodididParent = 'did:geo:QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps';
- const cidParent = 'QmV9tSDx9UiPeWExXEeH6aoDvmihvx6jD5eLb4jbTaKGps';
-
- const geodididChild = 'did:geo:QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd';
- const cidChild = 'QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
- const bytes32CidParent = getBytes32FromIpfsHash(cidParent);
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
- const bytes32CidChild = getBytes32FromIpfsHash(cidChild);
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]});
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, bytes32GeoDIDParent, [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]});
-
- const owner = await spatialAssets.idToOwner(bytes32GeoDIDChild);
- const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDChild);
- const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDIDChild);
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild);
-
- assert.equal(owner, accounts[1], "Ownership not correctly assigned");
- assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned");
- assert(!canBeParent, "Cannot be parent");
- assert(hasParent, "Does not have parent");
-
-});
-
-
-
-it("Should register a spatial asset correctly of type 0 without parent with a chidren", async () => {
-
- const geodididParent = 'did:geo:QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW';
- const cidParent = 'QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW';
-
- const geodididChild = 'did:geo:QmXExS4BMc1YrH6iWERyryFcDWkvobxryXSwECLrcd7Y1H';
- const cidChild = 'QmXExS4BMc1YrH6iWERyryFcDWkvobxryXSwECLrcd7Y1H';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
- const bytes32CidParent = getBytes32FromIpfsHash(cidParent);
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
- const bytes32CidChild = getBytes32FromIpfsHash(cidChild);
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, stringToBytes(''), [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]});
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [bytes32GeoDIDChild], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]});
-
- const owner = await spatialAssets.idToOwner(bytes32GeoDIDParent);
- const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDParent);
- const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDIDParent);
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDParent);
-
- assert.equal(owner, accounts[1], "Ownership not correctly assigned");
- assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned");
- assert(canBeParent, "Is a parent");
- assert(!hasParent, "Does not have parent");
-
-});
-
- it("Should register a spatial asset correctly of type 0 with a parent and with a children", async () => {
-
- const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH';
- const cidParent = 'QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH';
-
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
- const cid = 'Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const geodididChild = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9';
- const cidChild = 'QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
- const bytes32CidParent = getBytes32FromIpfsHash(cidParent);
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
- const bytes32Cid = getBytes32FromIpfsHash(cid);
-
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
- const bytes32CidChild = getBytes32FromIpfsHash(cidChild);
-
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]});
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, stringToBytes(''), [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]});
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, bytes32GeoDIDParent, [bytes32GeoDIDChild], bytes32Cid, stringToBytes(testStorage), 0, {from: accounts[1]});
-
-
- const owner = await spatialAssets.idToOwner(bytes32GeoDID);
- const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDID);
- const canBeParent = await spatialAssets.idToCanBeParent(bytes32GeoDID);
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDID);
-
- assert.equal(owner, accounts[1], "Ownership not correctly assigned");
- assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), testStorage, "External storage was not correctly assigned");
- assert(canBeParent, "Is a parent");
- assert(hasParent, "Has a parent");
-
- });
-
-
- it("Shouldn't register a spatial asset for someone without the proper role", async () => {
- const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH';
-
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
- const cid = 'Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
- const bytes32Cid = getBytes32FromIpfsHash(cid);
-
- try {
- await spatialAssets.registerSpatialAsset(accounts[2], bytes32GeoDID, bytes32GeoDIDParent, [], bytes32Cid, stringToBytes(testStorage), 0, {from: accounts[2]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: must have data supplier role to register"));
- }
- });
-
- it("Shouldn't register a spatial asset for a storage not yet allowed", async () => {
- const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH';
-
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
- const cid = 'Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
- const bytes32Cid = getBytes32FromIpfsHash(cid);
-
- try {
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, bytes32GeoDIDParent, [], bytes32Cid, stringToBytes('SKYDB'), 0, {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: storage must be allowed"));
- }
- });
-
-
- it("Shouldn't register a spatial asset with the same id", async () => {
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
- const cid = 'Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
- const bytes32Cid = getBytes32FromIpfsHash(cid);
-
-
- try {
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, '0x0', [], bytes32Cid, stringToBytes(testStorage),0,{from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: id must not have an owner yet"));
- }
- });
-
- it("Shouldn't register a spatial asset without the proper geodid type", async () => {
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const geodididChild = 'did:geo:QmYMg6WAuvF5i5yFmjT8KkqewZ5Ngh4U9Mp1bGfdjraFVk';
- const cidChild = 'QmYMg6WAuvF5i5yFmjT8KkqewZ5Ngh4U9Mp1bGfdjraFVk';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
- const bytes32CidChild = getBytes32FromIpfsHash(cidChild);
-
- try {
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, bytes32GeoDID, [], bytes32CidChild, stringToBytes(testStorage), 2,{from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("Spatial Assets: wrong geodidtype"));
- }
- });
-
-
- it("Should add children to an already created geodid correctly", async () => {
- // already created above
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS';
- const cidChild = 'QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
- const bytes32CidChild = getBytes32FromIpfsHash(cidChild);
-
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, stringToBytes(''), [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]});
-
- await spatialAssets.addChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]});
-
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild);
-
- assert(hasParent, "Geodid children successfuly added");
-
- });
-
- it("Shouldn't register a children by someone without the proper role", async () => {
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.addChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[2]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: must have data supplier role to register"));
- }
- });
-
- it("Shouldn't register a children to a geodid that does not exist", async () => {
- const geodidid = 'did:geo:QmcniBv7UQ4gGPQQW2BwbD4ZZHzN3o3tPuNLZCbBchd1zh';
-
- const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.addChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: geoDIDId must be owned by its creator"));
- }
- });
-
- it("Shouldn't register a children to a geodid that cannot be parent", async () => {
- const geodidid = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9';
-
- const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.addChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: geoDIDId must be able to be parent (a Collection)"));
- }
- });
-
- it("Shouldn't register a parent by someone without the proper role", async () => {
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[2]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: must have data supplier role to register"));
- }
- });
-
- it("Shouldn't register a parent if the child geodid wasn't created by the sender", async () => {
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[0]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: geoDIDId must be owned by its creator"));
- }
- });
-
- it("Shouldn't register a parent if it does not exist", async () => {
- const geodidid = 'did:geo:QmcniBv7UQ4gGPQQW2BwbD4ZZHzN3o3tPuNLZCbBchd1zh';
-
- const geodididChild = 'did:geo:QmdPtC3T7Kcu9iJg6hYzLBWR5XCDcYMY7HV685E3kH3EcS';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: parentGeoDIDId does not exist"));
- }
- });
-
- it("Shouldn't register a parent to a geodid that already has a parent", async () => {
- const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr';
- const cid = 'QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
- const bytes32Cid = getBytes32FromIpfsHash(cid);
-
-
- const geodididChild = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9';
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, stringToBytes(''), [], bytes32Cid, stringToBytes(testStorage), 0, {from: accounts[1]});
-
- try {
- await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: geoDIDId already has a parent"));
- }
- });
-
-
- it("Shouldn't register as parent a geodid that cannot be parent", async () => {
- const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const geodididChild = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9';
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.addParentGeoDID(bytes32GeoDID, bytes32GeoDIDChild, {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)"));
- }
- });
-
-
-
- it("Should add a parent to an already created geodid correctly", async () => {
- const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr';
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
-
- const geodididChild = 'did:geo:QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo';
- const cidChild = 'QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo';
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
- const bytes32CidChild = getBytes32FromIpfsHash(cidChild);
-
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDChild, stringToBytes(''), [], bytes32CidChild, stringToBytes(testStorage), 1, {from: accounts[1]});
-
-
- await spatialAssets.addParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]});
-
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild);
-
- assert(hasParent, "Geodid children successfuly added");
-
- });
-
-
- it("Shouldn't remove children by an account without proper roles", async () => {
- const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr';
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const geodididChild = 'did:geo:QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo';
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.removeChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[3]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: must have data supplier role to register"));
- }
- });
-
-
- it("Shouldn't remove children to a non existent geodid", async () => {
- const geodidid = 'did:geo:QmccqhJg5wm5kNjAP4k4HrYxoqaXUGNuotDUqfvYBx8jrR';
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const geodididChild = 'did:geo:QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo';
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.removeChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: id must not have an owner yet"));
- }
- });
-
- it("Should remove children correctly", async () => {
- const geodidid = 'did:geo:QmavE42xtK1VovJFVTVkCR5Jdf761QWtxmvak9Zx718TVr';
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const geodididChild = 'did:geo:QmeKZSrzAZ5bhaxH2rvm8HEsiqfKceG1FuLHwwbD3mbnEo';
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- await spatialAssets.removeChildrenGeoDIDs(bytes32GeoDID, [bytes32GeoDIDChild], {from: accounts[1]});
-
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDChild);
-
- assert(!hasParent, "Parent successfuly removed");
- });
-
-
- it("Shouldn't remove a parent by a sender without proper roles", async () => {
-
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const geodididChild = 'did:geo:QmdsCAZ3KEVPNTkUtru1wtFRUoYnGsfjQnAMPyiEdFZdM9';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
-
- try {
- await spatialAssets.removeParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[2]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: must have data supplier role to register"));
- }
- });
-
-
-
- it("Shouldn't remove a parent to a geodid that does not exist", async () => {
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const geodididChild = 'did:geo:QmNwEiWPc8EPc9kGEqdi9UeM5RY8jRJSPVdrtKELFZRH85';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.removeParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: id must not have an owner yet"));
- }
- });
-
- it("Shouldn't remove a parent that does not exist", async () => {
- const geodidid = 'did:geo:QmNwEiWPc8EPc9kGEqdi9UeM5RY8jRJSPVdrtKELFZRH85';
-
- const geodididChild = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.removeParentGeoDID(bytes32GeoDIDChild, bytes32GeoDID, {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: GeoDID to be removed as parent does not exist"));
- }
- });
-
-
- it("Shouldn't remove a parent to a geodid that does not have a parent", async () => {
- const geodididParent = 'did:geo:QmdiA1atSBgU178s5rsWont8cYns3fmwHxELTpiP9uFfLW';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
-
- const geodididChild = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const bytes32GeoDIDChild = getBytes32FromIpfsHash(geodididChild.substring(8));
-
- try {
- await spatialAssets.removeParentGeoDID(bytes32GeoDIDParent, bytes32GeoDIDChild, {from: accounts[1]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: GeoDID does not have a parent to remove"));
- }
- });
-
- it("Should remove a parent correctly", async () => {
-
- const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH';
-
- const geodidid = 'did:geo:Qmc2ot2NQadXmbvPbsidyjYDvPfPwKZmovzNpfRPKxXUrL';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
-
-
- await spatialAssets.removeParentGeoDID(bytes32GeoDID, bytes32GeoDIDParent, {from: accounts[1]});
-
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDID);
-
- assert(!hasParent, "Parent successfuly removed");
-});
-
-
-
- it("Shouldn't deactivate a Spatial Asset if not the right owner", async () => {
- const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
-
- try {
- await spatialAssets.deactivateSpatialAsset(bytes32GeoDIDParent,[], {from: accounts[2]});
-
- assert(false);
- } catch (err) {
- assert(err.message.includes("SpatialAssets: caller is not owner of the Spatial Asset"));
- }
- });
-
- it("Should deactivate a spatial asset with no children correctly", async () => {
- const geodididParent = 'did:geo:QmR29wrbNv3WrMuodwuLiDwvskuZKKeTtcYDw7SwNffzCH';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
-
- await spatialAssets.deactivateSpatialAsset(bytes32GeoDIDParent, [], {from: accounts[1]});
-
- const owner = await spatialAssets.idToOwner(bytes32GeoDIDParent);
- const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDParent);
- const cid = await spatialAssets.idToCid(bytes32GeoDIDParent);
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDParent);
-
- assert.equal(owner, '0x0000000000000000000000000000000000000000', "Id not burned");
- assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), '', "External storage not deleted");
- assert.equal(web3.utils.hexToAscii(cid).replace(/\u0000/g, ''), '', "Cid not deleted");
- assert(!hasParent, "Has parent not null");
-
- });
-
- it("Should deactivate a spatial asset with children correctly", async () => {
-
- const geodididParent = 'did:geo:QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ';
- const cidParent = 'QmQ747r7eLfsVtBFBSRwfXsPK6tADJpQzJxz4uFdoZb9XJ';
-
- const geodidid = 'did:geo:QmcvyefkqQX3PpjpY5L8B2yMd47XrVwAipr6cxUt2zvYU8';
- const cid = 'QmcvyefkqQX3PpjpY5L8B2yMd47XrVwAipr6cxUt2zvYU8';
-
- const bytes32GeoDIDParent = getBytes32FromIpfsHash(geodididParent.substring(8));
- const bytes32CidParent = getBytes32FromIpfsHash(cidParent);
-
- const bytes32GeoDID = getBytes32FromIpfsHash(geodidid.substring(8));
- const bytes32Cid = getBytes32FromIpfsHash(cid);
-
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDIDParent, stringToBytes(''), [], bytes32CidParent, stringToBytes(testStorage), 0, {from: accounts[1]});
-
- await spatialAssets.registerSpatialAsset(accounts[1], bytes32GeoDID, bytes32GeoDIDParent, [], bytes32Cid, stringToBytes(testStorage), 1, {from: accounts[1]});
-
-
- await spatialAssets.deactivateSpatialAsset(bytes32GeoDIDParent, [bytes32GeoDID], {from: accounts[1]});
-
- const owner = await spatialAssets.idToOwner(bytes32GeoDIDParent);
- const externalStorage = await spatialAssets.idToExternalStorage(bytes32GeoDIDParent);
- const cidTest = await spatialAssets.idToCid(bytes32GeoDIDParent);
- const hasParent = await spatialAssets.idToHasParent(bytes32GeoDIDParent);
-
- assert.equal(owner, '0x0000000000000000000000000000000000000000', "Id not burned");
- assert.equal(web3.utils.hexToAscii(externalStorage).replace(/\u0000/g, ''), '', "External storage not deleted");
- assert.equal(web3.utils.hexToAscii(cidTest).replace(/\u0000/g, ''), '', "Cid not deleted");
- assert(!hasParent, "Has parent not null");
-
- });
-
-});
\ No newline at end of file
diff --git a/legacy/packages/contracts/truffle-config.js b/legacy/packages/contracts/truffle-config.js
deleted file mode 100644
index bad9fe2..0000000
--- a/legacy/packages/contracts/truffle-config.js
+++ /dev/null
@@ -1,44 +0,0 @@
-const HDWalletProvider = require("@truffle/hdwallet-provider");
-require('dotenv').config();
-
-let mnemonic = process.env.MNEMONIC
-let ropstenURL = process.env.ROPSTEN_API_KEY
-
-let provider
-
-if(mnemonic && ropstenURL) {
- provider = new HDWalletProvider({
- mnemonic: {
- phrase: mnemonic,
- },
- providerOrUrl: ropstenURL,
- });
-}
-
-
-module.exports = {
- plugins: ["solidity-coverage"],
- networks: {
- development: {
- host: "127.0.0.1",
- port: 8545,
- network_id: "*",
- },
- ropsten: {
- provider: provider,
- network_id: "3",
- },
- },
- compilers: {
- solc: {
- version: "0.6.12",
- settings: {
- optimizer: {
- enabled: true,
- runs: 200
- },
- }
- },
- },
- plugins: ["solidity-coverage"],
-};
diff --git a/legacy/packages/contracts/tsconfig.json b/legacy/packages/contracts/tsconfig.json
deleted file mode 100644
index fcb0516..0000000
--- a/legacy/packages/contracts/tsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "extends": "../../tsconfig",
- "compilerOptions": {
- "outDir": "dist",
- "rootDir": ".",
- "resolveJsonModule": true
- },
- "include": ["./build/**/*"],
- "files": ["./build/contracts/SpatialAssets.json"]
-}
diff --git a/legacy/packages/contracts/tslint.json b/legacy/packages/contracts/tslint.json
deleted file mode 100644
index 8690834..0000000
--- a/legacy/packages/contracts/tslint.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "extends": "../../tslint.json",
- "linterOptions": {
- "exclude": ["artifacts/**/*"]
- }
-}
diff --git a/legacy/packages/core/.eslintrc.js b/legacy/packages/core/.eslintrc.js
deleted file mode 100644
index c6b21f9..0000000
--- a/legacy/packages/core/.eslintrc.js
+++ /dev/null
@@ -1,18 +0,0 @@
-module.exports = {
- root: true,
- parser: '@typescript-eslint/parser',
- plugins: [
- '@typescript-eslint',
- 'jest'
- ],
- rules: {
- '@typescript-eslint/no-explicit-any': 'off'
- },
- extends: [
- 'eslint:recommended',
- 'plugin:@typescript-eslint/eslint-recommended',
- 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin
- 'prettier/@typescript-eslint', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier
- 'plugin:prettier/recommended' // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
- ]
-};
\ No newline at end of file
diff --git a/legacy/packages/core/.prettierrc.js b/legacy/packages/core/.prettierrc.js
deleted file mode 100644
index 4c2c6c7..0000000
--- a/legacy/packages/core/.prettierrc.js
+++ /dev/null
@@ -1,7 +0,0 @@
-module.exports = {
- semi: true,
- trailingComma: "all",
- singleQuote: true,
- printWidth: 120,
- tabWidth: 4
- };
\ No newline at end of file
diff --git a/legacy/packages/core/CHANGELOG.md b/legacy/packages/core/CHANGELOG.md
deleted file mode 100644
index 25e7639..0000000
--- a/legacy/packages/core/CHANGELOG.md
+++ /dev/null
@@ -1,928 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file.
-See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
-
-## [1.0.66](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.65...@astralprotocol/core@1.0.66) (2021-04-01)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.65](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.64...@astralprotocol/core@1.0.65) (2021-04-01)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.64](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.63...@astralprotocol/core@1.0.64) (2021-04-01)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.63](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.62...@astralprotocol/core@1.0.63) (2021-04-01)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.62](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.61...@astralprotocol/core@1.0.62) (2021-04-01)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.61](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.60...@astralprotocol/core@1.0.61) (2021-03-31)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.60](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.59...@astralprotocol/core@1.0.60) (2021-03-30)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.59](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.58...@astralprotocol/core@1.0.59) (2021-03-30)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.58](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.57...@astralprotocol/core@1.0.58) (2021-03-29)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.57](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.56...@astralprotocol/core@1.0.57) (2021-03-29)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.56](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.55...@astralprotocol/core@1.0.56) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.55](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.54...@astralprotocol/core@1.0.55) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.54](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.53...@astralprotocol/core@1.0.54) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.53](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.52...@astralprotocol/core@1.0.53) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.52](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.51...@astralprotocol/core@1.0.52) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.51](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.50...@astralprotocol/core@1.0.51) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.50](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.49...@astralprotocol/core@1.0.50) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.49](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.48...@astralprotocol/core@1.0.49) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.48](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.47...@astralprotocol/core@1.0.48) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.47](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.46...@astralprotocol/core@1.0.47) (2021-03-13)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.46](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.45...@astralprotocol/core@1.0.46) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.45](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.44...@astralprotocol/core@1.0.45) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.44](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.43...@astralprotocol/core@1.0.44) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.43](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.42...@astralprotocol/core@1.0.43) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.42](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.41...@astralprotocol/core@1.0.42) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.41](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.40...@astralprotocol/core@1.0.41) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.40](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.39...@astralprotocol/core@1.0.40) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.39](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.38...@astralprotocol/core@1.0.39) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.38](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.37...@astralprotocol/core@1.0.38) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.37](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.36...@astralprotocol/core@1.0.37) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.36](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.35...@astralprotocol/core@1.0.36) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.35](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.34...@astralprotocol/core@1.0.35) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.34](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.33...@astralprotocol/core@1.0.34) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.33](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.32...@astralprotocol/core@1.0.33) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.32](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.31...@astralprotocol/core@1.0.32) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.31](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.30...@astralprotocol/core@1.0.31) (2021-03-12)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.30](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.29...@astralprotocol/core@1.0.30) (2021-03-11)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.29](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.28...@astralprotocol/core@1.0.29) (2021-03-11)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.28](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.27...@astralprotocol/core@1.0.28) (2021-03-11)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.27](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.26...@astralprotocol/core@1.0.27) (2021-03-11)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.26](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.25...@astralprotocol/core@1.0.26) (2021-03-04)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.25](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.24...@astralprotocol/core@1.0.25) (2021-03-04)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.24](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.23...@astralprotocol/core@1.0.24) (2021-03-04)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.23](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.22...@astralprotocol/core@1.0.23) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.22](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.21...@astralprotocol/core@1.0.22) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.21](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.20...@astralprotocol/core@1.0.21) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.20](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.19...@astralprotocol/core@1.0.20) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.19](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.18...@astralprotocol/core@1.0.19) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.18](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.17...@astralprotocol/core@1.0.18) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.17](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.16...@astralprotocol/core@1.0.17) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.16](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.15...@astralprotocol/core@1.0.16) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.15](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.14...@astralprotocol/core@1.0.15) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.14](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.13...@astralprotocol/core@1.0.14) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.13](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.12...@astralprotocol/core@1.0.13) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.12](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.11...@astralprotocol/core@1.0.12) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.11](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.10...@astralprotocol/core@1.0.11) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.9...@astralprotocol/core@1.0.10) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.8...@astralprotocol/core@1.0.9) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.7...@astralprotocol/core@1.0.8) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.6...@astralprotocol/core@1.0.7) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.5...@astralprotocol/core@1.0.6) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.4...@astralprotocol/core@1.0.5) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.3...@astralprotocol/core@1.0.4) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.2...@astralprotocol/core@1.0.3) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@1.0.1...@astralprotocol/core@1.0.2) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [1.0.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.10...@astralprotocol/core@1.0.1) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.1.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.9...@astralprotocol/core@0.1.10) (2021-02-23)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.1.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.8...@astralprotocol/core@0.1.9) (2021-02-19)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.1.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.7...@astralprotocol/core@0.1.8) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.1.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.6...@astralprotocol/core@0.1.7) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.1.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.5...@astralprotocol/core@0.1.6) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.1.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.4...@astralprotocol/core@0.1.5) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.1.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.3...@astralprotocol/core@0.1.4) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.1.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.1.1...@astralprotocol/core@0.1.3) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.1.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.0.2...@astralprotocol/core@0.1.1) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/core@0.0.1...@astralprotocol/core@0.0.2) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## 0.0.1 (2021-01-05)
-
-**Note:** Version bump only for package @astralprotocol/core
-
-
-
-
-
-## [0.0.39](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.38...@astraldao/astral-protocol-core@0.0.39) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.38](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.37...@astraldao/astral-protocol-core@0.0.38) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.37](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.36...@astraldao/astral-protocol-core@0.0.37) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.36](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.35...@astraldao/astral-protocol-core@0.0.36) (2020-11-21)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.35](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.34...@astraldao/astral-protocol-core@0.0.35) (2020-11-21)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.34](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.33...@astraldao/astral-protocol-core@0.0.34) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.33](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.32...@astraldao/astral-protocol-core@0.0.33) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.32](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.31...@astraldao/astral-protocol-core@0.0.32) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.31](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.30...@astraldao/astral-protocol-core@0.0.31) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.30](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.29...@astraldao/astral-protocol-core@0.0.30) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.29](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.28...@astraldao/astral-protocol-core@0.0.29) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.28](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.27...@astraldao/astral-protocol-core@0.0.28) (2020-10-18)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.27](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.26...@astraldao/astral-protocol-core@0.0.27) (2020-10-18)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.26](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.25...@astraldao/astral-protocol-core@0.0.26) (2020-10-18)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.25](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.24...@astraldao/astral-protocol-core@0.0.25) (2020-10-17)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.24](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.23...@astraldao/astral-protocol-core@0.0.24) (2020-10-17)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.23](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.22...@astraldao/astral-protocol-core@0.0.23) (2020-10-17)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.22](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.21...@astraldao/astral-protocol-core@0.0.22) (2020-10-17)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.21](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.20...@astraldao/astral-protocol-core@0.0.21) (2020-10-16)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.20](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.19...@astraldao/astral-protocol-core@0.0.20) (2020-10-16)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.19](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.18...@astraldao/astral-protocol-core@0.0.19) (2020-10-16)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.18](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.17...@astraldao/astral-protocol-core@0.0.18) (2020-10-15)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.17](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.16...@astraldao/astral-protocol-core@0.0.17) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.16](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.15...@astraldao/astral-protocol-core@0.0.16) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.15](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.14...@astraldao/astral-protocol-core@0.0.15) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.14](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.13...@astraldao/astral-protocol-core@0.0.14) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.13](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.12...@astraldao/astral-protocol-core@0.0.13) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.12](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.11...@astraldao/astral-protocol-core@0.0.12) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.11](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.10...@astraldao/astral-protocol-core@0.0.11) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.10](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.9...@astraldao/astral-protocol-core@0.0.10) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.9](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.8...@astraldao/astral-protocol-core@0.0.9) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.8](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.7...@astraldao/astral-protocol-core@0.0.8) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.7](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.6...@astraldao/astral-protocol-core@0.0.7) (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.6](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.5...@astraldao/astral-protocol-core@0.0.6) (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.5](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.4...@astraldao/astral-protocol-core@0.0.5) (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.4](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.3...@astraldao/astral-protocol-core@0.0.4) (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.3](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.2...@astraldao/astral-protocol-core@0.0.3) (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## [0.0.2](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-core@0.0.1...@astraldao/astral-protocol-core@0.0.2) (2020-09-28)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
-
-
-
-
-
-## 0.0.1 (2020-09-11)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-core
diff --git a/legacy/packages/core/LICENSE-APACHE b/legacy/packages/core/LICENSE-APACHE
deleted file mode 100644
index 2ad0ad1..0000000
--- a/legacy/packages/core/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- 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 [2020] [astralDAO]
-
- 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.
diff --git a/legacy/packages/core/LICENSE-MIT b/legacy/packages/core/LICENSE-MIT
deleted file mode 100644
index 1874419..0000000
--- a/legacy/packages/core/LICENSE-MIT
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 astralDAO
-
-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.
diff --git a/legacy/packages/core/README.md b/legacy/packages/core/README.md
deleted file mode 100644
index e572705..0000000
--- a/legacy/packages/core/README.md
+++ /dev/null
@@ -1,96 +0,0 @@
-# `@astralprotocol/core`
-
-## Description
-
-The @astralprotocol/core package is a Typescript NPM package that is responsible for any CRUD operations performed on the DID Documents. This includes the creation of DID Documents, loading the DID Documents, as well as updating them. The package also has utilities that enable the creation of the collision resistant GeoDID IDs, a custom did-resolver that enables DID Resolution, as well as pinning features for storing the Documents on IPFS or FFS. This package is meant to be used in conjunction with the @astralprotocol/contracts and @astralprotocol/subgraph packages. However, the package can also be used independently if the user does not want to rely on the Ethereum network.
-
-## Setting up Powergate Locally with Localnet Mode
-
-In order to store the GeoDIDs created by the core package, you will need to start up a local Powergate client or connect to an existing hosted client. Below will be a brief overview on how to setup a local Powergate client on your system. Further information is available at: https://github.com/textileio/powergate.
-
-In order to setup the Powergate Client locally on your system you must have [Docker](https://docs.docker.com/engine/install/), [Docker-Compose](https://docs.docker.com/compose/install/), and [Go 1.16](https://golang.org/dl/) installed.
-
-
-In your terminal, create a new directory and clone the Powergate repo into it:
-
-```git clone https://github.com/textileio/powergate.git```
-
-
-After you clone the repo, enter the following commands:
-
-```cd powergate/docker```
-
-```make localnet```
-
-
-More information regarding Powergate's Localnet mode, please refer to their documentation: https://github.com/textileio/powergate#localnet-mode
-
-## To add Astral Protocol Core to your application
-
-```yarn add -D @astralprotocol/core ```
-OR
-```npm install -D @astralprotocol/core```
-
-```import AstralClient from '@astralprotocol/core';```
-OR
-```const AstralClient = require('@astralprotocol/core');```
-
-## To develop or try the Astral Protocol Core locally
-
-```
-import AstralClient from '@astralprotocol/core';
-
-async function run(){
-
- // Create a new Astral Client Instance with the user's ethAddress
- let astral = new AstralClient('0xa3e1c2602f628112E591A18004bbD59BDC3cb512');
-
- try{
-
- // Creates a Genesis GeoDID
- const genDocRes = await astral.createGenesisGeoDID('collection')
- console.log(genDocRes);
-
- // With the returned IDocumentInfo from the last function, we can pin it.
- // Since no token was specified the client will assign a new auth Token to the user.
- const results = await astral.pinDocument(genDocRes);
- console.log(results);
-
- const token = results.token;
-
- // With the Auth Token and the GeoDID ID we can load the document with the loadDocument function
- const loadResults = await astral.loadDocument(results.geodidid, token);
- console.log(loadResults);
-
- console.log('\n');
- console.log('\n');
-
- // Creates a Child GeoDID Item of the priviously created Genesis GeoDID
- const itemres = await astral.createChildGeoDID('item', results.geodidid, 'item1');
- console.log(itemres)
-
- console.log('\n');
-
- // With the returned IDocumentInfo from the last function, we can pin it.
- // This time we reuse the same token that was created earlier to pin the child document to the same instance.
- const itemresults = await astral.pinDocument(itemres, token);
- console.log(itemresults);
-
- console.log('\n');
-
- // With the Auth Token and the GeoDID ID we can load the document with the loadDocument function
- const loadItemResults = await astral.loadDocument(itemresults.geodidid, token);
- console.log(loadItemResults);
-
- console.log('\n');
-
- // Here we can display the string representation of the DID Document
- console.log(JSON.stringify(loadItemResults.documentInfo.documentVal));
-
- }catch(e){
- console.log(e);
- }
-
-}
-
-```
diff --git a/legacy/packages/core/__tests__/astral-protocol-core.test.js b/legacy/packages/core/__tests__/astral-protocol-core.test.js
deleted file mode 100644
index 77047f0..0000000
--- a/legacy/packages/core/__tests__/astral-protocol-core.test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import AstralClient from '../lib/astral-client';
-
-describe('astral-client', () => {
-
- describe('creates documents', () => {
-
- beforeEach(() => {
- const astral = new AstralClient('0xa3e1c2602f628112E591A18004bbD59BDC3cb512');
- });
-
- describe('root', () => {
- it('creates collection', async() => {
- await expect(astral.createGenesisGeoDID('collection')).resolves.toHaveReturned();
- });
-
- it('creates item', async() => {
- await expect(astral.createGenesisGeoDID('item')).resolves.toHaveReturned();
- });
-
- it('fails to create document', async() => {
- expect.assertions(1);
- try {
- await expect(astral.createGenesisGeoDID('document'));
- }catch(e) {
- expect(e).toEqual({ error: 'Invalid Option, please select Item or Collection' });
- }
- });
- });
-
- describe('children', () => {
- beforeEach( async() => {
- const res = await astral.createGenesisGeoDID('collection');
- const results = await astral.pinDocument(res);
- });
-
- it('creates child collection w/ collection parent', async() => {
- await expect(astral.createChildGeoDID('collection', results.geodidid, 'collection')).resolves.toHaveReturned();
- });
-
- it('creates child item w/ collection parent', async() => {
- await expect(astral.createChildGeoDID('item', results.geodidid, 'item1')).resolves.toHaveReturned();
- });
- })
- })
-});
-
-
diff --git a/legacy/packages/core/babel.config.js b/legacy/packages/core/babel.config.js
deleted file mode 100644
index 10ce1d6..0000000
--- a/legacy/packages/core/babel.config.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// babel.config.js
-module.exports = {
- presets: [
- ["@babel/preset-env", {
- targets: {
- node: 'current',
- },
- modules: 'commonjs',
- useBuiltIns: false,
- debug: false,
- }],
- '@babel/preset-typescript',
- ],
- "plugins": [
- ["@babel/plugin-transform-modules-commonjs", {
- "allowTopLevelThis": true
- }],
- ["@babel/plugin-proposal-decorators", {"legacy": true}],
- ]
-}
\ No newline at end of file
diff --git a/legacy/packages/core/package.json b/legacy/packages/core/package.json
deleted file mode 100644
index f08dfaa..0000000
--- a/legacy/packages/core/package.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "name": "@astralprotocol/core",
- "version": "1.0.66",
- "description": "The @astralprotocol/core package is a Typescript NPM package that is responsible for any CRUD operations performed on the DID Documents. This includes the creation of DID Documents, loading the DID Documents, as well as updating them. The package also has utilities that enable the creation of the collision resistant GeoDID IDs, a custom did-resolver that enables DID Resolution, as well as pinning features for storing the Documents on IPFS or FFS. This package is meant to be used in conjunction with the @astralprotocol/contracts and @astralprotocol/subgraph packages. However, the package can also be used independently if the user does not want to rely on the Ethereum network",
- "author": "Astral ",
- "homepage": "https://github.com/AstralProtocol/astralprotocol#readme",
- "license": "MIT OR Apache-2.0",
- "main": "lib/astral-client.js",
- "typings": "lib/astral-client.d.ts",
- "directories": {
- "lib": "lib",
- "test": "__tests__"
- },
- "files": [
- "lib"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/AstralProtocol/astralprotocol.git",
- "directory": "packages/core"
- },
- "publishConfig": {
- "registry": "https://registry.npmjs.org",
- "access": "public"
- },
- "scripts": {
- "tsc": "tsc",
- "test": "jest --coverage --runInBand",
- "build": "../../node_modules/.bin/tsc -p tsconfig.json",
- "prepublishOnly": "yarn run build",
- "prebuild": "yarn run clean",
- "lint": "eslint ./src '*/**/*.{js,ts,tsx}' --quiet --fix",
- "clean": "rm -rf ./lib ./tsconfig.tsbuildinfo"
- },
- "bugs": {
- "url": "https://github.com/AstralProtocol/astralprotocol/issues"
- },
- "dependencies": {
- "@textile/powergate-client": "^4.0.0",
- "@types/ora": "^3.2.0",
- "@types/set-interval-async": "^1.0.0",
- "ajv": "^6.12.5",
- "apollo-fetch": "^0.7.0",
- "async": "^3.2.0",
- "axios": "^0.21.1",
- "blob": "^0.1.0",
- "chalk": "^4.1.0",
- "cids": "^1.0.0",
- "class-transformer": "^0.3.1",
- "cli-progress": "^3.8.2",
- "cli-spinners": "^2.5.0",
- "cross-fetch": "^3.0.6",
- "did-jwt": "^4.5.1",
- "did-resolver": "^2.1.1",
- "dids": "^0.5.1",
- "events": "^3.2.0",
- "fetch-json": "^2.2.7",
- "fs": "^0.0.1-security",
- "graphql": "^15.5.0",
- "graphql-request": "^3.4.0",
- "lodash.clonedeep": "^4.5.0",
- "multihashing-async": "^2.0.1",
- "ora": "^5.3.0",
- "reflect-metadata": "^0.1.13",
- "set-interval-async": "1.0.34"
- },
- "devDependencies": {
- "@babel/core": "^7.12.0",
- "@babel/plugin-proposal-decorators": "^7.10.5",
- "@babel/plugin-transform-modules-commonjs": "^7.10.4",
- "@babel/preset-env": "^7.12.0",
- "@babel/preset-typescript": "^7.12.0",
- "@types/blob-to-buffer": "^1.2.0",
- "@types/bs58": "^4.0.1",
- "@types/cli-progress": "^3.8.0",
- "@types/events": "^3.0.0",
- "@types/express": "^4.17.2",
- "@types/jest": "^26.0.20",
- "@types/lodash.clonedeep": "^4.5.6",
- "@types/web3": "^1.2.2",
- "@typescript-eslint/eslint-plugin": "^4.1.0",
- "@typescript-eslint/parser": "^4.1.0",
- "babel-cli": "^6.26.0",
- "babel-jest": "^26.3.0",
- "eslint": "^7.8.1",
- "eslint-config-prettier": "^6.11.0",
- "eslint-plugin-jest": "^24.1.0",
- "eslint-plugin-prettier": "^3.1.4",
- "jest": "^26.4.2",
- "prettier": "^2.1.1"
- },
- "gitHead": "068ff4783a483d401435cf45c521a068af0a0bad"
-}
diff --git a/legacy/packages/core/src/astral-client.ts b/legacy/packages/core/src/astral-client.ts
deleted file mode 100644
index 6b89252..0000000
--- a/legacy/packages/core/src/astral-client.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-import { Powergate } from './pin/powergate';
-import { Document } from './docu/document';
-import GeoDIDResolver from './resolver/geo-did-resolver';
-import { DIDDocument, Resolver, ServiceEndpoint } from 'did-resolver';
-import {
- GeoDidType,
- IDocumentInfo,
- IPinInfo,
- IAsset,
- ILoadInfo,
- IAssetInfo,
-} from './geo-did/interfaces/global-geo-did-interfaces';
-
-export { GeoDidType, IDocumentInfo, IPinInfo, IAsset, ILoadInfo } from './geo-did/interfaces/global-geo-did-interfaces';
-
-export class AstralClient {
- document: Document;
-
- constructor(public _ethereumAddress: string, public _thegraphEndpoint: string, public _host: string, public _token: string) {
- this.document = new Document(_ethereumAddress);
- }
-
- static async build(
- _ethereumAddress: string,
- _thegraphEndpoint = 'https://api.thegraph.com/subgraphs/name/astralprotocol/spatialassetsfinalv1',
- _host = 'http://52.168.51.215:6002',
- _token?: string,
- ): Promise {
- try {
- const powergate = await Powergate.build(_host, _token);
- let token = '';
- if (_token) token = _token;
- else token = await powergate.getToken();
-
- return new AstralClient(_ethereumAddress, _thegraphEndpoint, _host, token);
- }catch(e){
- throw e;
- }
- }
-
- getInstanceToken(): string {
- return this._token;
- }
-
- async createGenesisGeoDID(_typeOfGeoDID: string, assets?: IAsset[]): Promise {
- try {
- const response: IDocumentInfo = await this.document.addGenesisDocument(_typeOfGeoDID, this._host, this._token, assets);
- return response;
- } catch (e) {
- console.log('Unable to initialize');
- throw e;
- }
- }
-
- async createChildGeoDID(
- _typeOfGeoDID: string,
- _parentID: string,
- _path: string,
- assets?: IAsset[],
- ): Promise {
- try {
- const response: IDocumentInfo = await this.document.addChildDocument(_typeOfGeoDID, _parentID, _path, this._host, this._token, assets);
- return response;
- } catch (e) {
- console.log('Unable to initialize');
- throw e;
- }
- }
-
- async pinDocument(documentInfo: IDocumentInfo): Promise {
- try {
- const pinDate: Date = new Date();
- const powergate = await Powergate.build(this._host, this._token);
- const stringdoc = JSON.stringify(documentInfo.documentVal);
- const uint8array = new TextEncoder().encode(stringdoc);
- const cid: string = await powergate.getAssetCid(uint8array);
- await powergate.pin(cid);
-
- return { geodidid: documentInfo.geodidid, cid: cid, pinDate: pinDate, token: this._token };
- } catch (e) {
- console.log(e);
- throw e;
- }
- }
-
- async pinAsset(docId: string, powergate: Powergate, asset: IAsset): Promise {
- try {
- const uint8array = new TextEncoder().encode(asset.data);
- const seCID: string = await powergate.getAssetCid(uint8array);
- await powergate.pin(seCID);
-
- return {
- id: docId.concat(`#${asset.tag}`),
- type: asset.type,
- serviceEndpoint: seCID,
- };
- } catch (e) {
- console.log(e);
- throw e;
- }
- }
-
- // Add Assets to an item. Validation happens
- async addAssetsToItem(docId: string, assets: IAsset[]): Promise {
- let response: ILoadInfo;
- let service: ServiceEndpoint;
-
- try {
- response = await this.loadDocument(docId);
- const document_Info: IDocumentInfo = response.documentInfo;
-
- if (document_Info.documentVal.didmetadata.type.toLowerCase() == GeoDidType.Item) {
- for (let i = 0; i < assets.length; i++) {
- service = await this.pinAsset(docId, response.powergateInstance, assets[i]);
- await document_Info.documentVal.service.push(service);
- }
- } else {
- throw new Error(
- 'Unfortunately the Document ID you provided is not of Item type, so you cannot add any Assets to this Document. Please try again with a valid GeoDID Item',
- );
- }
- return document_Info;
- } catch (e) {
- console.log(e);
- throw e;
- }
- }
-
- // TODO: Read/Load a GeoDID Document
- async loadDocument(docId: string): Promise {
- try {
- const powergate = await Powergate.build(this._host, this._token);
- const geoDidResolver = GeoDIDResolver.getResolver(this, powergate);
- const didResolver = new Resolver(geoDidResolver);
- const doc: DIDDocument = await didResolver.resolve(docId);
-
- return { documentInfo: { geodidid: docId, documentVal: doc }, powergateInstance: powergate };
- } catch (e) {
- console.log(e);
- throw e;
- }
- }
-
- // must have a fragment and token of the
- async loadAsset(doc: DIDDocument, docId: string): Promise {
- try {
- const powergate = await Powergate.build(this._host, this._token);
-
- const services: Array = doc.service;
-
- for (let i = 0; i < services.length; i++) {
- if (services[i].id == docId) {
- const asset_cid = services[i].serviceEndpoint;
- var bytes: Uint8Array = await powergate.getFromPowergate(asset_cid);
- var uint8array = new TextDecoder().decode(bytes);
- var type = services[i].type;
- break;
- }
- }
-
- return {id: docId, type: type, data: uint8array};
-
- } catch (e) {
- console.log(e);
- throw e;
- }
- }
-}
diff --git a/legacy/packages/core/src/docu/document.ts b/legacy/packages/core/src/docu/document.ts
deleted file mode 100644
index 132ad71..0000000
--- a/legacy/packages/core/src/docu/document.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import { GeoDID, IAbstractGeoDIDDocument } from '../geo-did/interfaces/factory-interfaces';
-import { ConcreteDefaultFactory } from '../geo-did/default/geo-did-default-factory';
-import { ConcreteDefaultGeoDIDCollection } from '../geo-did/default/geo-did-default-collection';
-import { ConcreteDefaultGeoDIDItem } from '../geo-did/default/geo-did-default-item';
-import { Powergate } from '../pin/powergate';
-import { IDocumentInfo, IAsset } from '../geo-did/interfaces/global-geo-did-interfaces';
-
-export class Document {
-
- constructor(public _ethereumAddress: string){}
-
- // Pin on Powergate
- async addGenesisDocument(_typeOfGeoDID: string, _host: string, _token: string, assets?: IAsset[]): Promise {
-
- let document: ConcreteDefaultGeoDIDCollection | ConcreteDefaultGeoDIDItem;
- const factory = new ConcreteDefaultFactory();
-
- try{
- if(_typeOfGeoDID.toLowerCase() == 'collection'){
- document = await factory.createGeoDIDDocument(ConcreteDefaultGeoDIDCollection);
- await document.prepRootGeoDID(this._ethereumAddress, _host, _token);
- }
- else if(_typeOfGeoDID.toLowerCase() == 'item'){
- document = await factory.createGeoDIDDocument(ConcreteDefaultGeoDIDItem);
- await document.prepRootGeoDID(this._ethereumAddress, _host, _token, assets);
- }
- else throw new Error('Invalid Option, please select Item or Collection');
-
- const geodidid: string = document.getGeoDIDid();
- const documentVal = JSON.parse(document.getDidDocument());
-
- return {
- geodidid: geodidid,
- documentVal: documentVal,
- }
- }
- catch(e){
- throw e;
- }
- }
-
- // Pin on Powergate
- async addChildDocument(_typeOfGeoDID: string, _parentID: string, _path: string, _host: string, _token: string, assets?: IAsset[]): Promise {
-
- let document: ConcreteDefaultGeoDIDCollection | ConcreteDefaultGeoDIDItem;
- const factory: ConcreteDefaultFactory = new ConcreteDefaultFactory();
-
- try{
- if(_typeOfGeoDID.toLowerCase() == 'collection'){
- document = await factory.createGeoDIDDocument(ConcreteDefaultGeoDIDCollection);
- await document.prepChildGeoDID(this._ethereumAddress, _parentID, _path, _host, _token);
- }
- else if(_typeOfGeoDID.toLowerCase() == 'item'){
- document = await factory.createGeoDIDDocument(ConcreteDefaultGeoDIDItem);
- await document.prepChildGeoDID(this._ethereumAddress, _parentID, _path, _host, _token, assets);
- }
- else throw new Error('Invalid Option, please select Item or Collection');
-
- const geodidid: string = document.getGeoDIDid();
- const documentVal = JSON.parse(document.getDidDocument());
-
- return {
- geodidid: geodidid,
- documentVal: documentVal,
- parentid: _parentID
- }
- }
- catch(e){
- throw e;
- }
- }
-}
\ No newline at end of file
diff --git a/legacy/packages/core/src/geo-did/default/geo-did-default-collection.ts b/legacy/packages/core/src/geo-did/default/geo-did-default-collection.ts
deleted file mode 100644
index 8c383dc..0000000
--- a/legacy/packages/core/src/geo-did/default/geo-did-default-collection.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-import { ConcreteDefaultGeoDIDDocument } from './geo-did-default-document';
-import { GeoDidType, Relationship } from '../interfaces/global-geo-did-interfaces';
-import { GeoDoctypeUtils } from '../doctype-utils/geo-doctype-utils';
-
-export class ConcreteDefaultGeoDIDCollection extends ConcreteDefaultGeoDIDDocument {
-
- constructor(){super()}
-
- public getGeoDIDid(): string {
- return this.geoDIDid;
- }
-
- public async prepRootGeoDID(_ethAddress: string, _host: string, _token: string): Promise{
-
- // create the GeoDID Identifier
- try{
- const geoId = await GeoDoctypeUtils.createGeodidIdFromGenesis(_ethAddress);
- this.geoDIDid = GeoDoctypeUtils.normalizeDocId(geoId);
-
- this.publicKey = [
- {
- id: this.geoDIDid.concat('#controller'),
- type: 'Secp256k1VerificationKey2018',
- controller: this.geoDIDid,
- ethereumAddress: _ethAddress
- }
- ];
-
- this.didmetadata = {
- type: GeoDidType.Collection,
- created: new Date()
- };
-
- this.links = [
- {
- id: this.geoDIDid,
- type: GeoDidType.Collection,
- rel: Relationship.Root
- },
- {
- id: this.geoDIDid,
- type: GeoDidType.Collection,
- rel: Relationship.Self
- }
- ]
-
- this.serviceEndpoint = []
-
- this.buildDocument();
- }
- catch(e){
- throw e;
- }
- }
-
- public async prepChildGeoDID(_ethAddress: string, _parentid: string, _path: string, _host: string, _token: string): Promise{
- this.geoDIDid = _parentid.concat('/' + _path);
- const rootGeoDID = GeoDoctypeUtils.getBaseGeoDidId(_parentid);
-
- this.publicKey = [
- {
- id: this.geoDIDid.concat('#controller'),
- type: 'Secp256k1VerificationKey2018',
- controller: this.geoDIDid,
- ethereumAddress: _ethAddress
- }
- ];
-
- this.didmetadata = {
- type: GeoDidType.Collection,
- created: new Date()
- };
-
- this.links = [
- {
- id: this.geoDIDid,
- type: GeoDidType.Collection,
- rel: Relationship.Root
- },
- {
- id: this.geoDIDid,
- type: GeoDidType.Collection,
- rel: Relationship.Self
- },
- {
- id: _parentid,
- type: GeoDidType.Collection,
- rel: Relationship.Parent
- }
- ];
-
- this.serviceEndpoint = [];
-
- this.buildDocument();
- }
-
-}
\ No newline at end of file
diff --git a/legacy/packages/core/src/geo-did/default/geo-did-default-document.ts b/legacy/packages/core/src/geo-did/default/geo-did-default-document.ts
deleted file mode 100644
index f23369f..0000000
--- a/legacy/packages/core/src/geo-did/default/geo-did-default-document.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { IAbstractGeoDIDDocument } from '../interfaces/factory-interfaces';
-import { GeoDIDDocument, IMetadata, ILinks, GeoDidType, Relationship, IAsset } from '../interfaces/global-geo-did-interfaces';
-import { GeoDoctypeUtils } from '../doctype-utils/geo-doctype-utils';
-import { ServiceEndpoint, PublicKey } from 'did-resolver';
-
-
-export class ConcreteDefaultGeoDIDDocument implements IAbstractGeoDIDDocument{
-
- public label: string;
- public geoDIDid: string;
- public doctype: string;
-
- protected publicKey: PublicKey[];
- protected didmetadata: IMetadata;
- protected links: ILinks[];
- protected serviceEndpoint: ServiceEndpoint[];
- protected geoDID: GeoDIDDocument;
-
- // Need a specific type later
- constructor(){}
-
- buildDocument(){
- this.geoDID = {
- '@context':'https://w3id.org/did/v1',
- id: this.geoDIDid,
- publicKey: this.publicKey,
- didmetadata: this.didmetadata,
- links: this.links,
- service: this.serviceEndpoint
- };
- }
-
- // not implemented for the Base Class
- async prepChildGeoDID(_ethAddress: string, _parentid: string, _path: string, _host: string, _token: string): Promise {
- throw new Error('Method not implemented for Default.');
- }
-
- async prepRootGeoDID(_ethAddress: string, _host: string, _token: string): Promise{
- throw new Error('Method not implemented for Default.');
- }
-
- public getDocType(): string{
- return this.doctype;
- }
-
- public getDidDocument(): string {
- return JSON.stringify(this.geoDID);
- }
-
- public getGeoDIDid(): string {
- return this.geoDIDid;
- }
-
-}
\ No newline at end of file
diff --git a/legacy/packages/core/src/geo-did/default/geo-did-default-factory.ts b/legacy/packages/core/src/geo-did/default/geo-did-default-factory.ts
deleted file mode 100644
index 53c4669..0000000
--- a/legacy/packages/core/src/geo-did/default/geo-did-default-factory.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { IAbstractGeoDIDFactory } from '../interfaces/factory-interfaces';
-
-export class ConcreteDefaultFactory implements IAbstractGeoDIDFactory{
- // Creates the Document
- public async createGeoDIDDocument(document: {new (): T}): Promise{
- return new document();
- }
-
-}
\ No newline at end of file
diff --git a/legacy/packages/core/src/geo-did/default/geo-did-default-item.ts b/legacy/packages/core/src/geo-did/default/geo-did-default-item.ts
deleted file mode 100644
index f514a02..0000000
--- a/legacy/packages/core/src/geo-did/default/geo-did-default-item.ts
+++ /dev/null
@@ -1,135 +0,0 @@
-import { ConcreteDefaultGeoDIDDocument } from './geo-did-default-document';
-import { GeoDidType, Relationship, IAsset } from '../interfaces/global-geo-did-interfaces';
-import { GeoDoctypeUtils } from '../doctype-utils/geo-doctype-utils';
-import { Powergate } from '../../pin/powergate';
-import { ServiceEndpoint } from 'did-resolver';
-
-export class ConcreteDefaultGeoDIDItem extends ConcreteDefaultGeoDIDDocument{
-
- constructor(){
- super();
- }
-
- public async prepRootGeoDID(_ethAddress: string, _host: string, _token: string, _assets?: IAsset[]): Promise{
-
- // create the GeoDID Identifier
- try{
- const geoId = await GeoDoctypeUtils.createGeodidIdFromGenesis(_ethAddress);
- this.geoDIDid = GeoDoctypeUtils.normalizeDocId(geoId);
-
- this.publicKey = [
- {
- id: this.geoDIDid.concat('#controller'),
- type: 'Secp256k1VerificationKey2018',
- controller: this.geoDIDid,
- ethereumAddress: _ethAddress
- }
- ];
-
- this.didmetadata = {
- type: GeoDidType.Item,
- created: new Date()
- };
-
- this.links = [
- {
- id: this.geoDIDid,
- type: GeoDidType.Item,
- rel: Relationship.Root
- },
- {
- id: this.geoDIDid,
- type: GeoDidType.Item,
- rel: Relationship.Self
- }
- ];
-
- if(_assets) this.serviceEndpoint = await this.addAssetsToGenesisItem(_assets, _host, _token);
- else this.serviceEndpoint = [];
-
- this.buildDocument();
- }
- catch(e){
- throw e;
- }
- }
-
- public async prepChildGeoDID(_ethAddress: string, _parentid: string, _path: string, _host: string, _token: string, _assets?: IAsset[]): Promise{
- this.geoDIDid = _parentid.concat('/' + _path);
- const rootGeoDID = GeoDoctypeUtils.getBaseGeoDidId(_parentid);
-
- this.publicKey = [
- {
- id: this.geoDIDid.concat('#controller'),
- type: 'Secp256k1VerificationKey2018',
- controller: this.geoDIDid,
- ethereumAddress: _ethAddress
- }
- ];
-
- this.didmetadata = {
- type: GeoDidType.Item,
- created: new Date()
- };
-
- this.links = [
- {
- id: rootGeoDID,
- type: GeoDidType.Collection,
- rel: Relationship.Root
- },
- {
- id: this.geoDIDid,
- type: GeoDidType.Item,
- rel: Relationship.Self
- },
- {
- id: _parentid,
- type: GeoDidType.Collection,
- rel: Relationship.Parent
- }
- ];
-
- if(_assets) try{ this.serviceEndpoint = await this.addAssetsToGenesisItem(_assets, _host, _token); }catch(e){ throw e; }
- else this.serviceEndpoint = [];
-
- this.buildDocument();
-
- }
-
- async pinAsset(_powergate: Powergate, _asset: IAsset): Promise {
- try {
- const uint8array = new TextEncoder().encode(_asset.data);
- const seCID: string = await _powergate.getAssetCid(uint8array);
- await _powergate.pin(seCID);
-
- return {
- id: this.geoDIDid.concat(`#${_asset.tag}`),
- type: _asset.type,
- serviceEndpoint: seCID,
- };
-
- } catch (e) {
- throw e;
- }
- }
-
- async addAssetsToGenesisItem(_assets: IAsset[], _host: string, _token: string): Promise {
-
- // by default creates new instance
- const powergate: Powergate = await Powergate.build(_host, _token);
-
- let services: ServiceEndpoint[] = [];
-
- try {
- for(let i = 0; i < _assets.length; i++){
- const service: ServiceEndpoint = await this.pinAsset(powergate, _assets[i]);
- services.push(service);
- }
- return services;
- } catch (e) {
- throw e;
- }
- }
-
-}
\ No newline at end of file
diff --git a/legacy/packages/core/src/geo-did/doctype-utils/geo-doctype-utils.ts b/legacy/packages/core/src/geo-did/doctype-utils/geo-doctype-utils.ts
deleted file mode 100644
index eb60096..0000000
--- a/legacy/packages/core/src/geo-did/doctype-utils/geo-doctype-utils.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import ajv from 'ajv';
-import CID from 'cids';
-// TODO: properly import and declare module multihashing-async
-const multihashing = require('multihashing-async');
-
-/**
- * Doctype related utils
- */
-export class GeoDoctypeUtils {
- static validator: any = new ajv({ allErrors: true });
-
- // get the base geodid id
- static getBaseGeoDidId(docId: string): string {
- const baseid = docId.split('/');
- return baseid[0]; // returns the base id
- }
-
- // create the GeoDID
- static async createGeodidIdFromGenesis(_id: string): Promise {
- const genesisCid = await this.createCID(_id);
-
- const baseDocId = ['geo:/', genesisCid.toString()].join('/');
-
- return baseDocId;
- }
-
- static normalizeDocId(docId: string): string {
- if (docId.startsWith('geo://')) {
- return docId.replace('geo://', 'did:geo:');
- }
- return docId;
- }
-
- // still needs to be fixed
- static getGenesis(docId: string): string {
- const genesis = docId.startsWith('geo://') ? docId.split('//')[1] : docId.split('/')[2];
- const indexOfVersion = genesis.indexOf('?');
- if (indexOfVersion !== -1) {
- return genesis.substring(0, indexOfVersion);
- }
- return genesis;
- }
-
- static async createCID(_id: string): Promise {
-
- const event = new Date();
- const str_time = event.toString();
-
- const bytes = new TextEncoder().encode(_id.concat(str_time));
- const hash = await multihashing(bytes, 'sha2-256');
-
- const cid = new CID(0, 'dag-pb', hash, 'base58btc');
-
- const cidreturn = cid.toString();
-
- return cidreturn;
- }
-}
-
diff --git a/legacy/packages/core/src/geo-did/interfaces/factory-interfaces.ts b/legacy/packages/core/src/geo-did/interfaces/factory-interfaces.ts
deleted file mode 100644
index 99c7c55..0000000
--- a/legacy/packages/core/src/geo-did/interfaces/factory-interfaces.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { ConcreteDefaultGeoDIDCollection } from '../default/geo-did-default-collection';
-import { ConcreteDefaultGeoDIDItem } from '../default/geo-did-default-item';
-import { ConcreteDefaultGeoDIDDocument } from '../default/geo-did-default-document';
-import { IAsset } from './global-geo-did-interfaces'
-
-export interface IAbstractGeoDIDFactory {
- createGeoDIDDocument(c: {new (): T}): Promise;
-}
-
-// Acts as a Node
-export interface IAbstractGeoDIDDocument {
- label: string;
- geoDIDid: string;
- prepRootGeoDID(_ethAddress: string, _host: string, _token: string, _assets?: IAsset[]): void;
- prepChildGeoDID(_ethAddress: string, _parentid: string, _path: string, _host: string, _token: string, _assets?: IAsset[]): void;
- getGeoDIDid(): string;
- getDidDocument(): string;
-}
-
-export type GeoDID = ConcreteDefaultGeoDIDDocument | ConcreteDefaultGeoDIDCollection | ConcreteDefaultGeoDIDItem;
diff --git a/legacy/packages/core/src/geo-did/interfaces/global-geo-did-interfaces.ts b/legacy/packages/core/src/geo-did/interfaces/global-geo-did-interfaces.ts
deleted file mode 100644
index d0e6d3f..0000000
--- a/legacy/packages/core/src/geo-did/interfaces/global-geo-did-interfaces.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { DIDDocument } from 'did-resolver';
-import { Powergate } from '../../pin/powergate';
-
-export const enum GeoDidType{ Default = 'default', Item = 'item', Collection = 'collection' }
-export const enum Relationship{ Root = 'root', Self = 'self', Parent = 'parent', Child = 'child' }
-export const enum ServiceType{ Collection_Metadata = 'collection-metadata', Item_Metadata = 'item-metadata', GeoJSON = 'geojson', JSON = 'json', GeoTIFF = 'geotiff', Misc = 'misc'}
-
-export interface ILoadInfo {
- documentInfo: IDocumentInfo;
- powergateInstance: Powergate
-}
-
-export interface IAsset {
- type: string;
- tag: string;
- data: any;
-}
-
-export interface IPinInfo {
- geodidid: string;
- cid: string;
- pinDate: Date;
- token: string
-}
-
-export interface IDocumentInfo {
- geodidid: string;
- documentVal: any;
- token?: string;
- parentid?: string;
-}
-
-export interface IAssetInfo {
- id: string;
- type: string;
- data: any;
-}
-
-export interface ILinks {
- id: string;
- type: GeoDidType;
- rel: Relationship;
-}
-
-export interface IMetadata {
- type: GeoDidType;
- created: Date;
- updated?: Date[];
-}
-
-export interface GeoDIDDocument extends DIDDocument {
- didmetadata?: IMetadata;
- links: ILinks[];
-}
diff --git a/legacy/packages/core/src/pin/powergate.ts b/legacy/packages/core/src/pin/powergate.ts
deleted file mode 100644
index 47c57d7..0000000
--- a/legacy/packages/core/src/pin/powergate.ts
+++ /dev/null
@@ -1,115 +0,0 @@
-import { Pow, createPow, powTypes } from '@textile/powergate-client';
-
-const chalk = require('chalk');
-//import chalk from 'chalk';
-
-export interface Pinning {
- open(): Promise;
- close(): Promise;
- pin(cid: string): Promise;
- //unpin(cid: CID): Promise;
-}
-
-export enum JobStatus {
- JOB_STATUS_UNSPECIFIED = 0,
- JOB_STATUS_QUEUED = 1,
- JOB_STATUS_EXECUTING = 2,
- JOB_STATUS_FAILED = 3,
- JOB_STATUS_CANCELED = 4,
- JOB_STATUS_SUCCESS = 5,
-}
-
-// create powergate instance
-export class Powergate implements Pinning {
- readonly endpoint?: string;
-
- // Readonly properties must be initialized at their declaration or in the constructor.
- constructor(private _host: string, private _pow: Pow, private _token?: string) {}
-
- static async build(host: string, tokenval?: string): Promise {
- //const host: string = "http://0.0.0.0:6002"
- //const host = 'http://52.168.51.215:6002';
- const pow: Pow = createPow({ host });
- if (tokenval) {
- pow.setAdminToken(tokenval);
- pow.setToken(tokenval);
- } else {
- try {
- const { user } = await pow.admin.users.create(); // save this token for later use!
- tokenval = user?.token;
- pow.setAdminToken(user?.token);
- pow.setToken(user?.token);
- } catch (err) {
- throw err;
- }
- }
-
- return new Powergate(host, pow, tokenval);
- }
-
- get pow() {
- return this._pow;
- }
-
- async open(): Promise {
- this._pow = createPow({ host: this._host });
- if (this._token) {
- this._pow.setAdminToken(this._token);
- this._pow.setToken(this._token);
- }
- }
-
- async getToken(): Promise {
- return this._token;
- }
-
- async close(): Promise {
- throw new Error('Method not implemented.');
- }
-
- async getAssetCid(buffer: any): Promise {
- try {
- const { cid } = await this._pow.data.stage(buffer);
- return cid;
- } catch (e) {
- throw e;
- }
- }
-
- async getFromPowergate(cid: string): Promise {
- try {
- const bytes = await this._pow.data.get(cid);
- return bytes;
- } catch (e) {
- //console.log(e);
- throw e;
- }
- }
-
- async pin(cid: string): Promise {
- try {
- const { jobId } = await this._pow.storageConfig.apply(cid);
- //this.waitForJobStatus(jobId);
- } catch (e) {
- if (e.message.includes('cid already pinned, consider using override flag')) {
- // Do Nothing
- } else {
- throw e;
- }
- }
- }
-
- protected waitForJobStatus(jobId: string): Promise {
- return new Promise((resolve, reject) => {
- const jobsCancel = this._pow.storageJobs.watch((job: any) => {
- if (job.status === powTypes.JobStatus.JOB_STATUS_CANCELED) {
- console.log('job canceled');
- } else if (job.status === powTypes.JobStatus.JOB_STATUS_FAILED) {
- console.log('job failed');
- } else if (job.status === powTypes.JobStatus.JOB_STATUS_SUCCESS) {
- console.log('job success!');
- }
- }, jobId);
- });
- }
-}
diff --git a/legacy/packages/core/src/resolver/geo-did-resolver.ts b/legacy/packages/core/src/resolver/geo-did-resolver.ts
deleted file mode 100644
index 6517884..0000000
--- a/legacy/packages/core/src/resolver/geo-did-resolver.ts
+++ /dev/null
@@ -1,153 +0,0 @@
-import { AstralClient } from '../astral-client';
-import { DIDResolver, DIDDocument, ParsedDID, ServiceEndpoint } from 'did-resolver';
-import { Powergate } from '../pin/powergate';
-import { IAssetInfo } from '../geo-did/interfaces/global-geo-did-interfaces';
-
-import { setIntervalAsync, clearIntervalAsync } from 'set-interval-async/dynamic';
-import cliSpinners from 'cli-spinners';
-
-import { GraphQLClient, gql } from 'graphql-request';
-
-//const Ora = require('ora');
-const chalk = require('chalk');
-
-export interface ResolverRegistry {
- [index: string]: DIDResolver;
-}
-
-interface Variables {
- [key: string]: any;
-}
-
-interface Response {
- geoDID: {
- cid: string;
- };
-}
-
-interface Resolve {
- document: any;
- asset?: any;
-}
-
-async function declareCID(data: T): Promise{
- if(data.geoDID != null){ return (data.geoDID.cid).toString() }
- else{ return undefined }
-}
-
-async function getCID(client: GraphQLClient, query: any, variables: Variables): Promise {
- var data: any;
- var cid: string;
-
- var counter: number = 0;
-
- //const spinner = ora('Loading document').start();
-
- return await new Promise((resolve, reject) => {
- const interval = setIntervalAsync(async() => {
- /*
- const spinner = new Ora({
- discardStdin: false,
- text: `${chalk.yellow('Loading document')}`,
- spinner: cliSpinners.dots
- });
-
- spinner.start();
- spinner.color = 'yellow';*/
- try{
- data = await client.request(query, variables)
-
- if (data.hasOwnProperty('geoDID')) {
- cid = await declareCID(data);
- }
- }catch(err){
- reject(`${err}`); // reject
- }
-
- if (cid != undefined) {
- //spinner.clear();
- //spinner.succeed(`${chalk.green('Request was successful')}`);
- resolve(cid);
- clearIntervalAsync(interval);
- //spinner.stop();
- }
- else if(counter >= 30){
- //spinner.clear();
- //spinner.fail(`${chalk.red('Failed: ')}`);
- reject(`${chalk.red('The Request Timed out. Please try again.')}`);
- clearIntervalAsync(interval);
- //spinner.stop();
- }
-
- counter++;
- }, 5000);
- });
-}
-
-const resolve = async (
- astral: AstralClient,
- powergate: Powergate,
- parseddid: string,
- parsedid: string,
- parsedpath?: string,
- parsedfragment?: string,
-): Promise => {
-
- const endpoint = astral._thegraphEndpoint;
-
- const client = new GraphQLClient(endpoint);
-
- let pathActual: string = '';
-
- if (parsedpath != undefined) {
- pathActual = parseddid.concat(parsedpath);
- } else {
- pathActual = parseddid;
- }
-
- const query = gql`
- query($geoDIDID: ID!) {
- geoDID(id: $geoDIDID) {
- cid
- }
- }
- `;
-
- const variables: Variables = {
- geoDIDID: pathActual,
- };
-
- try {
- // wait for the response to return cid or timeout
- const cid: string = await getCID(client, query, variables);
-
- // gets the document
- const bytes: Uint8Array = await powergate.getFromPowergate(cid);
- const strj = new TextDecoder('utf-8').decode(bytes);
-
- const document = JSON.parse(strj);
-
- return document;
-
- } catch(e) {
- //console.log(e);
- throw e;
- }
-};
-
-
-
-// needs a powergate instance to call getResolver
-export default {
- getResolver: (astral: AstralClient, powergate: Powergate): ResolverRegistry => {
- return {
- geo: async (did: string, parsed: ParsedDID): Promise => {
- try{
- return await resolve(astral, powergate, parsed.did, parsed.id, parsed.path, parsed.fragment);
- }catch(e){
- throw e;
- }
- },
- };
- },
-};
diff --git a/legacy/packages/core/src/scripts/fetch.ts b/legacy/packages/core/src/scripts/fetch.ts
deleted file mode 100644
index 6c69175..0000000
--- a/legacy/packages/core/src/scripts/fetch.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import fetch from 'cross-fetch';
-
-// will be used to fetch the catalogs and items
-export async function fetchJson(url: string, payload?: any): Promise {
- let opts;
- if (payload) {
- opts = {
- method: 'post',
- body: JSON.stringify(payload),
- headers: { 'Content-Type': 'application/json' },
- };
- }
- const res = await (await fetch(url, opts)).json();
- if (res.error) throw new Error(res.error);
- return res;
-}
-
diff --git a/legacy/packages/core/tsconfig.json b/legacy/packages/core/tsconfig.json
deleted file mode 100644
index a2aa06c..0000000
--- a/legacy/packages/core/tsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "extends": "../../tsconfig.json",
- "compilerOptions": {
- "outDir": "./lib",
- "rootDir": "./src",
- "composite": true,
- "strictNullChecks": false,
- },
- "include": ["./src/**/*"]
-}
\ No newline at end of file
diff --git a/legacy/packages/ipld-encoded-geotiff/CHANGELOG.md b/legacy/packages/ipld-encoded-geotiff/CHANGELOG.md
deleted file mode 100644
index 2fe531a..0000000
--- a/legacy/packages/ipld-encoded-geotiff/CHANGELOG.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file.
-See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
-
-## [1.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.5...@astralprotocol/ipld-encoded-geotiff@1.0.6) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff
-
-
-
-
-
-## [1.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.4...@astralprotocol/ipld-encoded-geotiff@1.0.5) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff
-
-
-
-
-
-## [1.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.3...@astralprotocol/ipld-encoded-geotiff@1.0.4) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff
-
-
-
-
-
-## [1.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.2...@astralprotocol/ipld-encoded-geotiff@1.0.3) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff
-
-
-
-
-
-## [1.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/ipld-encoded-geotiff@1.0.1...@astralprotocol/ipld-encoded-geotiff@1.0.2) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff
-
-
-
-
-
-## 1.0.1 (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/ipld-encoded-geotiff
diff --git a/legacy/packages/ipld-encoded-geotiff/LICENSE-APACHE b/legacy/packages/ipld-encoded-geotiff/LICENSE-APACHE
deleted file mode 100644
index 2ad0ad1..0000000
--- a/legacy/packages/ipld-encoded-geotiff/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- 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 [2020] [astralDAO]
-
- 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.
diff --git a/legacy/packages/ipld-encoded-geotiff/LICENSE-MIT b/legacy/packages/ipld-encoded-geotiff/LICENSE-MIT
deleted file mode 100644
index 1874419..0000000
--- a/legacy/packages/ipld-encoded-geotiff/LICENSE-MIT
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 astralDAO
-
-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.
diff --git a/legacy/packages/ipld-encoded-geotiff/README.md b/legacy/packages/ipld-encoded-geotiff/README.md
deleted file mode 100644
index 5af9e4d..0000000
--- a/legacy/packages/ipld-encoded-geotiff/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# `ipld-encoded-geotiff`
-
-> TODO: description
-
-## Usage
-
-```
-const ipldEncodedGeotiff = require('ipld-encoded-geotiff');
-
-// TODO: DEMONSTRATE API
-```
diff --git a/legacy/packages/ipld-encoded-geotiff/__tests__/ipld-encoded-geotiff.test.js b/legacy/packages/ipld-encoded-geotiff/__tests__/ipld-encoded-geotiff.test.js
deleted file mode 100644
index d491c88..0000000
--- a/legacy/packages/ipld-encoded-geotiff/__tests__/ipld-encoded-geotiff.test.js
+++ /dev/null
@@ -1,7 +0,0 @@
-'use strict';
-
-const ipldEncodedGeotiff = require('..');
-
-describe('ipld-encoded-geotiff', () => {
- it('needs tests');
-});
diff --git a/legacy/packages/ipld-encoded-geotiff/lib/index.d.ts b/legacy/packages/ipld-encoded-geotiff/lib/index.d.ts
deleted file mode 100644
index cb0ff5c..0000000
--- a/legacy/packages/ipld-encoded-geotiff/lib/index.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-export {};
diff --git a/legacy/packages/ipld-encoded-geotiff/lib/index.js b/legacy/packages/ipld-encoded-geotiff/lib/index.js
deleted file mode 100644
index 0452e2c..0000000
--- a/legacy/packages/ipld-encoded-geotiff/lib/index.js
+++ /dev/null
@@ -1,41 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const geotiff_1 = require("geotiff");
-const cross_fetch_1 = __importDefault(require("cross-fetch"));
-function run(url) {
- return __awaiter(this, void 0, void 0, function* () {
- try {
- const response = yield cross_fetch_1.default(url);
- const arrayBuffer = yield response.arrayBuffer();
- const tiff = yield geotiff_1.fromArrayBuffer(arrayBuffer);
- console.log(tiff);
- const image = yield tiff.getImage();
- console.log(image);
- const width = image.getWidth();
- const height = image.getHeight();
- console.log("Width " + width);
- console.log("Height " + height);
- const tileWidth = image.getTileWidth();
- const tileHeight = image.getTileHeight();
- console.log("Tile Width " + tileWidth);
- console.log("Tile Height " + tileHeight);
- }
- catch (e) {
- console.log(e);
- }
- });
-}
-run('http://download.osgeo.org/geotiff/samples/gdal_eg/cea.tif');
-//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/legacy/packages/ipld-encoded-geotiff/lib/index.js.map b/legacy/packages/ipld-encoded-geotiff/lib/index.js.map
deleted file mode 100644
index a458ac2..0000000
--- a/legacy/packages/ipld-encoded-geotiff/lib/index.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAGA,qCAA0F;AAC1F,8DAAgC;AAQhC,SAAe,GAAG,CAAC,GAAW;;QAC1B,IAAG;YACC,MAAM,QAAQ,GAAG,MAAM,qBAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,yBAAe,CAAC,WAAW,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;YAEhC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,CAAA;YACtC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC,CAAA;SAG3C;QAAA,OAAM,CAAC,EAAC;YACL,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAClB;IACL,CAAC;CAAA;AAED,GAAG,CAAC,2DAA2D,CAAC,CAAC"}
\ No newline at end of file
diff --git a/legacy/packages/ipld-encoded-geotiff/package.json b/legacy/packages/ipld-encoded-geotiff/package.json
deleted file mode 100644
index 915a311..0000000
--- a/legacy/packages/ipld-encoded-geotiff/package.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "@astralprotocol/ipld-encoded-geotiff",
- "version": "1.0.6",
- "description": "IPLD Encoded GeoTIFFs to enable CID serving capabilities on IPFS. ",
- "author": "Astral ",
- "homepage": "https://github.com/AstralProtocol/astralprotocol#readme",
- "license": "MIT OR Apache-2.0",
- "main": "lib/index.ts",
- "typings": "lib/index.d.ts",
- "directories": {
- "lib": "lib",
- "test": "__tests__"
- },
- "files": [
- "lib"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/AstralProtocol/astralprotocol.git",
- "directory": "packages/ipld-encoded-geotiff"
- },
- "publishConfig": {
- "registry": "https://registry.npmjs.org",
- "access": "public"
- },
- "scripts": {
- "start": "ts-node src/index.ts",
- "tsc": "tsc",
- "test": "jest --coverage --runInBand",
- "build": "../../node_modules/.bin/tsc -p tsconfig.json",
- "prepublishOnly": "yarn run build",
- "prebuild": "yarn run clean",
- "lint": "eslint ./src '*/**/*.{js,ts,tsx}' --quiet --fix",
- "clean": "rm -rf ./lib ./tsconfig.tsbuildinfo"
- },
- "devDependencies": {
- "@typescript-eslint/eslint-plugin": "^4.9.0",
- "@typescript-eslint/parser": "^4.9.0",
- "cross-fetch": "^3.0.6",
- "eslint": "^7.14.0",
- "eslint-config-prettier": "^6.15.0",
- "eslint-plugin-jest": "^24.1.3",
- "eslint-plugin-prettier": "^3.1.4",
- "express": "^4.17.1",
- "jest": "^26.6.3",
- "prettier": "^2.2.1"
- },
- "dependencies": {
- "geotiff": "^1.0.0-beta.14",
- "ts-node": "^9.1.1"
- },
- "bugs": {
- "url": "https://github.com/AstralProtocol/astralprotocol/issues"
- }
-}
diff --git a/legacy/packages/ipld-encoded-geotiff/src/index.ts b/legacy/packages/ipld-encoded-geotiff/src/index.ts
deleted file mode 100644
index aa56ef2..0000000
--- a/legacy/packages/ipld-encoded-geotiff/src/index.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-// 1. Get the data and parse it
-// 2.
-
-import GeoTIFF, { fromUrl, fromFile, fromUrls, fromArrayBuffer, fromBlob } from 'geotiff';
-import fetch from 'cross-fetch';
-
-// To read a whole image into one big array of arrays the following method call can be used:
-// const data = await image.readRasters();
-
-/**
- *
- */
-async function run(url: string){
- try{
- const response = await fetch(url);
- const arrayBuffer = await response.arrayBuffer();
- const tiff = await fromArrayBuffer(arrayBuffer);
- console.log(tiff);
- const image = await tiff.getImage();
- console.log(image);
- const width = image.getWidth();
- const height = image.getHeight();
- console.log("Width " + width);
- console.log("Height " + height);
-
- const tileWidth = image.getTileWidth();
- const tileHeight = image.getTileHeight();
- console.log("Tile Width " + tileWidth) //514
- console.log("Tile Height " + tileHeight) //15
-
-
- }catch(e){
- console.log(e);
- }
-}
-
-run('http://download.osgeo.org/geotiff/samples/gdal_eg/cea.tif');
-//run('https://storage.googleapis.com/pdd-stac/disasters/hurricane-harvey/0831/SkySat_Freeport_s03_20170831T162740Z.tif');
\ No newline at end of file
diff --git a/legacy/packages/ipld-encoded-geotiff/src/tiff/gdal/cea.tif b/legacy/packages/ipld-encoded-geotiff/src/tiff/gdal/cea.tif
deleted file mode 100644
index 1d52161..0000000
Binary files a/legacy/packages/ipld-encoded-geotiff/src/tiff/gdal/cea.tif and /dev/null differ
diff --git a/legacy/packages/ipld-encoded-geotiff/tsconfig.json b/legacy/packages/ipld-encoded-geotiff/tsconfig.json
deleted file mode 100644
index 328b226..0000000
--- a/legacy/packages/ipld-encoded-geotiff/tsconfig.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "extends": "../../tsconfig.json",
- "compilerOptions": {
- "outDir": "./lib",
- "rootDir": "./src",
- "allowJs": true,
- "composite": true,
- "strictNullChecks": true,
- "moduleResolution": "node",
- "noImplicitAny": false,
- "target": "es6",
- "module": "commonjs"
- },
- "typeRoots": [
- "./src/typings",
- "./node_modules/@types/"
- ],
- "include": [
- "./src/**/*"
- ]
- ,
- "exclude": [
- "node_modules"
- ]
-}
\ No newline at end of file
diff --git a/legacy/packages/stac-validator-js/CHANGELOG.md b/legacy/packages/stac-validator-js/CHANGELOG.md
deleted file mode 100644
index 5110bf0..0000000
--- a/legacy/packages/stac-validator-js/CHANGELOG.md
+++ /dev/null
@@ -1,288 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file.
-See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
-
-## [0.0.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.6...@astralprotocol/stac-validator-js@0.0.7) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/stac-validator-js
-
-
-
-
-
-## [0.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.5...@astralprotocol/stac-validator-js@0.0.6) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/stac-validator-js
-
-
-
-
-
-## [0.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.4...@astralprotocol/stac-validator-js@0.0.5) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/stac-validator-js
-
-
-
-
-
-## [0.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.3...@astralprotocol/stac-validator-js@0.0.4) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/stac-validator-js
-
-
-
-
-
-## [0.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.2...@astralprotocol/stac-validator-js@0.0.3) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/stac-validator-js
-
-
-
-
-
-## [0.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/stac-validator-js@0.0.1...@astralprotocol/stac-validator-js@0.0.2) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/stac-validator-js
-
-
-
-
-
-## 0.0.1 (2021-01-05)
-
-**Note:** Version bump only for package @astralprotocol/stac-validator-js
-
-
-
-
-
-## [0.0.30](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.29...@astraldao/stac-validator-js@0.0.30) (2020-11-26)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.29](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.28...@astraldao/stac-validator-js@0.0.29) (2020-11-26)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.28](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.27...@astraldao/stac-validator-js@0.0.28) (2020-11-26)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.27](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.26...@astraldao/stac-validator-js@0.0.27) (2020-11-26)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.26](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.25...@astraldao/stac-validator-js@0.0.26) (2020-11-26)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.25](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.24...@astraldao/stac-validator-js@0.0.25) (2020-11-26)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.24](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.23...@astraldao/stac-validator-js@0.0.24) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.23](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.22...@astraldao/stac-validator-js@0.0.23) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.22](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.21...@astraldao/stac-validator-js@0.0.22) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.21](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.20...@astraldao/stac-validator-js@0.0.21) (2020-11-21)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.20](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.19...@astraldao/stac-validator-js@0.0.20) (2020-10-16)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.19](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.18...@astraldao/stac-validator-js@0.0.19) (2020-10-16)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.18](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.17...@astraldao/stac-validator-js@0.0.18) (2020-10-15)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.17](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.16...@astraldao/stac-validator-js@0.0.17) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.16](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.15...@astraldao/stac-validator-js@0.0.16) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.15](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.14...@astraldao/stac-validator-js@0.0.15) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.14](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.13...@astraldao/stac-validator-js@0.0.14) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.13](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.12...@astraldao/stac-validator-js@0.0.13) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.12](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.11...@astraldao/stac-validator-js@0.0.12) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.11](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.10...@astraldao/stac-validator-js@0.0.11) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.10](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.9...@astraldao/stac-validator-js@0.0.10) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.9](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.8...@astraldao/stac-validator-js@0.0.9) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.8](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.7...@astraldao/stac-validator-js@0.0.8) (2020-10-14)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.7](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.6...@astraldao/stac-validator-js@0.0.7) (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.6](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.5...@astraldao/stac-validator-js@0.0.6) (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.5](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.4...@astraldao/stac-validator-js@0.0.5) (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## [0.0.4](https://github.com/astralDAO/astralprotocol/compare/@astraldao/stac-validator-js@0.0.3...@astraldao/stac-validator-js@0.0.4) (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## 0.0.3 (2020-10-13)
-
-**Note:** Version bump only for package @astraldao/stac-validator-js
-
-
-
-
-
-## 0.0.2 (2020-09-28)
-
-**Note:** Version bump only for package @astraldao/stac-validator
diff --git a/legacy/packages/stac-validator-js/LICENSE-APACHE b/legacy/packages/stac-validator-js/LICENSE-APACHE
deleted file mode 100644
index 2ad0ad1..0000000
--- a/legacy/packages/stac-validator-js/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- 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 [2020] [astralDAO]
-
- 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.
diff --git a/legacy/packages/stac-validator-js/LICENSE-MIT b/legacy/packages/stac-validator-js/LICENSE-MIT
deleted file mode 100644
index 1874419..0000000
--- a/legacy/packages/stac-validator-js/LICENSE-MIT
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 astralDAO
-
-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.
diff --git a/legacy/packages/stac-validator-js/lib/file.js b/legacy/packages/stac-validator-js/lib/file.js
deleted file mode 100644
index c7570e8..0000000
--- a/legacy/packages/stac-validator-js/lib/file.js
+++ /dev/null
@@ -1 +0,0 @@
-//# sourceMappingURL=file.js.map
\ No newline at end of file
diff --git a/legacy/packages/stac-validator-js/lib/file.js.map b/legacy/packages/stac-validator-js/lib/file.js.map
deleted file mode 100644
index ba6f8b7..0000000
--- a/legacy/packages/stac-validator-js/lib/file.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"file.js","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/legacy/packages/stac-validator-js/package.json b/legacy/packages/stac-validator-js/package.json
deleted file mode 100644
index dc92062..0000000
--- a/legacy/packages/stac-validator-js/package.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "@astralprotocol/stac-validator-js",
- "version": "0.0.7",
- "description": "Node implementation of a Stac file validator ",
- "author": "Astral ",
- "homepage": "https://github.com/AstralProtocol/astralprotocol#readme",
- "license": "MIT OR Apache-2.0",
- "main": "src/stac-validator.js",
- "directories": {
- "lib": "lib"
- },
- "files": [
- "src"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/AstralProtocol/astralprotocol.git",
- "directory": "packages/stac-validator-js"
- },
- "publishConfig": {
- "registry": "https://registry.npmjs.org",
- "access": "public"
- },
- "scripts": {
- "tsc": "tsc",
- "test": "jest --coverage --runInBand",
- "prebuild": "yarn run clean",
- "lint": "eslint ./src '*/**/*.{js,ts,tsx}' --quiet --fix",
- "clean": "rm -rf ./lib",
- "validate": "node ./src/index.js"
- },
- "bugs": {
- "url": "https://github.com/AstralProtocol/astralprotocol/issues"
- },
- "dependencies": {
- "@apidevtools/json-schema-ref-parser": "^9.0.1",
- "ajv": "^6.12.2",
- "compare-versions": "^3.6.0"
- },
- "gitHead": "d1177c83e76b00ec51e6b0532b6588e3bc29fa77"
-}
diff --git a/legacy/packages/stac-validator-js/src/file.ts b/legacy/packages/stac-validator-js/src/file.ts
deleted file mode 100644
index e69de29..0000000
diff --git a/legacy/packages/stac-validator-js/src/stac-validator.js b/legacy/packages/stac-validator-js/src/stac-validator.js
deleted file mode 100644
index 599cdab..0000000
--- a/legacy/packages/stac-validator-js/src/stac-validator.js
+++ /dev/null
@@ -1,175 +0,0 @@
-// based on https://github.com/m-mohr/stac-node-validator
-// transformed into a node package for easier consumption
-
-const RefParser = require("@apidevtools/json-schema-ref-parser");
-const Ajv = require("ajv");
-const compareVersions = require("compare-versions");
-
-let COMPILED = {};
-let ajv = new Ajv({
- allErrors: true,
- missingRefs: "ignore",
-});
-
-module.exports = async function validate(json) {
- try {
- let isApiList = false;
- let entries;
- if (Array.isArray(json.collections)) {
- entries = json.collections;
- isApiList = true;
- console.log(
- json +
- " is a /collections endpoint. Validating all " +
- entries.length +
- " collections, but ignoring the other parts of the response.\n"
- );
- } else if (Array.isArray(json.features)) {
- entries = json.features;
- isApiList = true;
- console.log(
- json +
- " is a /collections/:id/items endpoint. Validating all " +
- entries.length +
- " items, but ignoring the other parts of the response.\n"
- );
- } else {
- entries = [json];
- }
-
- let fileValid = true;
- for (let data of entries) {
- let id = json;
- if (isApiList) {
- id += " -> " + data.id;
- }
- if (typeof data.stac_version !== "string") {
- console.error("-- " + id + ": Skipping; No STAC version found\n");
- fileValid = false;
- continue;
- } else if (compareVersions(data.stac_version, "1.0.0-beta.2", "<")) {
- console.error(
- "-- " +
- id +
- ": Skipping; Can only validate STAC version >= 1.0.0-beta.2\n"
- );
- continue;
- } else {
- console.log("-- " + id + " (" + data.stac_version + ")");
- }
-
- let type;
- if (typeof data.type !== "undefined") {
- if (data.type === "Feature") {
- type = "item";
- } else if (data.type === "FeatureCollection") {
- // type = 'itemcollection';
- console.warn(
- "-- " + id + ": Skipping; STAC ItemCollections not supported yet\n"
- );
- continue;
- } else {
- console.error(
- "-- " + id + ": `type` is invalid; must be `Feature`\n"
- );
- fileValid = false;
- continue;
- }
- } else {
- if (
- typeof data.extent !== "undefined" ||
- data.license !== "undefined"
- ) {
- type = "collection";
- } else {
- type = "catalog";
- }
- }
-
- // Get all schema to validate against
- let schemas = [type];
- if (Array.isArray(data.stac_extensions)) {
- schemas = schemas.concat(data.stac_extensions);
- }
-
- for (let schema of schemas) {
- try {
- let loadArgs = isUrl(schema)
- ? [schema]
- : // removed schemaFolder and replaced with null
- [null, data.stac_version, schema];
- let validate = await loadSchema(...loadArgs);
- let valid = validate(data);
- if (!valid) {
- console.log("---- " + schema + ": invalid");
- console.warn(validate.errors);
- console.log("\n");
- fileValid = false;
- if (schema === "core") {
- console.info(
- "--- Validation error in core, skipping extension validation"
- );
- break;
- }
- } else {
- console.info("---- " + schema + ": valid");
- }
- } catch (error) {
- fileValid = false;
- console.error("---- " + schema + ": " + error.message);
- }
- }
- console.log("\n");
- }
-
- return fileValid;
- } catch (error) {
- console.error(error);
- }
-};
-
-const SUPPORTED_PROTOCOLS = ["http", "https"];
-
-function isUrl(uri) {
- let part = uri.match(/^(\w+):\/\//i);
- if (part) {
- if (!SUPPORTED_PROTOCOLS.includes(part[1].toLowerCase())) {
- throw new Error('Given protocol "' + part[1] + '" is not supported.');
- }
- return true;
- }
- return false;
-}
-
-async function loadSchema(baseUrl = null, version = null, shortcut = null) {
- version = typeof version === "string" ? "v" + version : "unversioned";
-
- if (typeof baseUrl !== "string") {
- baseUrl = "https://schemas.stacspec.org/" + version;
- }
-
- let url;
- if (
- shortcut === "item" ||
- shortcut === "catalog" ||
- shortcut === "collection"
- ) {
- url = baseUrl + "/" + shortcut + "-spec/json-schema/" + shortcut + ".json";
- } else if (typeof shortcut === "string") {
- url = baseUrl + "/extensions/" + shortcut + "/json-schema/schema.json";
- } else {
- url = baseUrl;
- }
-
- if (typeof COMPILED[url] !== "undefined") {
- return COMPILED[url];
- } else {
- let fullSchema = await RefParser.dereference(url, {
- dereference: {
- circular: "ignore",
- },
- });
- COMPILED[url] = ajv.compile(fullSchema);
- return COMPILED[url];
- }
-}
diff --git a/legacy/packages/stac-validator-js/tsconfig.json b/legacy/packages/stac-validator-js/tsconfig.json
deleted file mode 100644
index 2f36eea..0000000
--- a/legacy/packages/stac-validator-js/tsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "extends": "../../tsconfig.json",
- "compilerOptions": {
- "outDir": "./lib",
- "rootDir": "./src",
- "composite": true,
- "strictNullChecks": false
- },
- "exclude": ["./lib/**/*"]
-}
diff --git a/legacy/packages/subgraph/CHANGELOG.md b/legacy/packages/subgraph/CHANGELOG.md
deleted file mode 100644
index 8cf4232..0000000
--- a/legacy/packages/subgraph/CHANGELOG.md
+++ /dev/null
@@ -1,304 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file.
-See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
-
-## [1.0.13](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.12...@astralprotocol/subgraph@1.0.13) (2021-03-29)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.12](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.11...@astralprotocol/subgraph@1.0.12) (2021-03-29)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.11](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.10...@astralprotocol/subgraph@1.0.11) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.10](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.9...@astralprotocol/subgraph@1.0.10) (2021-03-28)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.9](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.8...@astralprotocol/subgraph@1.0.9) (2021-03-17)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.8](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.7...@astralprotocol/subgraph@1.0.8) (2021-03-16)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.7](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.6...@astralprotocol/subgraph@1.0.7) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.6](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.5...@astralprotocol/subgraph@1.0.6) (2021-03-15)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.4...@astralprotocol/subgraph@1.0.5) (2021-02-25)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.3...@astralprotocol/subgraph@1.0.4) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.2...@astralprotocol/subgraph@1.0.3) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@1.0.1...@astralprotocol/subgraph@1.0.2) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [1.0.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.1.5...@astralprotocol/subgraph@1.0.1) (2021-02-24)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [0.1.5](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.1.4...@astralprotocol/subgraph@0.1.5) (2021-02-23)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [0.1.4](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.1.3...@astralprotocol/subgraph@0.1.4) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [0.1.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.1.1...@astralprotocol/subgraph@0.1.3) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [0.1.1](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.0.3...@astralprotocol/subgraph@0.1.1) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [0.0.3](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.0.2...@astralprotocol/subgraph@0.0.3) (2021-02-18)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [0.0.2](https://github.com/AstralProtocol/astralprotocol/compare/@astralprotocol/subgraph@0.0.1...@astralprotocol/subgraph@0.0.2) (2021-02-09)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## 0.0.1 (2021-01-05)
-
-**Note:** Version bump only for package @astralprotocol/subgraph
-
-
-
-
-
-## [0.0.46](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.45...@astraldao/astral-protocol-subgraph@0.0.46) (2020-12-17)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.45](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.44...@astraldao/astral-protocol-subgraph@0.0.45) (2020-12-01)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.44](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.43...@astraldao/astral-protocol-subgraph@0.0.44) (2020-11-26)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.43](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.42...@astraldao/astral-protocol-subgraph@0.0.43) (2020-11-26)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.42](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.41...@astraldao/astral-protocol-subgraph@0.0.42) (2020-11-26)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.41](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.40...@astraldao/astral-protocol-subgraph@0.0.41) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.40](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.39...@astraldao/astral-protocol-subgraph@0.0.40) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.39](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.38...@astraldao/astral-protocol-subgraph@0.0.39) (2020-11-24)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.38](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.37...@astraldao/astral-protocol-subgraph@0.0.38) (2020-11-21)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.37](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.36...@astraldao/astral-protocol-subgraph@0.0.37) (2020-11-21)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.36](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.35...@astraldao/astral-protocol-subgraph@0.0.36) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.35](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.34...@astraldao/astral-protocol-subgraph@0.0.35) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.34](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.33...@astraldao/astral-protocol-subgraph@0.0.34) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.33](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.32...@astraldao/astral-protocol-subgraph@0.0.33) (2020-10-22)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.32](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.31...@astraldao/astral-protocol-subgraph@0.0.32) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.31](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.30...@astraldao/astral-protocol-subgraph@0.0.31) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.30](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.29...@astraldao/astral-protocol-subgraph@0.0.30) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
-
-
-
-
-
-## [0.0.29](https://github.com/astralDAO/astralprotocol/compare/@astraldao/astral-protocol-subgraph@0.0.28...@astraldao/astral-protocol-subgraph@0.0.29) (2020-10-19)
-
-**Note:** Version bump only for package @astraldao/astral-protocol-subgraph
diff --git a/legacy/packages/subgraph/LICENSE-APACHE b/legacy/packages/subgraph/LICENSE-APACHE
deleted file mode 100644
index 2ad0ad1..0000000
--- a/legacy/packages/subgraph/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- 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 [2020] [astralDAO]
-
- 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.
diff --git a/legacy/packages/subgraph/LICENSE-MIT b/legacy/packages/subgraph/LICENSE-MIT
deleted file mode 100644
index 1874419..0000000
--- a/legacy/packages/subgraph/LICENSE-MIT
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 astralDAO
-
-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.
diff --git a/legacy/packages/subgraph/README.md b/legacy/packages/subgraph/README.md
deleted file mode 100644
index 7430d8f..0000000
--- a/legacy/packages/subgraph/README.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# @astralprotocol/subgraph
-
-## Description
-
-The @astralprotocol/subgraph serves as the indexing engine of the protocol, capturing the registration and modification events of GeoDIDs in the @astralprotocol/contracts. It acts like a decentralized querying database where it is substantially easier to make complex queries to the Spatial Assets registry. It is used to create the tree of GeoDID nodes that represents their relationships and groupings.
-
-The current version of the subgraph (v06) is indexing the Ethereum Roptsten network at the following graphql endpoints:
-
-- `https://api.thegraph.com/subgraphs/name/astralprotocol/spatialassetsv06`
-- `wss://api.thegraph.com/subgraphs/name/astralprotocol/spatialassetsv06`
-
-You can connect to these with your GraphQL client of choice.
-
-## To add Astral Protocol Subgraph to your application
-
-```
-yarn add @astralprotocol/subgraph
-```
-
-## To develop or try the Astral Protocol Subgraph locally
-
-### Prerequisites
-
-- Clone the astralprotocol repository and go to packages/subgraph
-- Run `sudo apt-get install libsecret-1-dev`
-- [Docker Instalation](https://docs.docker.com/install/linux/docker-ce/debian/)
-- Run `git clone https://github.com/graphprotocol/graph-node/` (check setup instructions for docker version on https://thegraph.com/docs/)
-- Have the development steps of @astralprotocol/contracts done previously (with Ganache)
-
-### Deployment
-
-1. Ensure you have ganache running with the contracts deployed from packages/contracts
-2. Update the SpatialAssets contract address that you got from the previous step in the subgraph.yaml (if needed and ensure the correct file is named according to the network of deployment - for ganache it should read as mainnet: backup the current subgraph.yamlfile and rename it to subgraphRopsten.yaml).
-3. In another terminal, inside the graph-node folder, run `cd docker && docker-compose up`. If using Docker for WSL, Docker must be running on Windows. If graph-node throws an error try clearing the `data/postgres` folder, within the docker directory of graph-node, with `sudo rm -rf data/postgres`. Restart docker if needed and you are using WSL.
-4. Generate subgraph typescript files with `yarn codegen`, then create and deploy the subgraph to the graph-node with `yarn create-local && yarn deploy-local`
-5. You can query the subgraph and view the GeoDID tree in the local provided endpoint.
-
-### Testing
-
-The following query can be provided to the graphql endpoint to view the GeoDIDs tree (after doing the deployment steps above):
-
-```
-{
- geoDIDs {
- id
- owner
- cid
- storage
- root
- parent
- edges {
- id
- childGeoDID {
- id
- }
- }
- active
- type
- }
-}
-```
diff --git a/legacy/packages/subgraph/abis/SpatialAssets.json b/legacy/packages/subgraph/abis/SpatialAssets.json
deleted file mode 100644
index 6e325c2..0000000
--- a/legacy/packages/subgraph/abis/SpatialAssets.json
+++ /dev/null
@@ -1,30268 +0,0 @@
-{
- "contractName": "SpatialAssets",
- "abi": [
- {
- "inputs": [
- {
- "internalType": "string",
- "name": "uri",
- "type": "string"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "constructor"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenAdded",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenErrorHasParent",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenErrorNoExistence",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenErrorNoParent",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenRemoved",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "parentGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ParentAdded",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "parentGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ParentRemoved",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "previousAdminRole",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "newAdminRole",
- "type": "bytes32"
- }
- ],
- "name": "RoleAdminChanged",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "account",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "sender",
- "type": "address"
- }
- ],
- "name": "RoleGranted",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "account",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "sender",
- "type": "address"
- }
- ],
- "name": "RoleRevoked",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "SpatialAssetDeactivated",
- "type": "event"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "cid",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "root",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "canBeParent",
- "type": "bool"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- {
- "inputs": [],
- "name": "DATA_SUPPLIER",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [],
- "name": "DEFAULT_ADMIN_ROLE",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- }
- ],
- "name": "getRoleAdmin",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "index",
- "type": "uint256"
- }
- ],
- "name": "getRoleMember",
- "outputs": [
- {
- "internalType": "address",
- "name": "",
- "type": "address"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- }
- ],
- "name": "getRoleMemberCount",
- "outputs": [
- {
- "internalType": "uint256",
- "name": "",
- "type": "uint256"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "internalType": "address",
- "name": "account",
- "type": "address"
- }
- ],
- "name": "grantRole",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "internalType": "address",
- "name": "account",
- "type": "address"
- }
- ],
- "name": "hasRole",
- "outputs": [
- {
- "internalType": "bool",
- "name": "",
- "type": "bool"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "internalType": "address",
- "name": "account",
- "type": "address"
- }
- ],
- "name": "renounceRole",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "internalType": "address",
- "name": "account",
- "type": "address"
- }
- ],
- "name": "revokeRole",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [],
- "name": "registerRole",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- }
- ],
- "name": "enableStorage",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- }
- ],
- "name": "disableStorage",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "owner",
- "type": "address"
- },
- {
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32",
- "name": "parentGeoDIDId",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32[]",
- "name": "childrenGeoDIDIds",
- "type": "bytes32[]"
- },
- {
- "internalType": "bytes32",
- "name": "cid",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "internalType": "uint256",
- "name": "geoDIDtype",
- "type": "uint256"
- }
- ],
- "name": "registerSpatialAsset",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32[]",
- "name": "childrenGeoDIDIds",
- "type": "bytes32[]"
- }
- ],
- "name": "addChildrenGeoDIDs",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32",
- "name": "parentGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "addParentGeoDID",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32[]",
- "name": "childrenGeoDIDIds",
- "type": "bytes32[]"
- }
- ],
- "name": "removeChildrenGeoDIDs",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32",
- "name": "parentGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "removeParentGeoDID",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "internalType": "bytes32[]",
- "name": "childrenToRemove",
- "type": "bytes32[]"
- }
- ],
- "name": "deactivateSpatialAsset",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "id",
- "type": "bytes32"
- }
- ],
- "name": "idToOwner",
- "outputs": [
- {
- "internalType": "address",
- "name": "",
- "type": "address"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "id",
- "type": "bytes32"
- }
- ],
- "name": "idToCid",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "id",
- "type": "bytes32"
- }
- ],
- "name": "idToCanBeParent",
- "outputs": [
- {
- "internalType": "bool",
- "name": "",
- "type": "bool"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "id",
- "type": "bytes32"
- }
- ],
- "name": "idToHasParent",
- "outputs": [
- {
- "internalType": "bool",
- "name": "",
- "type": "bool"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "id",
- "type": "bytes32"
- }
- ],
- "name": "idToExternalStorage",
- "outputs": [
- {
- "internalType": "bytes32",
- "name": "",
- "type": "bytes32"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [
- {
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- }
- ],
- "name": "allowedStorages",
- "outputs": [
- {
- "internalType": "bool",
- "name": "",
- "type": "bool"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- },
- {
- "inputs": [],
- "name": "uri",
- "outputs": [
- {
- "internalType": "string",
- "name": "",
- "type": "string"
- }
- ],
- "stateMutability": "view",
- "type": "function",
- "constant": true
- }
- ],
- "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenErrorHasParent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenErrorNoExistence\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenErrorNoParent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"childrenGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ChildrenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ParentAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"ParentRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"}],\"name\":\"SpatialAssetDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"canBeParent\",\"type\":\"bool\"}],\"name\":\"SpatialAssetRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DATA_SUPPLIER\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"childrenGeoDIDIds\",\"type\":\"bytes32[]\"}],\"name\":\"addChildrenGeoDIDs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"addParentGeoDID\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"}],\"name\":\"allowedStorages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"childrenToRemove\",\"type\":\"bytes32[]\"}],\"name\":\"deactivateSpatialAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"}],\"name\":\"disableStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"}],\"name\":\"enableStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToCanBeParent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToCid\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToExternalStorage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToHasParent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"idToOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"childrenGeoDIDIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32\",\"name\":\"cid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"offChainStorage\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"geoDIDtype\",\"type\":\"uint256\"}],\"name\":\"registerSpatialAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"childrenGeoDIDIds\",\"type\":\"bytes32[]\"}],\"name\":\"removeChildrenGeoDIDs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"geoDIDId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"parentGeoDIDId\",\"type\":\"bytes32\"}],\"name\":\"removeParentGeoDID\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"{SpatialAssets} registry This contract uses {AccessControl} to lock permissioned functions using the different roles - head to its documentation for details. The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant 'DATA_SUPPLIER' roles to other accounts\",\"events\":{\"ChildrenAdded(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid is added to a node\"},\"ChildrenErrorHasParent(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid already has a parent but shouldn't have\"},\"ChildrenErrorNoExistence(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid does not exist\"},\"ChildrenErrorNoParent(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid does not have a parent when trying to remove it from a parent\"},\"ChildrenRemoved(bytes32,bytes32)\":{\"details\":\"Emitted when a children geodid is removed from a node\"},\"ParentAdded(bytes32,bytes32)\":{\"details\":\"Emitted when a parent geodid is added to a node\"},\"ParentRemoved(bytes32,bytes32)\":{\"details\":\"Emitted when a parent geodid is removed from a node\"},\"SpatialAssetDeactivated(bytes32)\":{\"details\":\"Emitted when Spatial Assets of id `id` are deactivated.\"},\"SpatialAssetRegistered(address,bytes32,bytes32,bytes32,bytes32,bool)\":{\"details\":\"Emitted when Spatial Assets of id `id` are transferred to `to``.\"}},\"kind\":\"dev\",\"methods\":{\"addChildrenGeoDIDs(bytes32,bytes32[])\":{\"details\":\"Adds children GeoDIDs to an already existent geoDID Emits a {ChildrenAdded} event.\"},\"addParentGeoDID(bytes32,bytes32)\":{\"details\":\"Adds a parent GeoDID to an already existent geoDID Emits a {ParentAdded} event.\"},\"constructor\":{\"details\":\"Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that deploys the contract.\"},\"deactivateSpatialAsset(bytes32,bytes32[])\":{\"details\":\"De-registers a spatial asset\"},\"disableStorage(bytes32)\":{\"details\":\"Disables an existing storage\"},\"enableStorage(bytes32)\":{\"details\":\"Registers a new storage that can accept GeoDID document creation\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"registerRole()\":{\"details\":\"Registers a new user with the ability to register a spatial asset.\"},\"registerSpatialAsset(address,bytes32,bytes32,bytes32[],bytes32,bytes32,uint256)\":{\"details\":\"Registers one spatial asset with external storage 'data' and assigns them to `account`. Emits a {SpatialAssetRegistered} event.\"},\"removeChildrenGeoDIDs(bytes32,bytes32[])\":{\"details\":\"Removes childrenGeoDIDs from a geoDID Emits a {ChildrenRemoved} event.\"},\"removeParentGeoDID(bytes32,bytes32)\":{\"details\":\"Removes a parent GeoDID from an already existent geoDID Emits a {ParentAdded} event.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol\":\"SpatialAssets\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol\":{\"keccak256\":\"0xb63dbe4b63cf8b764fe8ce1609b0cf075366715e162a239f5fa897e68345648d\",\"license\":\"APACHE OR MIT\",\"urls\":[\"bzz-raw://17c1309fec71b328034ec5e37b1732f13e7c46ddb52f7a1561e39063eaed0a43\",\"dweb:/ipfs/QmPGJEKrVy3x8DtJtB9Z86rAFArjsmU5wovA2qvjuLY986\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x9486045e189facd2e868ece35249872598ef03f1087fb6fa4d1161842daa2287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77c3a04ef8453788b14b1ebbc24dd3f0a18ceb2615cd156aac949a611e552af8\",\"dweb:/ipfs/QmcmqWGguRM3iLuF57tcyrN3F6EA63kzeNkDfQuteBnurr\"]},\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4fc155a2f7837603d69a13cfa481eb5e7f5e02cb77e2ec9edbac30986db37988\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0855147e38b5e36288a8df73b8da49132f14ec7abb19041b0c98872263643aaa\",\"dweb:/ipfs/QmSrSysyFUYQq7hbJaJXG7EyZW6ezDBzEJx3SABp6eiJSS\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]}},\"version\":1}",
- "bytecode": "0x60806040523480156200001157600080fd5b506040516200236138038062002361833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052505050620000fe816200014a60201b60201c565b6200011460006200010e62000163565b62000167565b620001437fb90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f6200010e62000163565b5062000309565b80516200015f9060019060208401906200026d565b5050565b3390565b6200015f8282600082815260208181526040909120620001929183906200199b620001e6821b17901c565b156200015f57620001a262000163565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001fd836001600160a01b03841662000206565b90505b92915050565b600062000214838362000255565b6200024c5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000200565b50600062000200565b60009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002b057805160ff1916838001178555620002e0565b82800160010185558215620002e0579182015b82811115620002e0578251825591602001919060010190620002c3565b50620002ee929150620002f2565b5090565b5b80821115620002ee5760008155600101620002f3565b61204880620003196000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806391d14854116100de578063c44e96a011610097578063d547741f11610071578063d547741f14610663578063eac989f81461068f578063f999be891461070c578063fd52c0d51461072f57610173565b8063c44e96a014610621578063c66f70cc14610629578063ca15c8731461064657610173565b806391d14854146103cd5780639969879b146103f9578063a217fddf14610401578063a8f904b514610409578063b22de880146104b1578063bdabcf631461057957610173565b806336568abe1161013057806336568abe146103045780636e7a6f4b146103305780637c1c6c271461034d57806384f42912146103705780638d0a9bff1461038d5780639010d07c146103aa57610173565b8063092e9f25146101785780630bfa194d146101a95780630e437b1c146101c65780631dc2a7b014610270578063248a9ca3146102a95780632f2ff15d146102d8575b600080fd5b6101956004803603602081101561018e57600080fd5b503561074c565b604080519115158252519081900360200190f35b610195600480360360208110156101bf57600080fd5b5035610761565b61026e600480360360408110156101dc57600080fd5b81359190810190604081016020820135600160201b8111156101fd57600080fd5b82018360208201111561020f57600080fd5b803590602001918460208302840111600160201b8311171561023057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610776945050505050565b005b61028d6004803603602081101561028657600080fd5b50356109b1565b604080516001600160a01b039092168252519081900360200190f35b6102c6600480360360208110156102bf57600080fd5b50356109cc565b60408051918252519081900360200190f35b61026e600480360360408110156102ee57600080fd5b50803590602001356001600160a01b03166109e1565b61026e6004803603604081101561031a57600080fd5b50803590602001356001600160a01b0316610a4d565b61026e6004803603602081101561034657600080fd5b5035610aae565b61026e6004803603604081101561036357600080fd5b5080359060200135610b5f565b6102c66004803603602081101561038657600080fd5b5035610d05565b610195600480360360208110156103a357600080fd5b5035610d17565b61028d600480360360408110156103c057600080fd5b5080359060200135610d2c565b610195600480360360408110156103e357600080fd5b50803590602001356001600160a01b0316610d4d565b6102c6610d65565b6102c6610d77565b61026e6004803603604081101561041f57600080fd5b81359190810190604081016020820135600160201b81111561044057600080fd5b82018360208201111561045257600080fd5b803590602001918460208302840111600160201b8311171561047357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d7c945050505050565b61026e600480360360e08110156104c757600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156104fd57600080fd5b82018360208201111561050f57600080fd5b803590602001918460208302840111600160201b8311171561053057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060208101359060400135610f97565b61026e6004803603604081101561058f57600080fd5b81359190810190604081016020820135600160201b8111156105b057600080fd5b8201836020820111156105c257600080fd5b803590602001918460208302840111600160201b831117156105e357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611342945050505050565b61026e6115ae565b6102c66004803603602081101561063f57600080fd5b5035611625565b6102c66004803603602081101561065c57600080fd5b5035611637565b61026e6004803603604081101561067957600080fd5b50803590602001356001600160a01b031661164e565b6106976116a7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156106d15781810151838201526020016106b9565b50505050905090810190601f1680156106fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026e6004803603604081101561072257600080fd5b508035906020013561173c565b61026e6004803603602081101561074557600080fd5b503561193b565b60009081526004602052604090205460ff1690565b60009081526005602052604090205460ff1690565b61077e6119b0565b6000838152600260205260409020546001600160a01b039081169116146107d65760405162461bcd60e51b8152600401808060200182810382526037815260200180611ef56037913960400191505060405180910390fd5b600082815260026020908152604080832080546001600160a01b0319169055600782528083208390556003825280832083905560048252808320805460ff191690556006909152812055805180156109815760005b8181101561097f57600083828151811061084157fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b031615801590610885575060008181526004602052604090205460ff165b156108dc576000818152600460209081526040808320805460ff19169055600690915280822083905551829187917f64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee9190a3610976565b6000818152600260205260409020546001600160a01b031615801590610911575060008181526004602052604090205460ff16155b1561094857604051819086907f69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c90600090a3610976565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b5060010161082b565b505b60405183907ff02d29e4850d2beddb5886160b76b29bd18836de50f35dde5b1ce3e11ec43bb890600090a2505050565b6000908152600260205260409020546001600160a01b031690565b60009081526020819052604090206002015490565b600082815260208190526040902060020154610a04906109ff6119b0565b610d4d565b610a3f5760405162461bcd60e51b815260040180806020018281038252602f815260200180611ca0602f913960400191505060405180910390fd5b610a4982826119b4565b5050565b610a556119b0565b6001600160a01b0316816001600160a01b031614610aa45760405162461bcd60e51b815260040180806020018281038252602f815260200180611fe4602f913960400191505060405180910390fd5b610a498282611a1d565b610abb60006109ff6119b0565b610af65760405162461bcd60e51b8152600401808060200182810382526045815260200180611d036045913960600191505060405180910390fd5b60008181526008602052604090205460ff1615610b445760405162461bcd60e51b815260040180806020018281038252602d815260200180611ec8602d913960400191505060405180910390fd5b6000908152600860205260409020805460ff19166001179055565b610b79600080516020611fc48339815191526109ff6119b0565b610bb45760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610bbc6119b0565b6000838152600260205260409020546001600160a01b03908116911614610c145760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b6000818152600260205260409020546001600160a01b0316610c675760405162461bcd60e51b815260040180806020018281038252603c815260200180611e8c603c913960400191505060405180910390fd5b60008281526004602052604090205460ff16610cb45760405162461bcd60e51b8152600401808060200182810382526036815260200180611d486036913960400191505060405180910390fd5b6000828152600460209081526040808320805460ff19169055600690915280822084905551829184917f09ba4d5138fa8cb519e6a82fc3d9fe09a800f44f4b25ecea405424f82ffcaca99190a35050565b60009081526007602052604090205490565b60009081526008602052604090205460ff1690565b6000828152602081905260408120610d449083611a86565b90505b92915050565b6000828152602081905260408120610d449083611a92565b600080516020611fc483398151915281565b600081565b610d96600080516020611fc48339815191526109ff6119b0565b610dd15760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610dd96119b0565b6000838152600260205260409020546001600160a01b03908116911614610e315760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b80518015610f925760005b81811015610f90576000838281518110610e5257fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b031615801590610e96575060008181526004602052604090205460ff165b15610eed576000818152600460209081526040808320805460ff19169055600690915280822083905551829187917f64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee9190a3610f87565b6000818152600260205260409020546001600160a01b031615801590610f22575060008181526004602052604090205460ff16155b15610f5957604051819086907f69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c90600090a3610f87565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b50600101610e3c565b505b505050565b610fb1600080516020611fc48339815191526109ff6119b0565b610fec5760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610ff582610d17565b6110305760405162461bcd60e51b8152600401808060200182810382526026815260200180611c7a6026913960400191505060405180910390fd5b6000868152600260205260409020546001600160a01b0316156110845760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b8015806110915750806001145b6110e2576040805162461bcd60e51b815260206004820181905260248201527f5370617469616c204173736574733a2077726f6e672067656f64696474797065604482015290519081900360640190fd5b60008681526003602090815260408083208690556002825280832080546001600160a01b0319166001600160a01b038c161790556007909152902082905580611143576000868152600560205260409020805460ff19166001179055611163565b8060011415611163576000868152600560205260409020805460ff191690555b846111e9576000868152600460209081526040808320805460ff1916905560068252808320899055600582529182902054825185815291820189905260ff161515818301529051849188916001600160a01b038b16917f63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2919081900360600190a461129e565b6000868152600460209081526040808320805460ff19166001179055878352600682528083205489845260058352928190205481518681529283019390935260ff929092161515818301529051849188916001600160a01b038b16917f63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2919081900360600190a4604051859087907fe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d0690600090a35b835180158015906112bd575060008781526005602052604090205460ff165b156113385760005b818110156113365760008682815181106112db57fe5b602090810291909101810151600081815260049092526040808320805460ff191660011790555190925082918b917fc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d9190a3506001016112c5565b505b5050505050505050565b61135c600080516020611fc48339815191526109ff6119b0565b6113975760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b61139f6119b0565b6000838152600260205260409020546001600160a01b039081169116146113f75760405162461bcd60e51b8152600401808060200182810382526034815260200180611ccf6034913960400191505060405180910390fd5b60008281526005602052604090205460ff166114445760405162461bcd60e51b8152600401808060200182810382526040815260200180611dc46040913960400191505060405180910390fd5b80518015610f925760005b81811015610f9057600083828151811061146557fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b0316158015906114aa575060008181526004602052604090205460ff16155b1561150c576000818152600460209081526040808320805460ff191660011790558783526006909152808220548383528183205551829187917fc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d9190a36115a5565b6000818152600260205260409020546001600160a01b031615801590611540575060008181526004602052604090205460ff165b1561157757604051819086907fc2fbe5202fa3aef19d26284e739c3305170f8c2e9acf77122fc10277a492ac6b90600090a36115a5565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b5060010161144f565b6115c8600080516020611fc48339815191526109ff6119b0565b156116045760405162461bcd60e51b8152600401808060200182810382526035815260200180611f8f6035913960400191505060405180910390fd5b611623600080516020611fc483398151915261161e6119b0565b610a3f565b565b60009081526003602052604090205490565b6000818152602081905260408120610d4790611aa7565b60008281526020819052604090206002015461166c906109ff6119b0565b610aa45760405162461bcd60e51b8152600401808060200182810382526030815260200180611e5c6030913960400191505060405180910390fd5b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156117325780601f1061170757610100808354040283529160200191611732565b820191906000526020600020905b81548152906001019060200180831161171557829003601f168201915b5050505050905090565b611756600080516020611fc48339815191526109ff6119b0565b6117915760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b6117996119b0565b6000838152600260205260409020546001600160a01b039081169116146117f15760405162461bcd60e51b8152600401808060200182810382526034815260200180611ccf6034913960400191505060405180910390fd5b6000818152600260205260409020546001600160a01b03166118445760405162461bcd60e51b815260040180806020018281038252602c815260200180611e30602c913960400191505060405180910390fd5b60008281526004602052604090205460ff16156118925760405162461bcd60e51b815260040180806020018281038252602c815260200180611e04602c913960400191505060405180910390fd5b60008181526005602052604090205460ff166118df5760405162461bcd60e51b8152600401808060200182810382526046815260200180611d7e6046913960600191505060405180910390fd5b6000828152600460209081526040808320805460ff191660011790558383526006909152808220548483528183205551829184917fe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d069190a35050565b61194860006109ff6119b0565b6119835760405162461bcd60e51b8152600401808060200182810382526045815260200180611d036045913960600191505060405180910390fd5b6000908152600860205260409020805460ff19169055565b6000610d44836001600160a01b038416611ab2565b3390565b60008281526020819052604090206119cc908261199b565b15610a49576119d96119b0565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081905260409020611a359082611afc565b15610a4957611a426119b0565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610d448383611b11565b6000610d44836001600160a01b038416611b75565b6000610d4782611b8d565b6000611abe8383611b75565b611af457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d47565b506000610d47565b6000610d44836001600160a01b038416611b91565b81546000908210611b535760405162461bcd60e51b8152600401808060200182810382526022815260200180611c586022913960400191505060405180910390fd5b826000018281548110611b6257fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60008181526001830160205260408120548015611c4d5783546000198083019190810190600090879083908110611bc457fe5b9060005260206000200154905080876000018481548110611be157fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611c1157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610d47565b6000915050610d4756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64735370617469616c4173736574733a2073746f72616765206d75737420626520616c6c6f776564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e745370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f725370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f72616765735370617469616c4173736574733a2047656f44494420646f6573206e6f742068617665206120706172656e7420746f2072656d6f76655370617469616c4173736574733a20706172656e7447656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e295370617469616c4173736574733a2067656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e295370617469616c4173736574733a2067656f444944496420616c726561647920686173206120706172656e745370617469616c4173736574733a20706172656e7447656f444944496420646f6573206e6f74206578697374416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b655370617469616c4173736574733a2047656f44494420746f2062652072656d6f76656420617320706172656e7420646f6573206e6f742065786973745370617469616c4173736574733a2073746f72616765206d757374206e6f7420626520616374697665207965745370617469616c4173736574733a2063616c6c6572206973206e6f74206f776e6572206f6620746865205370617469616c2041737365745370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e6572207965745370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f2072656769737465725370617469616c4173736574733a206d757374206e6f742068617665206120444154415f535550504c49455220726f6c6520796574b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212200603174d84b92a254e194b236a6220fcb94109027f9b708b8705b69fcb21d1bd64736f6c634300060c0033",
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c806391d14854116100de578063c44e96a011610097578063d547741f11610071578063d547741f14610663578063eac989f81461068f578063f999be891461070c578063fd52c0d51461072f57610173565b8063c44e96a014610621578063c66f70cc14610629578063ca15c8731461064657610173565b806391d14854146103cd5780639969879b146103f9578063a217fddf14610401578063a8f904b514610409578063b22de880146104b1578063bdabcf631461057957610173565b806336568abe1161013057806336568abe146103045780636e7a6f4b146103305780637c1c6c271461034d57806384f42912146103705780638d0a9bff1461038d5780639010d07c146103aa57610173565b8063092e9f25146101785780630bfa194d146101a95780630e437b1c146101c65780631dc2a7b014610270578063248a9ca3146102a95780632f2ff15d146102d8575b600080fd5b6101956004803603602081101561018e57600080fd5b503561074c565b604080519115158252519081900360200190f35b610195600480360360208110156101bf57600080fd5b5035610761565b61026e600480360360408110156101dc57600080fd5b81359190810190604081016020820135600160201b8111156101fd57600080fd5b82018360208201111561020f57600080fd5b803590602001918460208302840111600160201b8311171561023057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610776945050505050565b005b61028d6004803603602081101561028657600080fd5b50356109b1565b604080516001600160a01b039092168252519081900360200190f35b6102c6600480360360208110156102bf57600080fd5b50356109cc565b60408051918252519081900360200190f35b61026e600480360360408110156102ee57600080fd5b50803590602001356001600160a01b03166109e1565b61026e6004803603604081101561031a57600080fd5b50803590602001356001600160a01b0316610a4d565b61026e6004803603602081101561034657600080fd5b5035610aae565b61026e6004803603604081101561036357600080fd5b5080359060200135610b5f565b6102c66004803603602081101561038657600080fd5b5035610d05565b610195600480360360208110156103a357600080fd5b5035610d17565b61028d600480360360408110156103c057600080fd5b5080359060200135610d2c565b610195600480360360408110156103e357600080fd5b50803590602001356001600160a01b0316610d4d565b6102c6610d65565b6102c6610d77565b61026e6004803603604081101561041f57600080fd5b81359190810190604081016020820135600160201b81111561044057600080fd5b82018360208201111561045257600080fd5b803590602001918460208302840111600160201b8311171561047357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610d7c945050505050565b61026e600480360360e08110156104c757600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156104fd57600080fd5b82018360208201111561050f57600080fd5b803590602001918460208302840111600160201b8311171561053057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505082359350505060208101359060400135610f97565b61026e6004803603604081101561058f57600080fd5b81359190810190604081016020820135600160201b8111156105b057600080fd5b8201836020820111156105c257600080fd5b803590602001918460208302840111600160201b831117156105e357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611342945050505050565b61026e6115ae565b6102c66004803603602081101561063f57600080fd5b5035611625565b6102c66004803603602081101561065c57600080fd5b5035611637565b61026e6004803603604081101561067957600080fd5b50803590602001356001600160a01b031661164e565b6106976116a7565b6040805160208082528351818301528351919283929083019185019080838360005b838110156106d15781810151838201526020016106b9565b50505050905090810190601f1680156106fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026e6004803603604081101561072257600080fd5b508035906020013561173c565b61026e6004803603602081101561074557600080fd5b503561193b565b60009081526004602052604090205460ff1690565b60009081526005602052604090205460ff1690565b61077e6119b0565b6000838152600260205260409020546001600160a01b039081169116146107d65760405162461bcd60e51b8152600401808060200182810382526037815260200180611ef56037913960400191505060405180910390fd5b600082815260026020908152604080832080546001600160a01b0319169055600782528083208390556003825280832083905560048252808320805460ff191690556006909152812055805180156109815760005b8181101561097f57600083828151811061084157fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b031615801590610885575060008181526004602052604090205460ff165b156108dc576000818152600460209081526040808320805460ff19169055600690915280822083905551829187917f64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee9190a3610976565b6000818152600260205260409020546001600160a01b031615801590610911575060008181526004602052604090205460ff16155b1561094857604051819086907f69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c90600090a3610976565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b5060010161082b565b505b60405183907ff02d29e4850d2beddb5886160b76b29bd18836de50f35dde5b1ce3e11ec43bb890600090a2505050565b6000908152600260205260409020546001600160a01b031690565b60009081526020819052604090206002015490565b600082815260208190526040902060020154610a04906109ff6119b0565b610d4d565b610a3f5760405162461bcd60e51b815260040180806020018281038252602f815260200180611ca0602f913960400191505060405180910390fd5b610a4982826119b4565b5050565b610a556119b0565b6001600160a01b0316816001600160a01b031614610aa45760405162461bcd60e51b815260040180806020018281038252602f815260200180611fe4602f913960400191505060405180910390fd5b610a498282611a1d565b610abb60006109ff6119b0565b610af65760405162461bcd60e51b8152600401808060200182810382526045815260200180611d036045913960600191505060405180910390fd5b60008181526008602052604090205460ff1615610b445760405162461bcd60e51b815260040180806020018281038252602d815260200180611ec8602d913960400191505060405180910390fd5b6000908152600860205260409020805460ff19166001179055565b610b79600080516020611fc48339815191526109ff6119b0565b610bb45760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610bbc6119b0565b6000838152600260205260409020546001600160a01b03908116911614610c145760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b6000818152600260205260409020546001600160a01b0316610c675760405162461bcd60e51b815260040180806020018281038252603c815260200180611e8c603c913960400191505060405180910390fd5b60008281526004602052604090205460ff16610cb45760405162461bcd60e51b8152600401808060200182810382526036815260200180611d486036913960400191505060405180910390fd5b6000828152600460209081526040808320805460ff19169055600690915280822084905551829184917f09ba4d5138fa8cb519e6a82fc3d9fe09a800f44f4b25ecea405424f82ffcaca99190a35050565b60009081526007602052604090205490565b60009081526008602052604090205460ff1690565b6000828152602081905260408120610d449083611a86565b90505b92915050565b6000828152602081905260408120610d449083611a92565b600080516020611fc483398151915281565b600081565b610d96600080516020611fc48339815191526109ff6119b0565b610dd15760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610dd96119b0565b6000838152600260205260409020546001600160a01b03908116911614610e315760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b80518015610f925760005b81811015610f90576000838281518110610e5257fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b031615801590610e96575060008181526004602052604090205460ff165b15610eed576000818152600460209081526040808320805460ff19169055600690915280822083905551829187917f64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee9190a3610f87565b6000818152600260205260409020546001600160a01b031615801590610f22575060008181526004602052604090205460ff16155b15610f5957604051819086907f69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c90600090a3610f87565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b50600101610e3c565b505b505050565b610fb1600080516020611fc48339815191526109ff6119b0565b610fec5760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b610ff582610d17565b6110305760405162461bcd60e51b8152600401808060200182810382526026815260200180611c7a6026913960400191505060405180910390fd5b6000868152600260205260409020546001600160a01b0316156110845760405162461bcd60e51b815260040180806020018281038252602c815260200180611f2c602c913960400191505060405180910390fd5b8015806110915750806001145b6110e2576040805162461bcd60e51b815260206004820181905260248201527f5370617469616c204173736574733a2077726f6e672067656f64696474797065604482015290519081900360640190fd5b60008681526003602090815260408083208690556002825280832080546001600160a01b0319166001600160a01b038c161790556007909152902082905580611143576000868152600560205260409020805460ff19166001179055611163565b8060011415611163576000868152600560205260409020805460ff191690555b846111e9576000868152600460209081526040808320805460ff1916905560068252808320899055600582529182902054825185815291820189905260ff161515818301529051849188916001600160a01b038b16917f63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2919081900360600190a461129e565b6000868152600460209081526040808320805460ff19166001179055878352600682528083205489845260058352928190205481518681529283019390935260ff929092161515818301529051849188916001600160a01b038b16917f63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2919081900360600190a4604051859087907fe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d0690600090a35b835180158015906112bd575060008781526005602052604090205460ff165b156113385760005b818110156113365760008682815181106112db57fe5b602090810291909101810151600081815260049092526040808320805460ff191660011790555190925082918b917fc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d9190a3506001016112c5565b505b5050505050505050565b61135c600080516020611fc48339815191526109ff6119b0565b6113975760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b61139f6119b0565b6000838152600260205260409020546001600160a01b039081169116146113f75760405162461bcd60e51b8152600401808060200182810382526034815260200180611ccf6034913960400191505060405180910390fd5b60008281526005602052604090205460ff166114445760405162461bcd60e51b8152600401808060200182810382526040815260200180611dc46040913960400191505060405180910390fd5b80518015610f925760005b81811015610f9057600083828151811061146557fe5b602090810291909101810151600081815260029092526040909120549091506001600160a01b0316158015906114aa575060008181526004602052604090205460ff16155b1561150c576000818152600460209081526040808320805460ff191660011790558783526006909152808220548383528183205551829187917fc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d9190a36115a5565b6000818152600260205260409020546001600160a01b031615801590611540575060008181526004602052604090205460ff165b1561157757604051819086907fc2fbe5202fa3aef19d26284e739c3305170f8c2e9acf77122fc10277a492ac6b90600090a36115a5565b604051819086907f9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda046690600090a35b5060010161144f565b6115c8600080516020611fc48339815191526109ff6119b0565b156116045760405162461bcd60e51b8152600401808060200182810382526035815260200180611f8f6035913960400191505060405180910390fd5b611623600080516020611fc483398151915261161e6119b0565b610a3f565b565b60009081526003602052604090205490565b6000818152602081905260408120610d4790611aa7565b60008281526020819052604090206002015461166c906109ff6119b0565b610aa45760405162461bcd60e51b8152600401808060200182810382526030815260200180611e5c6030913960400191505060405180910390fd5b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156117325780601f1061170757610100808354040283529160200191611732565b820191906000526020600020905b81548152906001019060200180831161171557829003601f168201915b5050505050905090565b611756600080516020611fc48339815191526109ff6119b0565b6117915760405162461bcd60e51b8152600401808060200182810382526037815260200180611f586037913960400191505060405180910390fd5b6117996119b0565b6000838152600260205260409020546001600160a01b039081169116146117f15760405162461bcd60e51b8152600401808060200182810382526034815260200180611ccf6034913960400191505060405180910390fd5b6000818152600260205260409020546001600160a01b03166118445760405162461bcd60e51b815260040180806020018281038252602c815260200180611e30602c913960400191505060405180910390fd5b60008281526004602052604090205460ff16156118925760405162461bcd60e51b815260040180806020018281038252602c815260200180611e04602c913960400191505060405180910390fd5b60008181526005602052604090205460ff166118df5760405162461bcd60e51b8152600401808060200182810382526046815260200180611d7e6046913960600191505060405180910390fd5b6000828152600460209081526040808320805460ff191660011790558383526006909152808220548483528183205551829184917fe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d069190a35050565b61194860006109ff6119b0565b6119835760405162461bcd60e51b8152600401808060200182810382526045815260200180611d036045913960600191505060405180910390fd5b6000908152600860205260409020805460ff19169055565b6000610d44836001600160a01b038416611ab2565b3390565b60008281526020819052604090206119cc908261199b565b15610a49576119d96119b0565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152602081905260409020611a359082611afc565b15610a4957611a426119b0565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610d448383611b11565b6000610d44836001600160a01b038416611b75565b6000610d4782611b8d565b6000611abe8383611b75565b611af457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d47565b506000610d47565b6000610d44836001600160a01b038416611b91565b81546000908210611b535760405162461bcd60e51b8152600401808060200182810382526022815260200180611c586022913960400191505060405180910390fd5b826000018281548110611b6257fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60008181526001830160205260408120548015611c4d5783546000198083019190810190600090879083908110611bc457fe5b9060005260206000200154905080876000018481548110611be157fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611c1157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610d47565b6000915050610d4756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64735370617469616c4173736574733a2073746f72616765206d75737420626520616c6c6f776564416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e745370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f725370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f72616765735370617469616c4173736574733a2047656f44494420646f6573206e6f742068617665206120706172656e7420746f2072656d6f76655370617469616c4173736574733a20706172656e7447656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e295370617469616c4173736574733a2067656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e295370617469616c4173736574733a2067656f444944496420616c726561647920686173206120706172656e745370617469616c4173736574733a20706172656e7447656f444944496420646f6573206e6f74206578697374416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b655370617469616c4173736574733a2047656f44494420746f2062652072656d6f76656420617320706172656e7420646f6573206e6f742065786973745370617469616c4173736574733a2073746f72616765206d757374206e6f7420626520616374697665207965745370617469616c4173736574733a2063616c6c6572206973206e6f74206f776e6572206f6620746865205370617469616c2041737365745370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e6572207965745370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f2072656769737465725370617469616c4173736574733a206d757374206e6f742068617665206120444154415f535550504c49455220726f6c6520796574b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212200603174d84b92a254e194b236a6220fcb94109027f9b708b8705b69fcb21d1bd64736f6c634300060c0033",
- "immutableReferences": {},
- "sourceMap": "539:12282:1:-:0;;;3166:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3166:171:1;;;;;;;;;;-1:-1:-1;3166:171:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3214:12;3222:3;3214:7;;;:12;;:::i;:::-;3236:44;1772:4:3;3267:12:1;:10;:12::i;:::-;3236:10;:44::i;:::-;3290:39;2284:26;3316:12;:10;:12::i;3290:39::-;3166:171;539:12282;;11979:78;12037:13;;;;:4;;:13;;;;;:::i;:::-;;11979:78;:::o;598:104:5:-;685:10;598:104;:::o;6588:110:3:-;6666:25;6677:4;6683:7;7098:6;:12;;;;;;;;;;;:33;;7123:7;;7098:24;;;;;:33;;:::i;:::-;7094:109;;;7179:12;:10;:12::i;:::-;-1:-1:-1;;;;;7152:40:3;7170:7;-1:-1:-1;;;;;7152:40:3;7164:4;7152:40;;;;;;;;;;7025:184;;:::o;6429:150:6:-;6499:4;6522:50;6527:3;-1:-1:-1;;;;;6547:23:6;;6522:4;:50::i;:::-;6515:57;;6429:150;;;;;:::o;1640:404::-;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:6;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:6;2015:12;;3805:127;3878:4;3901:19;;;:12;;;;;:19;;;;;;:24;;;3805:127::o;539:12282:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;539:12282:1;;;-1:-1:-1;539:12282:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
- "deployedSourceMap": "539:12282:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12373:100;;;;;;;;;;;;;;;;-1:-1:-1;12373:100:1;;:::i;:::-;;;;;;;;;;;;;;;;;;12263:104;;;;;;;;;;;;;;;;-1:-1:-1;12263:104:1;;:::i;10640:1256::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10640:1256:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10640:1256:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10640:1256:1;;-1:-1:-1;10640:1256:1;;-1:-1:-1;;;;;10640:1256:1:i;:::-;;12063:96;;;;;;;;;;;;;;;;-1:-1:-1;12063:96:1;;:::i;:::-;;;;-1:-1:-1;;;;;12063:96:1;;;;;;;;;;;;;;4282:112:3;;;;;;;;;;;;;;;;-1:-1:-1;4282:112:3;;:::i;:::-;;;;;;;;;;;;;;;;4644:223;;;;;;;;;;;;;;;;-1:-1:-1;4644:223:3;;;;;;-1:-1:-1;;;;;4644:223:3;;:::i;5818:205::-;;;;;;;;;;;;;;;;-1:-1:-1;5818:205:3;;;;;;-1:-1:-1;;;;;5818:205:3;;:::i;3737:354:1:-;;;;;;;;;;;;;;;;-1:-1:-1;3737:354:1;;:::i;9923:653::-;;;;;;;;;;;;;;;;-1:-1:-1;9923:653:1;;;;;;;:::i;12479:115::-;;;;;;;;;;;;;;;;-1:-1:-1;12479:115:1;;:::i;12600:134::-;;;;;;;;;;;;;;;;-1:-1:-1;12600:134:1;;:::i;3965:136:3:-;;;;;;;;;;;;;;;;-1:-1:-1;3965:136:3;;;;;;;:::i;2950:137::-;;;;;;;;;;;;;;;;-1:-1:-1;2950:137:3;;;;;;-1:-1:-1;;;;;2950:137:3;;:::i;2244:66:1:-;;;:::i;1727:49:3:-;;;:::i;8677:1111:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8677:1111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8677:1111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8677:1111:1;;-1:-1:-1;8677:1111:1;;-1:-1:-1;;;;;8677:1111:1:i;4578:1736::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4578:1736:1;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4578:1736:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4578:1736:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4578:1736:1;;-1:-1:-1;;4578:1736:1;;;-1:-1:-1;;;4578:1736:1;;;;;;;;;:::i;6446:1224::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6446:1224:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6446:1224:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6446:1224:1;;-1:-1:-1;6446:1224:1;;-1:-1:-1;;;;;6446:1224:1:i;3438:200::-;;;:::i;12165:92::-;;;;;;;;;;;;;;;;-1:-1:-1;12165:92:1;;:::i;3255:125:3:-;;;;;;;;;;;;;;;;-1:-1:-1;3255:125:3;;:::i;5101:226::-;;;;;;;;;;;;;;;;-1:-1:-1;5101:226:3;;;;;;-1:-1:-1;;;;;5101:226:3;;:::i;12740:79:1:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7798:755;;;;;;;;;;;;;;;;-1:-1:-1;7798:755:1;;;;;;;:::i;4154:247::-;;;;;;;;;;;;;;;;-1:-1:-1;4154:247:1;;:::i;12373:100::-;12429:4;12452:14;;;:10;:14;;;;;;;;;12373:100::o;12263:104::-;12321:4;12344:16;;;:12;:16;;;;;;;;;12263:104::o;10640:1256::-;10784:12;:10;:12::i;:::-;10763:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;10763:17:1;;;:33;;;10742:122;;;;-1:-1:-1;;;10742:122:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10902:1;10874:17;;;:7;:17;;;;;;;;:30;;-1:-1:-1;;;;;;10874:30:1;;;10914:16;:26;;;;;:31;;;10955:5;:15;;;;;:20;;;10985:10;:20;;;;;:28;;-1:-1:-1;;10985:28:1;;;11023:5;:15;;;;;:20;11077:23;;11115:16;;11111:730;;11150:9;11146:685;11167:12;11163:1;:16;11146:685;;;11204:22;11229:16;11246:1;11229:19;;;;;;;;;;;;;;;;;;;11305:1;11270:23;;;:7;:23;;;;;;;;11229:19;;-1:-1:-1;;;;;;11270:23:1;:37;;;;:67;;-1:-1:-1;11311:26:1;;;;:10;:26;;;;;;;;11270:67;11266:551;;;11390:5;11361:26;;;:10;:26;;;;;;;;:34;;-1:-1:-1;;11361:34:1;;;11417:5;:21;;;;;;:38;;;11482:41;11372:14;;11498:8;;11482:41;;11390:5;11482:41;11266:551;;;11588:1;11553:23;;;:7;:23;;;;;;-1:-1:-1;;;;;11553:23:1;:37;;;;:68;;-1:-1:-1;11595:26:1;;;;:10;:26;;;;;;;;11594:27;11553:68;11549:268;;;11649:47;;11681:14;;11671:8;;11649:47;;;;;11549:268;;;11748:50;;11783:14;;11773:8;;11748:50;;;;;11549:268;-1:-1:-1;11181:3:1;;11146:685;;;;11111:730;11856:33;;11880:8;;11856:33;;;;;10640:1256;;;:::o;12063:96::-;12115:7;12141:11;;;:7;:11;;;;;;-1:-1:-1;;;;;12141:11:1;;12063:96::o;4282:112:3:-;4339:7;4365:12;;;;;;;;;;:22;;;;4282:112::o;4644:223::-;4735:6;:12;;;;;;;;;;:22;;;4727:45;;4759:12;:10;:12::i;:::-;4727:7;:45::i;:::-;4719:105;;;;-1:-1:-1;;;4719:105:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4835:25;4846:4;4852:7;4835:10;:25::i;:::-;4644:223;;:::o;5818:205::-;5915:12;:10;:12::i;:::-;-1:-1:-1;;;;;5904:23:3;:7;-1:-1:-1;;;;;5904:23:3;;5896:83;;;;-1:-1:-1;;;5896:83:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:26;6002:4;6008:7;5990:11;:26::i;3737:354:1:-;3810:41;1772:4:3;3838:12:1;:10;:12::i;3810:41::-;3802:123;;;;-1:-1:-1;;;3802:123:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3943:33;;;;:16;:33;;;;;;;;:41;3935:99;;;;-1:-1:-1;;;3935:99:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4044:33;;;;:16;:33;;;;;:40;;-1:-1:-1;;4044:40:1;4080:4;4044:40;;;3737:354::o;9923:653::-;10018:36;-1:-1:-1;;;;;;;;;;;10041:12:1;:10;:12::i;10018:36::-;10010:104;;;;-1:-1:-1;;;10010:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10153:12;:10;:12::i;:::-;10132:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;10132:17:1;;;:33;;;10124:90;;;;-1:-1:-1;;;10124:90:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10267:1;10232:23;;;:7;:23;;;;;;-1:-1:-1;;;;;10232:23:1;10224:110;;;;-1:-1:-1;;;10224:110:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10352:20;;;;:10;:20;;;;;;;;10344:87;;;;-1:-1:-1;;;10344:87:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10465:5;10442:20;;;:10;:20;;;;;;;;:28;;-1:-1:-1;;10442:28:1;;;10480:5;:15;;;;;;:26;;;10530:39;10554:14;;10453:8;;10530:39;;10465:5;10530:39;9923:653;;:::o;12479:115::-;12541:7;12567:20;;;:16;:20;;;;;;;12479:115::o;12600:134::-;12671:4;12694:33;;;:16;:33;;;;;;;;;12600:134::o;3965:136:3:-;4038:7;4064:12;;;;;;;;;;:30;;4088:5;4064:23;:30::i;:::-;4057:37;;3965:136;;;;;:::o;2950:137::-;3019:4;3042:12;;;;;;;;;;:38;;3072:7;3042:29;:38::i;2244:66:1:-;-1:-1:-1;;;;;;;;;;;2244:66:1;:::o;1727:49:3:-;1772:4;1727:49;:::o;8677:1111:1:-;8787:36;-1:-1:-1;;;;;;;;;;;8810:12:1;:10;:12::i;8787:36::-;8779:104;;;;-1:-1:-1;;;8779:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8922:12;:10;:12::i;:::-;8901:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;8901:17:1;;;:33;;;8893:90;;;;-1:-1:-1;;;8893:90:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9017:24;;9056:16;;9052:730;;9091:9;9087:685;9108:12;9104:1;:16;9087:685;;;9145:22;9170:17;9188:1;9170:20;;;;;;;;;;;;;;;;;;;9247:1;9212:23;;;:7;:23;;;;;;;;9170:20;;-1:-1:-1;;;;;;9212:23:1;:37;;;;:67;;-1:-1:-1;9253:26:1;;;;:10;:26;;;;;;;;9212:67;9208:550;;;9332:5;9303:26;;;:10;:26;;;;;;;;:34;;-1:-1:-1;;9303:34:1;;;9359:5;:21;;;;;;:38;;;9424:41;9314:14;;9440:8;;9424:41;;9332:5;9424:41;9208:550;;;9529:1;9494:23;;;:7;:23;;;;;;-1:-1:-1;;;;;9494:23:1;:37;;;;:68;;-1:-1:-1;9536:26:1;;;;:10;:26;;;;;;;;9535:27;9494:68;9490:268;;;9590:47;;9622:14;;9612:8;;9590:47;;;;;9490:268;;;9689:50;;9724:14;;9714:8;;9689:50;;;;;9490:268;-1:-1:-1;9122:3:1;;9087:685;;;;9052:730;8677:1111;;;:::o;4578:1736::-;4785:36;-1:-1:-1;;;;;;;;;;;4808:12:1;:10;:12::i;4785:36::-;4777:104;;;;-1:-1:-1;;;4777:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4899:32;4915:15;4899;:32::i;:::-;4891:83;;;;-1:-1:-1;;;4891:83:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5021:1;4992:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4992:17:1;:31;4984:88;;;;-1:-1:-1;;;4984:88:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:16;;;:35;;;5110:10;5124:1;5110:15;5090:35;5082:80;;;;;-1:-1:-1;;;5082:80:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5173:15;;;;:5;:15;;;;;;;;:20;;;5203:7;:17;;;;;:25;;-1:-1:-1;;;;;;5203:25:1;-1:-1:-1;;;;;5203:25:1;;;;;5238:16;:26;;;;;:44;;;5297:15;5293:157;;5328:22;;;;:12;:22;;;;;:29;;-1:-1:-1;;5328:29:1;5353:4;5328:29;;;5293:157;;;5378:10;5392:1;5378:15;5374:76;;;5434:5;5409:22;;;:12;:22;;;;;:30;;-1:-1:-1;;5409:30:1;;;5374:76;5464:28;5460:478;;5531:5;5508:20;;;:10;:20;;;;;;;;:28;;-1:-1:-1;;5508:28:1;;;5550:5;:15;;;;;:26;;;5663:12;:22;;;;;;;5591:95;;;;;;;;;;;5508:28;5663:22;5591:95;;;;;;;;5631:3;;5519:8;;-1:-1:-1;;;;;5591:95:1;;;;;;;;;;;;;5460:478;;;5717:20;;;;:10;:20;;;;;;;;:27;;-1:-1:-1;;5717:27:1;5740:4;5717:27;;;5825:21;;;:5;:21;;;;;;5848:22;;;:12;:22;;;;;;;5763:108;;;;;;;;;;;;5717:27;5848:22;;;;5763:108;;;;;;;;5803:3;;5728:8;;-1:-1:-1;;;;;5763:108:1;;;;;;;;;;;;;5890:37;;5912:14;;5902:8;;5890:37;;;;;5460:478;5971:24;;6010:16;;;;;:42;;-1:-1:-1;6030:22:1;;;;:12;:22;;;;;;;;6010:42;6006:302;;;6071:9;6067:231;6088:12;6084:1;:16;6067:231;;;6125:22;6150:17;6168:1;6150:20;;;;;;;;;;;;;;;;;;;6188:26;;;;:10;:26;;;;;;;:33;;-1:-1:-1;;6188:33:1;6217:4;6188:33;;;6244:39;6150:20;;-1:-1:-1;6150:20:1;;6258:8;;6244:39;;6188:26;6244:39;-1:-1:-1;6102:3:1;;6067:231;;;;6006:302;4578:1736;;;;;;;;:::o;6446:1224::-;6553:36;-1:-1:-1;;;;;;;;;;;6576:12:1;:10;:12::i;6553:36::-;6545:104;;;;-1:-1:-1;;;6545:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6688:12;:10;:12::i;:::-;6667:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;6667:17:1;;;:33;;;6659:98;;;;-1:-1:-1;;;6659:98:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6775:22;;;;:12;:22;;;;;;;;6767:99;;;;-1:-1:-1;;;6767:99:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6900:24;;6939:16;;6935:729;;6974:9;6970:684;6991:12;6987:1;:16;6970:684;;;7028:22;7053:17;7071:1;7053:20;;;;;;;;;;;;;;;;;;;7130:1;7095:23;;;:7;:23;;;;;;;;7053:20;;-1:-1:-1;;;;;;7095:23:1;:37;;;;:68;;-1:-1:-1;7137:26:1;;;;:10;:26;;;;;;;;7136:27;7095:68;7091:549;;;7187:26;;;;:10;:26;;;;;;;;:33;;-1:-1:-1;;7187:33:1;7216:4;7187:33;;;7266:15;;;:5;:15;;;;;;;7242:21;;;;;;:39;7308;7198:14;;7272:8;;7308:39;;7187:26;7308:39;7091:549;;;7411:1;7376:23;;;:7;:23;;;;;;-1:-1:-1;;;;;7376:23:1;:37;;;;:67;;-1:-1:-1;7417:26:1;;;;:10;:26;;;;;;;;7376:67;7372:268;;;7471:48;;7504:14;;7494:8;;7471:48;;;;;7372:268;;;7571:50;;7606:14;;7596:8;;7571:50;;;;;7372:268;-1:-1:-1;7005:3:1;;6970:684;;3438:200;3488:36;-1:-1:-1;;;;;;;;;;;3511:12:1;:10;:12::i;3488:36::-;3487:37;3479:103;;;;-1:-1:-1;;;3479:103:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3592:39;-1:-1:-1;;;;;;;;;;;3618:12:1;:10;:12::i;:::-;3592:10;:39::i;:::-;3438:200::o;12165:92::-;12215:7;12241:9;;;:5;:9;;;;;;;12165:92::o;3255:125:3:-;3318:7;3344:12;;;;;;;;;;:29;;:27;:29::i;5101:226::-;5193:6;:12;;;;;;;;;;:22;;;5185:45;;5217:12;:10;:12::i;5185:45::-;5177:106;;;;-1:-1:-1;;;5177:106:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12740:79:1;12808:4;12801:11;;;;;;;;-1:-1:-1;;12801:11:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12776:13;;12801:11;;12808:4;;12801:11;;12808:4;12801:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12740:79;:::o;7798:755::-;7890:36;-1:-1:-1;;;;;;;;;;;7913:12:1;:10;:12::i;7890:36::-;7882:104;;;;-1:-1:-1;;;7882:104:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8025:12;:10;:12::i;:::-;8004:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;8004:17:1;;;:33;;;7996:98;;;;-1:-1:-1;;;7996:98:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8147:1;8112:23;;;:7;:23;;;;;;-1:-1:-1;;;;;8112:23:1;8104:94;;;;-1:-1:-1;;;8104:94:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8217:20;;;;:10;:20;;;;;;;;8216:21;8208:78;;;;-1:-1:-1;;;8208:78:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8304:28;;;;:12;:28;;;;;;;;8296:111;;;;-1:-1:-1;;;8296:111:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8418:20;;;;:10;:20;;;;;;;;:27;;-1:-1:-1;;8418:27:1;8441:4;8418:27;;;8473:21;;;:5;:21;;;;;;;8455:15;;;;;;:39;8509:37;8479:14;;8429:8;;8509:37;;8418:20;8509:37;7798:755;;:::o;4154:247::-;4228:41;1772:4:3;4256:12:1;:10;:12::i;4228:41::-;4220:123;;;;-1:-1:-1;;;4220:123:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4389:5;4353:33;;;:16;:33;;;;;:41;;-1:-1:-1;;4353:41:1;;;4154:247::o;6429:150:6:-;6499:4;6522:50;6527:3;-1:-1:-1;;;;;6547:23:6;;6522:4;:50::i;598:104:5:-;685:10;598:104;:::o;7025:184:3:-;7098:6;:12;;;;;;;;;;:33;;7123:7;7098:24;:33::i;:::-;7094:109;;;7179:12;:10;:12::i;:::-;-1:-1:-1;;;;;7152:40:3;7170:7;-1:-1:-1;;;;;7152:40:3;7164:4;7152:40;;;;;;;;;;7025:184;;:::o;7215:188::-;7289:6;:12;;;;;;;;;;:36;;7317:7;7289:27;:36::i;:::-;7285:112;;;7373:12;:10;:12::i;:::-;-1:-1:-1;;;;;7346:40:3;7364:7;-1:-1:-1;;;;;7346:40:3;7358:4;7346:40;;;;;;;;;;7215:188;;:::o;7677:156:6:-;7751:7;7801:22;7805:3;7817:5;7801:3;:22::i;6984:165::-;7064:4;7087:55;7097:3;-1:-1:-1;;;;;7117:23:6;;7087:9;:55::i;7230:115::-;7293:7;7319:19;7327:3;7319:7;:19::i;1640:404::-;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:6;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:6;2015:12;;6747:156;6820:4;6843:53;6851:3;-1:-1:-1;;;;;6871:23:6;;6843:7;:53::i;4452:201::-;4546:18;;4519:7;;4546:26;-1:-1:-1;4538:73:6;;;;-1:-1:-1;;;4538:73:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4628:3;:11;;4640:5;4628:18;;;;;;;;;;;;;;;;4621:25;;4452:201;;;;:::o;3805:127::-;3878:4;3901:19;;;:12;;;;;:19;;;;;;:24;;;3805:127::o;4013:107::-;4095:18;;4013:107::o;2212:1512::-;2278:4;2415:19;;;:12;;;:19;;;;;;2449:15;;2445:1273;;2878:18;;-1:-1:-1;;2830:14:6;;;;2878:22;;;;2806:21;;2878:3;;:22;;3160;;;;;;;;;;;;;;3140:42;;3303:9;3274:3;:11;;3286:13;3274:26;;;;;;;;;;;;;;;;;;;:38;;;;3378:23;;;3420:1;3378:12;;;:23;;;;;;3404:17;;;3378:43;;3527:17;;3378:3;;3527:17;;;;;;;;;;;;;;;;;;;;;;3619:3;:12;;:19;3632:5;3619:19;;;;;;;;;;;3612:26;;;3660:4;3653:11;;;;;;;;2445:1273;3702:5;3695:12;;;;",
- "source": "// SPDX-License-Identifier: APACHE OR MIT\npragma solidity ^0.6.0;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/GSN/Context.sol\";\n\n/**\n * @dev {SpatialAssets} registry\n * This contract uses {AccessControl} to lock permissioned functions using the\n * different roles - head to its documentation for details.\n *\n * The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant\n * 'DATA_SUPPLIER' roles to other accounts\n */\ncontract SpatialAssets is Context, AccessControl {\n /**\n * @dev Emitted when Spatial Assets of id `id` are transferred to `to``.\n */\n event SpatialAssetRegistered(address indexed to, bytes32 indexed geoDIDId, bytes32 indexed cid, bytes32 offChainStorage, bytes32 root, bool canBeParent);\n\n /**\n * @dev Emitted when Spatial Assets of id `id` are deactivated.\n */\n event SpatialAssetDeactivated(bytes32 indexed geoDIDId);\n\n /**\n * @dev Emitted when a parent geodid is added to a node\n */\n event ParentAdded(bytes32 indexed geoDIDId, bytes32 indexed parentGeoDIDId);\n\n /**\n * @dev Emitted when a children geodid is added to a node\n */\n event ChildrenAdded(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n /**\n * @dev Emitted when a parent geodid is removed from a node\n */\n event ParentRemoved(bytes32 indexed geoDIDId, bytes32 indexed parentGeoDIDId);\n\n /**\n * @dev Emitted when a children geodid is removed from a node\n */\n event ChildrenRemoved(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n \n /**\n * @dev Emitted when a children geodid does not have a parent when trying to remove it from a parent\n */\n event ChildrenErrorNoParent(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n \n /**\n * @dev Emitted when a children geodid does not exist\n */\n event ChildrenErrorNoExistence(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n \n /**\n * @dev Emitted when a children geodid already has a parent but shouldn't have\n */\n event ChildrenErrorHasParent(bytes32 indexed geoDIDId, bytes32 indexed childrenGeoDIDId);\n\n\n bytes32 public constant DATA_SUPPLIER = keccak256(\"DATA_SUPPLIER\");\n\n string private _uri;\n\n // Mapping from GeodidID to registrant\n mapping (bytes32 => address) private _owners;\n \n // Mapping from GeodidID to Cid\n mapping (bytes32 => bytes32) private _cids;\n\n // Mapping from GeodidID to parenthood status\n mapping (bytes32 => bool) private _hasParent;\n\n // Mapping from GeodidID to parenthood type\n mapping (bytes32 => bool) private _canBeParent;\n \n // Mapping from GeodidID to root GeoDID\n mapping (bytes32 => bytes32) private _root;\n\n // Mapping from id to spatial asset external storage\n mapping (bytes32 => bytes32) private _externalStorage;\n\n // Allowed external storages signatures\n mapping (bytes32 => bool) private _allowedStorages;\n\n\n /**\n * @dev Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that\n * deploys the contract.\n */\n constructor(string memory uri) public {\n _setURI(uri);\n _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());\n _setupRole(DATA_SUPPLIER, _msgSender());\n\n }\n\n /**\n * @dev Registers a new user with the ability to register a spatial asset.\n */\n function registerRole() public {\n require(!hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must not have a DATA_SUPPLIER role yet\");\n _setupRole(DATA_SUPPLIER, _msgSender());\n }\n\n /**\n * @dev Registers a new storage that can accept GeoDID document creation\n */\n function enableStorage(bytes32 offChainStorage) public {\n require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), \"SpatialAssets: must have admin role to edit allowed offchain storages\");\n require(_allowedStorages[offChainStorage]== false, \"SpatialAssets: storage must not be active yet\");\n _allowedStorages[offChainStorage] = true;\n }\n\n /**\n * @dev Disables an existing storage\n */\n function disableStorage(bytes32 offChainStorage) public {\n require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), \"SpatialAssets: must have admin role to edit allowed offchain storages\");\n _allowedStorages[offChainStorage] = false;\n }\n\n\n /**\n * @dev Registers one spatial asset with external storage 'data' and assigns them to `account`.\n *\n * Emits a {SpatialAssetRegistered} event.\n */\n function registerSpatialAsset(address owner, bytes32 geoDIDId, bytes32 parentGeoDIDId , bytes32[] memory childrenGeoDIDIds, bytes32 cid, bytes32 offChainStorage, uint256 geoDIDtype) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(allowedStorages(offChainStorage), \"SpatialAssets: storage must be allowed\");\n require(_owners[geoDIDId] == address(0), \"SpatialAssets: id must not have an owner yet\");\n require(geoDIDtype == 0 || geoDIDtype == 1, \"Spatial Assets: wrong geodidtype\");\n\n _cids[geoDIDId] =cid;\n _owners[geoDIDId] = owner;\n _externalStorage[geoDIDId] = offChainStorage;\n\n if (geoDIDtype == 0) {\n _canBeParent[geoDIDId] = true;\n } else if (geoDIDtype == 1) {\n _canBeParent[geoDIDId] = false;\n }\n\n if (parentGeoDIDId == bytes32(0)) {\n _hasParent[geoDIDId] = false;\n _root[geoDIDId] = geoDIDId;\n emit SpatialAssetRegistered(owner, geoDIDId, cid, offChainStorage, geoDIDId, _canBeParent[geoDIDId]);\n } else {\n _hasParent[geoDIDId] = true;\n emit SpatialAssetRegistered(owner, geoDIDId, cid, offChainStorage, _root[parentGeoDIDId], _canBeParent[geoDIDId]);\n emit ParentAdded(geoDIDId, parentGeoDIDId);\n }\n\n uint256 childrensLen = childrenGeoDIDIds.length;\n\n if (childrensLen > 0 && _canBeParent[geoDIDId]){\n for(uint256 j=0; j < childrensLen; j++) {\n bytes32 childrenGeoDID = childrenGeoDIDIds[j];\n _hasParent[childrenGeoDID] = true;\n emit ChildrenAdded(geoDIDId, childrenGeoDID);\n }\n }\n }\n\n\n /**\n * @dev Adds children GeoDIDs to an already existent geoDID\n *\n * Emits a {ChildrenAdded} event.\n */\n function addChildrenGeoDIDs(bytes32 geoDIDId, bytes32[] memory childrenGeoDIDIds) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(_owners[geoDIDId] == _msgSender(), \"SpatialAssets: geoDIDId must be owned by its creator\");\n require(_canBeParent[geoDIDId], \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\");\n\n uint256 childrensLen = childrenGeoDIDIds.length;\n\n if (childrensLen > 0){\n for(uint256 j=0; j < childrensLen; j++) {\n bytes32 childrenGeoDID = childrenGeoDIDIds[j];\n if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]) {\n _hasParent[childrenGeoDID] = true;\n _root[childrenGeoDID] = _root[geoDIDId];\n emit ChildrenAdded(geoDIDId, childrenGeoDID);\n } else if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]){\n emit ChildrenErrorHasParent(geoDIDId, childrenGeoDID);\n } else {\n emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID);\n }\n }\n }\n }\n\n /**\n * @dev Adds a parent GeoDID to an already existent geoDID\n *\n * Emits a {ParentAdded} event.\n */\n function addParentGeoDID(bytes32 geoDIDId, bytes32 parentGeoDIDId) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(_owners[geoDIDId] == _msgSender(), \"SpatialAssets: geoDIDId must be owned by its creator\");\n require(_owners[parentGeoDIDId] != address(0), \"SpatialAssets: parentGeoDIDId does not exist\");\n require(!_hasParent[geoDIDId], \"SpatialAssets: geoDIDId already has a parent\");\n require(_canBeParent[parentGeoDIDId], \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\");\n\n _hasParent[geoDIDId] = true;\n _root[geoDIDId] = _root[parentGeoDIDId];\n emit ParentAdded(geoDIDId, parentGeoDIDId);\n }\n\n \n /**\n * @dev Removes childrenGeoDIDs from a geoDID\n *\n * Emits a {ChildrenRemoved} event.\n */\n function removeChildrenGeoDIDs(bytes32 geoDIDId, bytes32[] memory childrenGeoDIDIds) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(_owners[geoDIDId] == _msgSender(), \"SpatialAssets: id must not have an owner yet\");\n\n uint256 childrensLen = childrenGeoDIDIds.length;\n\n if (childrensLen > 0){\n for(uint256 j=0; j < childrensLen; j++) {\n bytes32 childrenGeoDID = childrenGeoDIDIds[j];\n if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]) {\n _hasParent[childrenGeoDID] = false;\n _root[childrenGeoDID] = childrenGeoDID;\n emit ChildrenRemoved(geoDIDId, childrenGeoDID);\n } else if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]){\n emit ChildrenErrorNoParent(geoDIDId, childrenGeoDID);\n } else {\n emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID);\n }\n }\n }\n }\n\n\n /**\n * @dev Removes a parent GeoDID from an already existent geoDID\n *\n * Emits a {ParentAdded} event.\n */\n function removeParentGeoDID(bytes32 geoDIDId, bytes32 parentGeoDIDId) public {\n require(hasRole(DATA_SUPPLIER, _msgSender()), \"SpatialAssets: must have data supplier role to register\");\n require(_owners[geoDIDId] == _msgSender(), \"SpatialAssets: id must not have an owner yet\");\n require(_owners[parentGeoDIDId] != address(0), \"SpatialAssets: GeoDID to be removed as parent does not exist\");\n require(_hasParent[geoDIDId], \"SpatialAssets: GeoDID does not have a parent to remove\");\n\n _hasParent[geoDIDId] = false;\n _root[geoDIDId] = geoDIDId;\n \n emit ParentRemoved(geoDIDId, parentGeoDIDId);\n }\n\n /**\n * @dev De-registers a spatial asset\n */\n function deactivateSpatialAsset(bytes32 geoDIDId, bytes32[] memory childrenToRemove) public {\n require(\n _owners[geoDIDId] == _msgSender(),\"SpatialAssets: caller is not owner of the Spatial Asset\"\n );\n _owners[geoDIDId] = address(0);\n _externalStorage[geoDIDId] = \"\";\n _cids[geoDIDId] = \"\";\n _hasParent[geoDIDId] = false;\n _root[geoDIDId] = \"\";\n\n uint256 childrensLen = childrenToRemove.length;\n\n if (childrensLen > 0){\n for(uint256 j=0; j < childrensLen; j++) {\n bytes32 childrenGeoDID = childrenToRemove[j];\n if (_owners[childrenGeoDID] != address(0) && _hasParent[childrenGeoDID]) {\n _hasParent[childrenGeoDID] = false;\n _root[childrenGeoDID] = childrenGeoDID;\n emit ChildrenRemoved(geoDIDId, childrenGeoDID);\n } else if (_owners[childrenGeoDID] != address(0) && !_hasParent[childrenGeoDID]){\n emit ChildrenErrorNoParent(geoDIDId, childrenGeoDID);\n } else {\n emit ChildrenErrorNoExistence(geoDIDId, childrenGeoDID);\n }\n }\n }\n\n emit SpatialAssetDeactivated(geoDIDId);\n }\n \n /**\n * @dev Sets a new URI for all the spatial asset types\n */\n function _setURI(string memory newuri) internal {\n _uri = newuri;\n }\n\n function idToOwner(bytes32 id) public view returns (address) {\n return _owners[id];\n }\n\n function idToCid(bytes32 id) public view returns (bytes32) {\n return _cids[id];\n }\n\n function idToCanBeParent(bytes32 id) public view returns (bool) {\n return _canBeParent[id];\n }\n\n function idToHasParent(bytes32 id) public view returns (bool) {\n return _hasParent[id];\n }\n\n function idToExternalStorage(bytes32 id) public view returns (bytes32) {\n return _externalStorage[id];\n }\n\n function allowedStorages(bytes32 offChainStorage) public view returns (bool) {\n return _allowedStorages[offChainStorage];\n }\n\n function uri() public view returns (string memory) {\n return _uri;\n }\n}\n",
- "sourcePath": "/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol",
- "ast": {
- "absolutePath": "/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol",
- "exportedSymbols": {
- "SpatialAssets": [
- 1073
- ]
- },
- "id": 1074,
- "license": "APACHE OR MIT",
- "nodeType": "SourceUnit",
- "nodes": [
- {
- "id": 58,
- "literals": [
- "solidity",
- "^",
- "0.6",
- ".0"
- ],
- "nodeType": "PragmaDirective",
- "src": "42:23:1"
- },
- {
- "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol",
- "file": "@openzeppelin/contracts/access/AccessControl.sol",
- "id": 59,
- "nodeType": "ImportDirective",
- "scope": 1074,
- "sourceUnit": 1360,
- "src": "67:58:1",
- "symbolAliases": [],
- "unitAlias": ""
- },
- {
- "absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
- "file": "@openzeppelin/contracts/GSN/Context.sol",
- "id": 60,
- "nodeType": "ImportDirective",
- "scope": 1074,
- "sourceUnit": 1077,
- "src": "126:49:1",
- "symbolAliases": [],
- "unitAlias": ""
- },
- {
- "abstract": false,
- "baseContracts": [
- {
- "arguments": null,
- "baseName": {
- "contractScope": null,
- "id": 62,
- "name": "Context",
- "nodeType": "UserDefinedTypeName",
- "referencedDeclaration": 1678,
- "src": "565:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_contract$_Context_$1678",
- "typeString": "contract Context"
- }
- },
- "id": 63,
- "nodeType": "InheritanceSpecifier",
- "src": "565:7:1"
- },
- {
- "arguments": null,
- "baseName": {
- "contractScope": null,
- "id": 64,
- "name": "AccessControl",
- "nodeType": "UserDefinedTypeName",
- "referencedDeclaration": 1359,
- "src": "574:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_contract$_AccessControl_$1359",
- "typeString": "contract AccessControl"
- }
- },
- "id": 65,
- "nodeType": "InheritanceSpecifier",
- "src": "574:13:1"
- }
- ],
- "contractDependencies": [
- 1359,
- 1678
- ],
- "contractKind": "contract",
- "documentation": {
- "id": 61,
- "nodeType": "StructuredDocumentation",
- "src": "177:361:1",
- "text": " @dev {SpatialAssets} registry\n This contract uses {AccessControl} to lock permissioned functions using the\n different roles - head to its documentation for details.\n The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant\n 'DATA_SUPPLIER' roles to other accounts"
- },
- "fullyImplemented": true,
- "id": 1073,
- "linearizedBaseContracts": [
- 1073,
- 1359,
- 1678
- ],
- "name": "SpatialAssets",
- "nodeType": "ContractDefinition",
- "nodes": [
- {
- "anonymous": false,
- "documentation": {
- "id": 66,
- "nodeType": "StructuredDocumentation",
- "src": "594:88:1",
- "text": " @dev Emitted when Spatial Assets of id `id` are transferred to `to``."
- },
- "id": 80,
- "name": "SpatialAssetRegistered",
- "nodeType": "EventDefinition",
- "parameters": {
- "id": 79,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 68,
- "indexed": true,
- "mutability": "mutable",
- "name": "to",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 80,
- "src": "716:18:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "typeName": {
- "id": 67,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "716:7:1",
- "stateMutability": "nonpayable",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 70,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 80,
- "src": "736:24:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 69,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "736:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 72,
- "indexed": true,
- "mutability": "mutable",
- "name": "cid",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 80,
- "src": "762:19:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 71,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "762:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 74,
- "indexed": false,
- "mutability": "mutable",
- "name": "offChainStorage",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 80,
- "src": "783:23:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 73,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "783:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 76,
- "indexed": false,
- "mutability": "mutable",
- "name": "root",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 80,
- "src": "808:12:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 75,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "808:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 78,
- "indexed": false,
- "mutability": "mutable",
- "name": "canBeParent",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 80,
- "src": "822:16:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "typeName": {
- "id": 77,
- "name": "bool",
- "nodeType": "ElementaryTypeName",
- "src": "822:4:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "715:124:1"
- },
- "src": "687:153:1"
- },
- {
- "anonymous": false,
- "documentation": {
- "id": 81,
- "nodeType": "StructuredDocumentation",
- "src": "846:79:1",
- "text": " @dev Emitted when Spatial Assets of id `id` are deactivated."
- },
- "id": 85,
- "name": "SpatialAssetDeactivated",
- "nodeType": "EventDefinition",
- "parameters": {
- "id": 84,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 83,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 85,
- "src": "960:24:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 82,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "960:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "959:26:1"
- },
- "src": "930:56:1"
- },
- {
- "anonymous": false,
- "documentation": {
- "id": 86,
- "nodeType": "StructuredDocumentation",
- "src": "992:71:1",
- "text": " @dev Emitted when a parent geodid is added to a node"
- },
- "id": 92,
- "name": "ParentAdded",
- "nodeType": "EventDefinition",
- "parameters": {
- "id": 91,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 88,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 92,
- "src": "1086:24:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 87,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1086:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 90,
- "indexed": true,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 92,
- "src": "1112:30:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 89,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1112:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "1085:58:1"
- },
- "src": "1068:76:1"
- },
- {
- "anonymous": false,
- "documentation": {
- "id": 93,
- "nodeType": "StructuredDocumentation",
- "src": "1150:73:1",
- "text": " @dev Emitted when a children geodid is added to a node"
- },
- "id": 99,
- "name": "ChildrenAdded",
- "nodeType": "EventDefinition",
- "parameters": {
- "id": 98,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 95,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 99,
- "src": "1248:24:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 94,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1248:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 97,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 99,
- "src": "1274:32:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 96,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1274:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "1247:60:1"
- },
- "src": "1228:80:1"
- },
- {
- "anonymous": false,
- "documentation": {
- "id": 100,
- "nodeType": "StructuredDocumentation",
- "src": "1314:75:1",
- "text": " @dev Emitted when a parent geodid is removed from a node"
- },
- "id": 106,
- "name": "ParentRemoved",
- "nodeType": "EventDefinition",
- "parameters": {
- "id": 105,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 102,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 106,
- "src": "1414:24:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 101,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1414:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 104,
- "indexed": true,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 106,
- "src": "1440:30:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 103,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1440:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "1413:58:1"
- },
- "src": "1394:78:1"
- },
- {
- "anonymous": false,
- "documentation": {
- "id": 107,
- "nodeType": "StructuredDocumentation",
- "src": "1478:77:1",
- "text": " @dev Emitted when a children geodid is removed from a node"
- },
- "id": 113,
- "name": "ChildrenRemoved",
- "nodeType": "EventDefinition",
- "parameters": {
- "id": 112,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 109,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 113,
- "src": "1582:24:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 108,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1582:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 111,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 113,
- "src": "1608:32:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 110,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1608:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "1581:60:1"
- },
- "src": "1560:82:1"
- },
- {
- "anonymous": false,
- "documentation": {
- "id": 114,
- "nodeType": "StructuredDocumentation",
- "src": "1653:116:1",
- "text": " @dev Emitted when a children geodid does not have a parent when trying to remove it from a parent"
- },
- "id": 120,
- "name": "ChildrenErrorNoParent",
- "nodeType": "EventDefinition",
- "parameters": {
- "id": 119,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 116,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 120,
- "src": "1802:24:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 115,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1802:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 118,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 120,
- "src": "1828:32:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 117,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1828:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "1801:60:1"
- },
- "src": "1774:88:1"
- },
- {
- "anonymous": false,
- "documentation": {
- "id": 121,
- "nodeType": "StructuredDocumentation",
- "src": "1873:69:1",
- "text": " @dev Emitted when a children geodid does not exist"
- },
- "id": 127,
- "name": "ChildrenErrorNoExistence",
- "nodeType": "EventDefinition",
- "parameters": {
- "id": 126,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 123,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 127,
- "src": "1978:24:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 122,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "1978:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 125,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 127,
- "src": "2004:32:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 124,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2004:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "1977:60:1"
- },
- "src": "1947:91:1"
- },
- {
- "anonymous": false,
- "documentation": {
- "id": 128,
- "nodeType": "StructuredDocumentation",
- "src": "2049:94:1",
- "text": " @dev Emitted when a children geodid already has a parent but shouldn't have"
- },
- "id": 134,
- "name": "ChildrenErrorHasParent",
- "nodeType": "EventDefinition",
- "parameters": {
- "id": 133,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 130,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 134,
- "src": "2177:24:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 129,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2177:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 132,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 134,
- "src": "2203:32:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 131,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2203:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "2176:60:1"
- },
- "src": "2148:89:1"
- },
- {
- "constant": true,
- "functionSelector": "9969879b",
- "id": 139,
- "mutability": "constant",
- "name": "DATA_SUPPLIER",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1073,
- "src": "2244:66:1",
- "stateVariable": true,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 135,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2244:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "444154415f535550504c494552",
- "id": 137,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "2294:15:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f",
- "typeString": "literal_string \"DATA_SUPPLIER\""
- },
- "value": "DATA_SUPPLIER"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_stringliteral_b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f",
- "typeString": "literal_string \"DATA_SUPPLIER\""
- }
- ],
- "id": 136,
- "name": "keccak256",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": -8,
- "src": "2284:9:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
- "typeString": "function (bytes memory) pure returns (bytes32)"
- }
- },
- "id": 138,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "2284:26:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "visibility": "public"
- },
- {
- "constant": false,
- "id": 141,
- "mutability": "mutable",
- "name": "_uri",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1073,
- "src": "2317:19:1",
- "stateVariable": true,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_string_storage",
- "typeString": "string"
- },
- "typeName": {
- "id": 140,
- "name": "string",
- "nodeType": "ElementaryTypeName",
- "src": "2317:6:1",
- "typeDescriptions": {
- "typeIdentifier": "t_string_storage_ptr",
- "typeString": "string"
- }
- },
- "value": null,
- "visibility": "private"
- },
- {
- "constant": false,
- "id": 145,
- "mutability": "mutable",
- "name": "_owners",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1073,
- "src": "2386:44:1",
- "stateVariable": true,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- },
- "typeName": {
- "id": 144,
- "keyType": {
- "id": 142,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2395:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Mapping",
- "src": "2386:28:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- },
- "valueType": {
- "id": 143,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "2406:7:1",
- "stateMutability": "nonpayable",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- }
- },
- "value": null,
- "visibility": "private"
- },
- {
- "constant": false,
- "id": 149,
- "mutability": "mutable",
- "name": "_cids",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1073,
- "src": "2477:42:1",
- "stateVariable": true,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- },
- "typeName": {
- "id": 148,
- "keyType": {
- "id": 146,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2486:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Mapping",
- "src": "2477:28:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- },
- "valueType": {
- "id": 147,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2497:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- },
- "value": null,
- "visibility": "private"
- },
- {
- "constant": false,
- "id": 153,
- "mutability": "mutable",
- "name": "_hasParent",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1073,
- "src": "2576:44:1",
- "stateVariable": true,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- },
- "typeName": {
- "id": 152,
- "keyType": {
- "id": 150,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2585:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Mapping",
- "src": "2576:25:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- },
- "valueType": {
- "id": 151,
- "name": "bool",
- "nodeType": "ElementaryTypeName",
- "src": "2596:4:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- }
- },
- "value": null,
- "visibility": "private"
- },
- {
- "constant": false,
- "id": 157,
- "mutability": "mutable",
- "name": "_canBeParent",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1073,
- "src": "2675:46:1",
- "stateVariable": true,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- },
- "typeName": {
- "id": 156,
- "keyType": {
- "id": 154,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2684:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Mapping",
- "src": "2675:25:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- },
- "valueType": {
- "id": 155,
- "name": "bool",
- "nodeType": "ElementaryTypeName",
- "src": "2695:4:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- }
- },
- "value": null,
- "visibility": "private"
- },
- {
- "constant": false,
- "id": 161,
- "mutability": "mutable",
- "name": "_root",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1073,
- "src": "2776:42:1",
- "stateVariable": true,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- },
- "typeName": {
- "id": 160,
- "keyType": {
- "id": 158,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2785:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Mapping",
- "src": "2776:28:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- },
- "valueType": {
- "id": 159,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2796:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- },
- "value": null,
- "visibility": "private"
- },
- {
- "constant": false,
- "id": 165,
- "mutability": "mutable",
- "name": "_externalStorage",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1073,
- "src": "2882:53:1",
- "stateVariable": true,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- },
- "typeName": {
- "id": 164,
- "keyType": {
- "id": 162,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2891:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Mapping",
- "src": "2882:28:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- },
- "valueType": {
- "id": 163,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2902:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- },
- "value": null,
- "visibility": "private"
- },
- {
- "constant": false,
- "id": 169,
- "mutability": "mutable",
- "name": "_allowedStorages",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1073,
- "src": "2986:50:1",
- "stateVariable": true,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- },
- "typeName": {
- "id": 168,
- "keyType": {
- "id": 166,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "2995:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Mapping",
- "src": "2986:25:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- },
- "valueType": {
- "id": 167,
- "name": "bool",
- "nodeType": "ElementaryTypeName",
- "src": "3006:4:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- }
- },
- "value": null,
- "visibility": "private"
- },
- {
- "body": {
- "id": 191,
- "nodeType": "Block",
- "src": "3204:133:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 176,
- "name": "uri",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 172,
- "src": "3222:3:1",
- "typeDescriptions": {
- "typeIdentifier": "t_string_memory_ptr",
- "typeString": "string memory"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_string_memory_ptr",
- "typeString": "string memory"
- }
- ],
- "id": 175,
- "name": "_setURI",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 992,
- "src": "3214:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (string memory)"
- }
- },
- "id": 177,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3214:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 178,
- "nodeType": "ExpressionStatement",
- "src": "3214:12:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 180,
- "name": "DEFAULT_ADMIN_ROLE",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1102,
- "src": "3247:18:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 181,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "3267:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 182,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3267:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 179,
- "name": "_setupRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1285,
- "src": "3236:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
- "typeString": "function (bytes32,address)"
- }
- },
- "id": 183,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3236:44:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 184,
- "nodeType": "ExpressionStatement",
- "src": "3236:44:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 186,
- "name": "DATA_SUPPLIER",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 139,
- "src": "3301:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 187,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "3316:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 188,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3316:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 185,
- "name": "_setupRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1285,
- "src": "3290:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
- "typeString": "function (bytes32,address)"
- }
- },
- "id": 189,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3290:39:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 190,
- "nodeType": "ExpressionStatement",
- "src": "3290:39:1"
- }
- ]
- },
- "documentation": {
- "id": 170,
- "nodeType": "StructuredDocumentation",
- "src": "3044:117:1",
- "text": " @dev Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that\n deploys the contract."
- },
- "id": 192,
- "implemented": true,
- "kind": "constructor",
- "modifiers": [],
- "name": "",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 173,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 172,
- "mutability": "mutable",
- "name": "uri",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 192,
- "src": "3178:17:1",
- "stateVariable": false,
- "storageLocation": "memory",
- "typeDescriptions": {
- "typeIdentifier": "t_string_memory_ptr",
- "typeString": "string"
- },
- "typeName": {
- "id": 171,
- "name": "string",
- "nodeType": "ElementaryTypeName",
- "src": "3178:6:1",
- "typeDescriptions": {
- "typeIdentifier": "t_string_storage_ptr",
- "typeString": "string"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "3177:19:1"
- },
- "returnParameters": {
- "id": 174,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "3204:0:1"
- },
- "scope": 1073,
- "src": "3166:171:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 212,
- "nodeType": "Block",
- "src": "3469:169:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 202,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "UnaryOperation",
- "operator": "!",
- "prefix": true,
- "src": "3487:37:1",
- "subExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 198,
- "name": "DATA_SUPPLIER",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 139,
- "src": "3496:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 199,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "3511:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 200,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3511:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 197,
- "name": "hasRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1148,
- "src": "3488:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
- "typeString": "function (bytes32,address) view returns (bool)"
- }
- },
- "id": 201,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3488:36:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206d757374206e6f742068617665206120444154415f535550504c49455220726f6c6520796574",
- "id": 203,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "3526:55:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_ad6e74c880a0a8789cc0999bb5807e042142eac3ba8cd1a8f038e7ac1c7b18f3",
- "typeString": "literal_string \"SpatialAssets: must not have a DATA_SUPPLIER role yet\""
- },
- "value": "SpatialAssets: must not have a DATA_SUPPLIER role yet"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_ad6e74c880a0a8789cc0999bb5807e042142eac3ba8cd1a8f038e7ac1c7b18f3",
- "typeString": "literal_string \"SpatialAssets: must not have a DATA_SUPPLIER role yet\""
- }
- ],
- "id": 196,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "3479:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 204,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3479:103:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 205,
- "nodeType": "ExpressionStatement",
- "src": "3479:103:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 207,
- "name": "DATA_SUPPLIER",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 139,
- "src": "3603:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 208,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "3618:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 209,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3618:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 206,
- "name": "_setupRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1285,
- "src": "3592:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
- "typeString": "function (bytes32,address)"
- }
- },
- "id": 210,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3592:39:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 211,
- "nodeType": "ExpressionStatement",
- "src": "3592:39:1"
- }
- ]
- },
- "documentation": {
- "id": 193,
- "nodeType": "StructuredDocumentation",
- "src": "3343:90:1",
- "text": " @dev Registers a new user with the ability to register a spatial asset."
- },
- "functionSelector": "c44e96a0",
- "id": 213,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "registerRole",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 194,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "3459:2:1"
- },
- "returnParameters": {
- "id": 195,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "3469:0:1"
- },
- "scope": 1073,
- "src": "3438:200:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 243,
- "nodeType": "Block",
- "src": "3792:299:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 221,
- "name": "DEFAULT_ADMIN_ROLE",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1102,
- "src": "3818:18:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 222,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "3838:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 223,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3838:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 220,
- "name": "hasRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1148,
- "src": "3810:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
- "typeString": "function (bytes32,address) view returns (bool)"
- }
- },
- "id": 224,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3810:41:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f7261676573",
- "id": 225,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "3853:71:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f",
- "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\""
- },
- "value": "SpatialAssets: must have admin role to edit allowed offchain storages"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f",
- "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\""
- }
- ],
- "id": 219,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "3802:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 226,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3802:123:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 227,
- "nodeType": "ExpressionStatement",
- "src": "3802:123:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "id": 233,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 229,
- "name": "_allowedStorages",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 169,
- "src": "3943:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 231,
- "indexExpression": {
- "argumentTypes": null,
- "id": 230,
- "name": "offChainStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 216,
- "src": "3960:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "3943:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "hexValue": "66616c7365",
- "id": 232,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "3979:5:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "false"
- },
- "src": "3943:41:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a2073746f72616765206d757374206e6f742062652061637469766520796574",
- "id": 234,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "3986:47:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_8fee17d368687c80e4deac3f133d29733581706ec6213898eb6c5db439fb45d7",
- "typeString": "literal_string \"SpatialAssets: storage must not be active yet\""
- },
- "value": "SpatialAssets: storage must not be active yet"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_8fee17d368687c80e4deac3f133d29733581706ec6213898eb6c5db439fb45d7",
- "typeString": "literal_string \"SpatialAssets: storage must not be active yet\""
- }
- ],
- "id": 228,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "3935:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 235,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "3935:99:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 236,
- "nodeType": "ExpressionStatement",
- "src": "3935:99:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 241,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 237,
- "name": "_allowedStorages",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 169,
- "src": "4044:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 239,
- "indexExpression": {
- "argumentTypes": null,
- "id": 238,
- "name": "offChainStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 216,
- "src": "4061:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "4044:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "74727565",
- "id": 240,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "4080:4:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "true"
- },
- "src": "4044:40:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 242,
- "nodeType": "ExpressionStatement",
- "src": "4044:40:1"
- }
- ]
- },
- "documentation": {
- "id": 214,
- "nodeType": "StructuredDocumentation",
- "src": "3644:88:1",
- "text": " @dev Registers a new storage that can accept GeoDID document creation"
- },
- "functionSelector": "6e7a6f4b",
- "id": 244,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "enableStorage",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 217,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 216,
- "mutability": "mutable",
- "name": "offChainStorage",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 244,
- "src": "3760:23:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 215,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "3760:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "3759:25:1"
- },
- "returnParameters": {
- "id": 218,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "3792:0:1"
- },
- "scope": 1073,
- "src": "3737:354:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 265,
- "nodeType": "Block",
- "src": "4210:191:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 252,
- "name": "DEFAULT_ADMIN_ROLE",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1102,
- "src": "4236:18:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 253,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "4256:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 254,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "4256:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 251,
- "name": "hasRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1148,
- "src": "4228:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
- "typeString": "function (bytes32,address) view returns (bool)"
- }
- },
- "id": 255,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "4228:41:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f7261676573",
- "id": 256,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "4271:71:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f",
- "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\""
- },
- "value": "SpatialAssets: must have admin role to edit allowed offchain storages"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f",
- "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\""
- }
- ],
- "id": 250,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "4220:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 257,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "4220:123:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 258,
- "nodeType": "ExpressionStatement",
- "src": "4220:123:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 263,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 259,
- "name": "_allowedStorages",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 169,
- "src": "4353:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 261,
- "indexExpression": {
- "argumentTypes": null,
- "id": 260,
- "name": "offChainStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 247,
- "src": "4370:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "4353:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "66616c7365",
- "id": 262,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "4389:5:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "false"
- },
- "src": "4353:41:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 264,
- "nodeType": "ExpressionStatement",
- "src": "4353:41:1"
- }
- ]
- },
- "documentation": {
- "id": 245,
- "nodeType": "StructuredDocumentation",
- "src": "4097:52:1",
- "text": " @dev Disables an existing storage"
- },
- "functionSelector": "fd52c0d5",
- "id": 266,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "disableStorage",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 248,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 247,
- "mutability": "mutable",
- "name": "offChainStorage",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 266,
- "src": "4178:23:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 246,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "4178:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "4177:25:1"
- },
- "returnParameters": {
- "id": 249,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "4210:0:1"
- },
- "scope": 1073,
- "src": "4154:247:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 463,
- "nodeType": "Block",
- "src": "4767:1547:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 287,
- "name": "DATA_SUPPLIER",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 139,
- "src": "4793:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 288,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "4808:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 289,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "4808:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 286,
- "name": "hasRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1148,
- "src": "4785:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
- "typeString": "function (bytes32,address) view returns (bool)"
- }
- },
- "id": 290,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "4785:36:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "id": 291,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "4823:57:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- },
- "value": "SpatialAssets: must have data supplier role to register"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "id": 285,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "4777:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 292,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "4777:104:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 293,
- "nodeType": "ExpressionStatement",
- "src": "4777:104:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 296,
- "name": "offChainStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 280,
- "src": "4915:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 295,
- "name": "allowedStorages",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1064,
- "src": "4899:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
- "typeString": "function (bytes32) view returns (bool)"
- }
- },
- "id": 297,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "4899:32:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a2073746f72616765206d75737420626520616c6c6f776564",
- "id": 298,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "4933:40:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_0ae99bd2d2bc928ba974a4c0584b94117dc577f73fe645d1eace2711f12192a2",
- "typeString": "literal_string \"SpatialAssets: storage must be allowed\""
- },
- "value": "SpatialAssets: storage must be allowed"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_0ae99bd2d2bc928ba974a4c0584b94117dc577f73fe645d1eace2711f12192a2",
- "typeString": "literal_string \"SpatialAssets: storage must be allowed\""
- }
- ],
- "id": 294,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "4891:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 299,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "4891:83:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 300,
- "nodeType": "ExpressionStatement",
- "src": "4891:83:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 309,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 302,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "4992:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 304,
- "indexExpression": {
- "argumentTypes": null,
- "id": 303,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5000:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "4992:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 307,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5021:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 306,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "5013:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 305,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "5013:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 308,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "5013:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "4992:31:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574",
- "id": 310,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5025:46:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c",
- "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\""
- },
- "value": "SpatialAssets: id must not have an owner yet"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c",
- "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\""
- }
- ],
- "id": 301,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "4984:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 311,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "4984:88:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 312,
- "nodeType": "ExpressionStatement",
- "src": "4984:88:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "id": 320,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 316,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 314,
- "name": "geoDIDtype",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 282,
- "src": "5090:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 315,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5105:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "src": "5090:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "||",
- "rightExpression": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 319,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 317,
- "name": "geoDIDtype",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 282,
- "src": "5110:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "hexValue": "31",
- "id": 318,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5124:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_1_by_1",
- "typeString": "int_const 1"
- },
- "value": "1"
- },
- "src": "5110:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "src": "5090:35:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c204173736574733a2077726f6e672067656f64696474797065",
- "id": 321,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5127:34:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_e674447e79034d68bd1c7f2aa0a8d31190ad751eb2b878eced3a014448a54daa",
- "typeString": "literal_string \"Spatial Assets: wrong geodidtype\""
- },
- "value": "Spatial Assets: wrong geodidtype"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_e674447e79034d68bd1c7f2aa0a8d31190ad751eb2b878eced3a014448a54daa",
- "typeString": "literal_string \"Spatial Assets: wrong geodidtype\""
- }
- ],
- "id": 313,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "5082:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 322,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "5082:80:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 323,
- "nodeType": "ExpressionStatement",
- "src": "5082:80:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 328,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 324,
- "name": "_cids",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 149,
- "src": "5173:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 326,
- "indexExpression": {
- "argumentTypes": null,
- "id": 325,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5179:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "5173:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "id": 327,
- "name": "cid",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 278,
- "src": "5190:3:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "src": "5173:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 329,
- "nodeType": "ExpressionStatement",
- "src": "5173:20:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 334,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 330,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "5203:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 332,
- "indexExpression": {
- "argumentTypes": null,
- "id": 331,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5211:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "5203:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "id": 333,
- "name": "owner",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 269,
- "src": "5223:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "src": "5203:25:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "id": 335,
- "nodeType": "ExpressionStatement",
- "src": "5203:25:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 340,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 336,
- "name": "_externalStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 165,
- "src": "5238:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 338,
- "indexExpression": {
- "argumentTypes": null,
- "id": 337,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5255:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "5238:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "id": 339,
- "name": "offChainStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 280,
- "src": "5267:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "src": "5238:44:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 341,
- "nodeType": "ExpressionStatement",
- "src": "5238:44:1"
- },
- {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 344,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 342,
- "name": "geoDIDtype",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 282,
- "src": "5297:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 343,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5311:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "src": "5297:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 354,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 352,
- "name": "geoDIDtype",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 282,
- "src": "5378:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "hexValue": "31",
- "id": 353,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5392:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_1_by_1",
- "typeString": "int_const 1"
- },
- "value": "1"
- },
- "src": "5378:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": null,
- "id": 362,
- "nodeType": "IfStatement",
- "src": "5374:76:1",
- "trueBody": {
- "id": 361,
- "nodeType": "Block",
- "src": "5395:55:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "id": 359,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 355,
- "name": "_canBeParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 157,
- "src": "5409:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 357,
- "indexExpression": {
- "argumentTypes": null,
- "id": 356,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5422:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "5409:22:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "66616c7365",
- "id": 358,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5434:5:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "false"
- },
- "src": "5409:30:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 360,
- "nodeType": "ExpressionStatement",
- "src": "5409:30:1"
- }
- ]
- }
- },
- "id": 363,
- "nodeType": "IfStatement",
- "src": "5293:157:1",
- "trueBody": {
- "id": 351,
- "nodeType": "Block",
- "src": "5314:54:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "id": 349,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 345,
- "name": "_canBeParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 157,
- "src": "5328:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 347,
- "indexExpression": {
- "argumentTypes": null,
- "id": 346,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5341:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "5328:22:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "74727565",
- "id": 348,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5353:4:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "true"
- },
- "src": "5328:29:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 350,
- "nodeType": "ExpressionStatement",
- "src": "5328:29:1"
- }
- ]
- }
- },
- {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "id": 369,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 364,
- "name": "parentGeoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 273,
- "src": "5464:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 367,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5490:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 366,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "5482:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_bytes32_$",
- "typeString": "type(bytes32)"
- },
- "typeName": {
- "id": 365,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "5482:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 368,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "5482:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "src": "5464:28:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": {
- "id": 418,
- "nodeType": "Block",
- "src": "5703:235:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "id": 398,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 394,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "5717:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 396,
- "indexExpression": {
- "argumentTypes": null,
- "id": 395,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5728:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "5717:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "74727565",
- "id": 397,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5740:4:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "true"
- },
- "src": "5717:27:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 399,
- "nodeType": "ExpressionStatement",
- "src": "5717:27:1"
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 401,
- "name": "owner",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 269,
- "src": "5786:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- {
- "argumentTypes": null,
- "id": 402,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5793:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 403,
- "name": "cid",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 278,
- "src": "5803:3:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 404,
- "name": "offChainStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 280,
- "src": "5808:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 405,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "5825:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 407,
- "indexExpression": {
- "argumentTypes": null,
- "id": 406,
- "name": "parentGeoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 273,
- "src": "5831:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "5825:21:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 408,
- "name": "_canBeParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 157,
- "src": "5848:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 410,
- "indexExpression": {
- "argumentTypes": null,
- "id": 409,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5861:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "5848:22:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- ],
- "id": 400,
- "name": "SpatialAssetRegistered",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 80,
- "src": "5763:22:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bool_$returns$__$",
- "typeString": "function (address,bytes32,bytes32,bytes32,bytes32,bool)"
- }
- },
- "id": 411,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "5763:108:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 412,
- "nodeType": "EmitStatement",
- "src": "5758:113:1"
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 414,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5902:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 415,
- "name": "parentGeoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 273,
- "src": "5912:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 413,
- "name": "ParentAdded",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 92,
- "src": "5890:11:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 416,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "5890:37:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 417,
- "nodeType": "EmitStatement",
- "src": "5885:42:1"
- }
- ]
- },
- "id": 419,
- "nodeType": "IfStatement",
- "src": "5460:478:1",
- "trueBody": {
- "id": 393,
- "nodeType": "Block",
- "src": "5494:203:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "id": 374,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 370,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "5508:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 372,
- "indexExpression": {
- "argumentTypes": null,
- "id": 371,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5519:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "5508:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "66616c7365",
- "id": 373,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "5531:5:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "false"
- },
- "src": "5508:28:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 375,
- "nodeType": "ExpressionStatement",
- "src": "5508:28:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 380,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 376,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "5550:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 378,
- "indexExpression": {
- "argumentTypes": null,
- "id": 377,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5556:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "5550:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "id": 379,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5568:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "src": "5550:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 381,
- "nodeType": "ExpressionStatement",
- "src": "5550:26:1"
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 383,
- "name": "owner",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 269,
- "src": "5614:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- {
- "argumentTypes": null,
- "id": 384,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5621:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 385,
- "name": "cid",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 278,
- "src": "5631:3:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 386,
- "name": "offChainStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 280,
- "src": "5636:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 387,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5653:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 388,
- "name": "_canBeParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 157,
- "src": "5663:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 390,
- "indexExpression": {
- "argumentTypes": null,
- "id": 389,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "5676:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "5663:22:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- ],
- "id": 382,
- "name": "SpatialAssetRegistered",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 80,
- "src": "5591:22:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bool_$returns$__$",
- "typeString": "function (address,bytes32,bytes32,bytes32,bytes32,bool)"
- }
- },
- "id": 391,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "5591:95:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 392,
- "nodeType": "EmitStatement",
- "src": "5586:100:1"
- }
- ]
- }
- },
- {
- "assignments": [
- 421
- ],
- "declarations": [
- {
- "constant": false,
- "id": 421,
- "mutability": "mutable",
- "name": "childrensLen",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 463,
- "src": "5948:20:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "typeName": {
- "id": 420,
- "name": "uint256",
- "nodeType": "ElementaryTypeName",
- "src": "5948:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 424,
- "initialValue": {
- "argumentTypes": null,
- "expression": {
- "argumentTypes": null,
- "id": 422,
- "name": "childrenGeoDIDIds",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 276,
- "src": "5971:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[] memory"
- }
- },
- "id": 423,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "memberName": "length",
- "nodeType": "MemberAccess",
- "referencedDeclaration": null,
- "src": "5971:24:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "5948:47:1"
- },
- {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "id": 431,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 427,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 425,
- "name": "childrensLen",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 421,
- "src": "6010:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": ">",
- "rightExpression": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 426,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "6025:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "src": "6010:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "&&",
- "rightExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 428,
- "name": "_canBeParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 157,
- "src": "6030:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 430,
- "indexExpression": {
- "argumentTypes": null,
- "id": 429,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "6043:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "6030:22:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "src": "6010:42:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": null,
- "id": 462,
- "nodeType": "IfStatement",
- "src": "6006:302:1",
- "trueBody": {
- "id": 461,
- "nodeType": "Block",
- "src": "6053:255:1",
- "statements": [
- {
- "body": {
- "id": 459,
- "nodeType": "Block",
- "src": "6107:191:1",
- "statements": [
- {
- "assignments": [
- 443
- ],
- "declarations": [
- {
- "constant": false,
- "id": 443,
- "mutability": "mutable",
- "name": "childrenGeoDID",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 459,
- "src": "6125:22:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 442,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "6125:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 447,
- "initialValue": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 444,
- "name": "childrenGeoDIDIds",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 276,
- "src": "6150:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[] memory"
- }
- },
- "id": 446,
- "indexExpression": {
- "argumentTypes": null,
- "id": 445,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 433,
- "src": "6168:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "6150:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "6125:45:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 452,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 448,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "6188:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 450,
- "indexExpression": {
- "argumentTypes": null,
- "id": 449,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 443,
- "src": "6199:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "6188:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "74727565",
- "id": 451,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "6217:4:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "true"
- },
- "src": "6188:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 453,
- "nodeType": "ExpressionStatement",
- "src": "6188:33:1"
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 455,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 271,
- "src": "6258:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 456,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 443,
- "src": "6268:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 454,
- "name": "ChildrenAdded",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 99,
- "src": "6244:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 457,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "6244:39:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 458,
- "nodeType": "EmitStatement",
- "src": "6239:44:1"
- }
- ]
- },
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 438,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 436,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 433,
- "src": "6084:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "<",
- "rightExpression": {
- "argumentTypes": null,
- "id": 437,
- "name": "childrensLen",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 421,
- "src": "6088:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "src": "6084:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 460,
- "initializationExpression": {
- "assignments": [
- 433
- ],
- "declarations": [
- {
- "constant": false,
- "id": 433,
- "mutability": "mutable",
- "name": "j",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 460,
- "src": "6071:9:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "typeName": {
- "id": 432,
- "name": "uint256",
- "nodeType": "ElementaryTypeName",
- "src": "6071:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 435,
- "initialValue": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 434,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "6081:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "6071:11:1"
- },
- "loopExpression": {
- "expression": {
- "argumentTypes": null,
- "id": 440,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "UnaryOperation",
- "operator": "++",
- "prefix": false,
- "src": "6102:3:1",
- "subExpression": {
- "argumentTypes": null,
- "id": 439,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 433,
- "src": "6102:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "id": 441,
- "nodeType": "ExpressionStatement",
- "src": "6102:3:1"
- },
- "nodeType": "ForStatement",
- "src": "6067:231:1"
- }
- ]
- }
- }
- ]
- },
- "documentation": {
- "id": 267,
- "nodeType": "StructuredDocumentation",
- "src": "4408:165:1",
- "text": " @dev Registers one spatial asset with external storage 'data' and assigns them to `account`.\n Emits a {SpatialAssetRegistered} event."
- },
- "functionSelector": "b22de880",
- "id": 464,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "registerSpatialAsset",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 283,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 269,
- "mutability": "mutable",
- "name": "owner",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 464,
- "src": "4608:13:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "typeName": {
- "id": 268,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "4608:7:1",
- "stateMutability": "nonpayable",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 271,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 464,
- "src": "4623:16:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 270,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "4623:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 273,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 464,
- "src": "4641:22:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 272,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "4641:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 276,
- "mutability": "mutable",
- "name": "childrenGeoDIDIds",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 464,
- "src": "4666:34:1",
- "stateVariable": false,
- "storageLocation": "memory",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[]"
- },
- "typeName": {
- "baseType": {
- "id": 274,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "4666:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 275,
- "length": null,
- "nodeType": "ArrayTypeName",
- "src": "4666:9:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
- "typeString": "bytes32[]"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 278,
- "mutability": "mutable",
- "name": "cid",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 464,
- "src": "4702:11:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 277,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "4702:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 280,
- "mutability": "mutable",
- "name": "offChainStorage",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 464,
- "src": "4715:23:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 279,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "4715:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 282,
- "mutability": "mutable",
- "name": "geoDIDtype",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 464,
- "src": "4740:18:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "typeName": {
- "id": 281,
- "name": "uint256",
- "nodeType": "ElementaryTypeName",
- "src": "4740:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "4607:152:1"
- },
- "returnParameters": {
- "id": 284,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "4767:0:1"
- },
- "scope": 1073,
- "src": "4578:1736:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 586,
- "nodeType": "Block",
- "src": "6535:1135:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 475,
- "name": "DATA_SUPPLIER",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 139,
- "src": "6561:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 476,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "6576:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 477,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "6576:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 474,
- "name": "hasRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1148,
- "src": "6553:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
- "typeString": "function (bytes32,address) view returns (bool)"
- }
- },
- "id": 478,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "6553:36:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "id": 479,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "6591:57:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- },
- "value": "SpatialAssets: must have data supplier role to register"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "id": 473,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "6545:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 480,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "6545:104:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 481,
- "nodeType": "ExpressionStatement",
- "src": "6545:104:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 488,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 483,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "6667:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 485,
- "indexExpression": {
- "argumentTypes": null,
- "id": 484,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 467,
- "src": "6675:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "6667:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 486,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "6688:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 487,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "6688:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "6667:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f72",
- "id": 489,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "6702:54:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841",
- "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\""
- },
- "value": "SpatialAssets: geoDIDId must be owned by its creator"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841",
- "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\""
- }
- ],
- "id": 482,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "6659:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 490,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "6659:98:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 491,
- "nodeType": "ExpressionStatement",
- "src": "6659:98:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 493,
- "name": "_canBeParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 157,
- "src": "6775:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 495,
- "indexExpression": {
- "argumentTypes": null,
- "id": 494,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 467,
- "src": "6788:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "6775:22:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a2067656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e29",
- "id": 496,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "6799:66:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_35056da795db0b563126e5da17620c63bcd517d6bd90d17a597656966ba83aa1",
- "typeString": "literal_string \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\""
- },
- "value": "SpatialAssets: geoDIDId must be able to be parent (a Collection)"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_35056da795db0b563126e5da17620c63bcd517d6bd90d17a597656966ba83aa1",
- "typeString": "literal_string \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\""
- }
- ],
- "id": 492,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "6767:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 497,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "6767:99:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 498,
- "nodeType": "ExpressionStatement",
- "src": "6767:99:1"
- },
- {
- "assignments": [
- 500
- ],
- "declarations": [
- {
- "constant": false,
- "id": 500,
- "mutability": "mutable",
- "name": "childrensLen",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 586,
- "src": "6877:20:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "typeName": {
- "id": 499,
- "name": "uint256",
- "nodeType": "ElementaryTypeName",
- "src": "6877:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 503,
- "initialValue": {
- "argumentTypes": null,
- "expression": {
- "argumentTypes": null,
- "id": 501,
- "name": "childrenGeoDIDIds",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 470,
- "src": "6900:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[] memory"
- }
- },
- "id": 502,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "memberName": "length",
- "nodeType": "MemberAccess",
- "referencedDeclaration": null,
- "src": "6900:24:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "6877:47:1"
- },
- {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 506,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 504,
- "name": "childrensLen",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 500,
- "src": "6939:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": ">",
- "rightExpression": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 505,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "6954:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "src": "6939:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": null,
- "id": 585,
- "nodeType": "IfStatement",
- "src": "6935:729:1",
- "trueBody": {
- "id": 584,
- "nodeType": "Block",
- "src": "6956:708:1",
- "statements": [
- {
- "body": {
- "id": 582,
- "nodeType": "Block",
- "src": "7010:644:1",
- "statements": [
- {
- "assignments": [
- 518
- ],
- "declarations": [
- {
- "constant": false,
- "id": 518,
- "mutability": "mutable",
- "name": "childrenGeoDID",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 582,
- "src": "7028:22:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 517,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "7028:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 522,
- "initialValue": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 519,
- "name": "childrenGeoDIDIds",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 470,
- "src": "7053:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[] memory"
- }
- },
- "id": 521,
- "indexExpression": {
- "argumentTypes": null,
- "id": 520,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 508,
- "src": "7071:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "7053:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "7028:45:1"
- },
- {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "id": 535,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 530,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 523,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "7095:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 525,
- "indexExpression": {
- "argumentTypes": null,
- "id": 524,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 518,
- "src": "7103:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "7095:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "!=",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 528,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "7130:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 527,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "7122:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 526,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "7122:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 529,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "7122:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "7095:37:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "&&",
- "rightExpression": {
- "argumentTypes": null,
- "id": 534,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "UnaryOperation",
- "operator": "!",
- "prefix": true,
- "src": "7136:27:1",
- "subExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 531,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "7137:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 533,
- "indexExpression": {
- "argumentTypes": null,
- "id": 532,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 518,
- "src": "7148:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "7137:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "src": "7095:68:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "id": 567,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 563,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 556,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "7376:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 558,
- "indexExpression": {
- "argumentTypes": null,
- "id": 557,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 518,
- "src": "7384:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "7376:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "!=",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 561,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "7411:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 560,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "7403:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 559,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "7403:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 562,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "7403:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "7376:37:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "&&",
- "rightExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 564,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "7417:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 566,
- "indexExpression": {
- "argumentTypes": null,
- "id": 565,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 518,
- "src": "7428:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "7417:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "src": "7376:67:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": {
- "id": 579,
- "nodeType": "Block",
- "src": "7544:96:1",
- "statements": [
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 575,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 467,
- "src": "7596:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 576,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 518,
- "src": "7606:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 574,
- "name": "ChildrenErrorNoExistence",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 127,
- "src": "7571:24:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 577,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "7571:50:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 578,
- "nodeType": "EmitStatement",
- "src": "7566:55:1"
- }
- ]
- },
- "id": 580,
- "nodeType": "IfStatement",
- "src": "7372:268:1",
- "trueBody": {
- "id": 573,
- "nodeType": "Block",
- "src": "7444:94:1",
- "statements": [
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 569,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 467,
- "src": "7494:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 570,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 518,
- "src": "7504:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 568,
- "name": "ChildrenErrorHasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 134,
- "src": "7471:22:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 571,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "7471:48:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 572,
- "nodeType": "EmitStatement",
- "src": "7466:53:1"
- }
- ]
- }
- },
- "id": 581,
- "nodeType": "IfStatement",
- "src": "7091:549:1",
- "trueBody": {
- "id": 555,
- "nodeType": "Block",
- "src": "7165:201:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "id": 540,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 536,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "7187:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 538,
- "indexExpression": {
- "argumentTypes": null,
- "id": 537,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 518,
- "src": "7198:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "7187:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "74727565",
- "id": 539,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "7216:4:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "true"
- },
- "src": "7187:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 541,
- "nodeType": "ExpressionStatement",
- "src": "7187:33:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 548,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 542,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "7242:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 544,
- "indexExpression": {
- "argumentTypes": null,
- "id": 543,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 518,
- "src": "7248:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "7242:21:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 545,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "7266:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 547,
- "indexExpression": {
- "argumentTypes": null,
- "id": 546,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 467,
- "src": "7272:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "7266:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "src": "7242:39:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 549,
- "nodeType": "ExpressionStatement",
- "src": "7242:39:1"
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 551,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 467,
- "src": "7322:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 552,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 518,
- "src": "7332:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 550,
- "name": "ChildrenAdded",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 99,
- "src": "7308:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 553,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "7308:39:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 554,
- "nodeType": "EmitStatement",
- "src": "7303:44:1"
- }
- ]
- }
- }
- ]
- },
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 513,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 511,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 508,
- "src": "6987:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "<",
- "rightExpression": {
- "argumentTypes": null,
- "id": 512,
- "name": "childrensLen",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 500,
- "src": "6991:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "src": "6987:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 583,
- "initializationExpression": {
- "assignments": [
- 508
- ],
- "declarations": [
- {
- "constant": false,
- "id": 508,
- "mutability": "mutable",
- "name": "j",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 583,
- "src": "6974:9:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "typeName": {
- "id": 507,
- "name": "uint256",
- "nodeType": "ElementaryTypeName",
- "src": "6974:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 510,
- "initialValue": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 509,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "6984:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "6974:11:1"
- },
- "loopExpression": {
- "expression": {
- "argumentTypes": null,
- "id": 515,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "UnaryOperation",
- "operator": "++",
- "prefix": false,
- "src": "7005:3:1",
- "subExpression": {
- "argumentTypes": null,
- "id": 514,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 508,
- "src": "7005:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "id": 516,
- "nodeType": "ExpressionStatement",
- "src": "7005:3:1"
- },
- "nodeType": "ForStatement",
- "src": "6970:684:1"
- }
- ]
- }
- }
- ]
- },
- "documentation": {
- "id": 465,
- "nodeType": "StructuredDocumentation",
- "src": "6321:120:1",
- "text": " @dev Adds children GeoDIDs to an already existent geoDID\n Emits a {ChildrenAdded} event."
- },
- "functionSelector": "bdabcf63",
- "id": 587,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "addChildrenGeoDIDs",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 471,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 467,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 587,
- "src": "6474:16:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 466,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "6474:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 470,
- "mutability": "mutable",
- "name": "childrenGeoDIDIds",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 587,
- "src": "6492:34:1",
- "stateVariable": false,
- "storageLocation": "memory",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[]"
- },
- "typeName": {
- "baseType": {
- "id": 468,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "6492:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 469,
- "length": null,
- "nodeType": "ArrayTypeName",
- "src": "6492:9:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
- "typeString": "bytes32[]"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "6473:54:1"
- },
- "returnParameters": {
- "id": 472,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "6535:0:1"
- },
- "scope": 1073,
- "src": "6446:1224:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 660,
- "nodeType": "Block",
- "src": "7872:681:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 597,
- "name": "DATA_SUPPLIER",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 139,
- "src": "7898:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 598,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "7913:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 599,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "7913:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 596,
- "name": "hasRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1148,
- "src": "7890:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
- "typeString": "function (bytes32,address) view returns (bool)"
- }
- },
- "id": 600,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "7890:36:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "id": 601,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "7928:57:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- },
- "value": "SpatialAssets: must have data supplier role to register"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "id": 595,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "7882:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 602,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "7882:104:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 603,
- "nodeType": "ExpressionStatement",
- "src": "7882:104:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 610,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 605,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "8004:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 607,
- "indexExpression": {
- "argumentTypes": null,
- "id": 606,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 590,
- "src": "8012:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "8004:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 608,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "8025:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 609,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8025:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "8004:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f72",
- "id": 611,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "8039:54:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841",
- "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\""
- },
- "value": "SpatialAssets: geoDIDId must be owned by its creator"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841",
- "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\""
- }
- ],
- "id": 604,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "7996:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 612,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "7996:98:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 613,
- "nodeType": "ExpressionStatement",
- "src": "7996:98:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 622,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 615,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "8112:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 617,
- "indexExpression": {
- "argumentTypes": null,
- "id": 616,
- "name": "parentGeoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 592,
- "src": "8120:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "8112:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "!=",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 620,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "8147:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 619,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "8139:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 618,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "8139:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 621,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8139:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "8112:37:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a20706172656e7447656f444944496420646f6573206e6f74206578697374",
- "id": 623,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "8151:46:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_37628363356dfe049fe1dfb95b31ae659423f88203c2d0589d12bc6e2efba5fb",
- "typeString": "literal_string \"SpatialAssets: parentGeoDIDId does not exist\""
- },
- "value": "SpatialAssets: parentGeoDIDId does not exist"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_37628363356dfe049fe1dfb95b31ae659423f88203c2d0589d12bc6e2efba5fb",
- "typeString": "literal_string \"SpatialAssets: parentGeoDIDId does not exist\""
- }
- ],
- "id": 614,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "8104:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 624,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8104:94:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 625,
- "nodeType": "ExpressionStatement",
- "src": "8104:94:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 630,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "UnaryOperation",
- "operator": "!",
- "prefix": true,
- "src": "8216:21:1",
- "subExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 627,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "8217:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 629,
- "indexExpression": {
- "argumentTypes": null,
- "id": 628,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 590,
- "src": "8228:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "8217:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a2067656f444944496420616c726561647920686173206120706172656e74",
- "id": 631,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "8239:46:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_365c191fc2e3b7185ac24986ce31e56094d1588c72dcea7a382fe58e00565569",
- "typeString": "literal_string \"SpatialAssets: geoDIDId already has a parent\""
- },
- "value": "SpatialAssets: geoDIDId already has a parent"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_365c191fc2e3b7185ac24986ce31e56094d1588c72dcea7a382fe58e00565569",
- "typeString": "literal_string \"SpatialAssets: geoDIDId already has a parent\""
- }
- ],
- "id": 626,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "8208:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 632,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8208:78:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 633,
- "nodeType": "ExpressionStatement",
- "src": "8208:78:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 635,
- "name": "_canBeParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 157,
- "src": "8304:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 637,
- "indexExpression": {
- "argumentTypes": null,
- "id": 636,
- "name": "parentGeoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 592,
- "src": "8317:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "8304:28:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a20706172656e7447656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e29",
- "id": 638,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "8334:72:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_2fc4c9e1419e4474d6293c8f8fe90b0fca69366a562a1be7a551c73fee1d2c1d",
- "typeString": "literal_string \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\""
- },
- "value": "SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_2fc4c9e1419e4474d6293c8f8fe90b0fca69366a562a1be7a551c73fee1d2c1d",
- "typeString": "literal_string \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\""
- }
- ],
- "id": 634,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "8296:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 639,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8296:111:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 640,
- "nodeType": "ExpressionStatement",
- "src": "8296:111:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 645,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 641,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "8418:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 643,
- "indexExpression": {
- "argumentTypes": null,
- "id": 642,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 590,
- "src": "8429:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "8418:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "74727565",
- "id": 644,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "8441:4:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "true"
- },
- "src": "8418:27:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 646,
- "nodeType": "ExpressionStatement",
- "src": "8418:27:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 653,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 647,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "8455:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 649,
- "indexExpression": {
- "argumentTypes": null,
- "id": 648,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 590,
- "src": "8461:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "8455:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 650,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "8473:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 652,
- "indexExpression": {
- "argumentTypes": null,
- "id": 651,
- "name": "parentGeoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 592,
- "src": "8479:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "8473:21:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "src": "8455:39:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 654,
- "nodeType": "ExpressionStatement",
- "src": "8455:39:1"
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 656,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 590,
- "src": "8521:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 657,
- "name": "parentGeoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 592,
- "src": "8531:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 655,
- "name": "ParentAdded",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 92,
- "src": "8509:11:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 658,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8509:37:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 659,
- "nodeType": "EmitStatement",
- "src": "8504:42:1"
- }
- ]
- },
- "documentation": {
- "id": 588,
- "nodeType": "StructuredDocumentation",
- "src": "7676:117:1",
- "text": " @dev Adds a parent GeoDID to an already existent geoDID\n Emits a {ParentAdded} event."
- },
- "functionSelector": "f999be89",
- "id": 661,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "addParentGeoDID",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 593,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 590,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 661,
- "src": "7823:16:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 589,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "7823:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 592,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 661,
- "src": "7841:22:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 591,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "7841:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "7822:42:1"
- },
- "returnParameters": {
- "id": 594,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "7872:0:1"
- },
- "scope": 1073,
- "src": "7798:755:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 774,
- "nodeType": "Block",
- "src": "8769:1019:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 672,
- "name": "DATA_SUPPLIER",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 139,
- "src": "8795:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 673,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "8810:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 674,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8810:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 671,
- "name": "hasRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1148,
- "src": "8787:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
- "typeString": "function (bytes32,address) view returns (bool)"
- }
- },
- "id": 675,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8787:36:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "id": 676,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "8825:57:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- },
- "value": "SpatialAssets: must have data supplier role to register"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "id": 670,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "8779:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 677,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8779:104:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 678,
- "nodeType": "ExpressionStatement",
- "src": "8779:104:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 685,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 680,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "8901:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 682,
- "indexExpression": {
- "argumentTypes": null,
- "id": 681,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 664,
- "src": "8909:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "8901:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 683,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "8922:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 684,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8922:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "8901:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574",
- "id": 686,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "8936:46:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c",
- "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\""
- },
- "value": "SpatialAssets: id must not have an owner yet"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c",
- "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\""
- }
- ],
- "id": 679,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "8893:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 687,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "8893:90:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 688,
- "nodeType": "ExpressionStatement",
- "src": "8893:90:1"
- },
- {
- "assignments": [
- 690
- ],
- "declarations": [
- {
- "constant": false,
- "id": 690,
- "mutability": "mutable",
- "name": "childrensLen",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 774,
- "src": "8994:20:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "typeName": {
- "id": 689,
- "name": "uint256",
- "nodeType": "ElementaryTypeName",
- "src": "8994:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 693,
- "initialValue": {
- "argumentTypes": null,
- "expression": {
- "argumentTypes": null,
- "id": 691,
- "name": "childrenGeoDIDIds",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 667,
- "src": "9017:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[] memory"
- }
- },
- "id": 692,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "memberName": "length",
- "nodeType": "MemberAccess",
- "referencedDeclaration": null,
- "src": "9017:24:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "8994:47:1"
- },
- {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 696,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 694,
- "name": "childrensLen",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 690,
- "src": "9056:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": ">",
- "rightExpression": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 695,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "9071:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "src": "9056:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": null,
- "id": 773,
- "nodeType": "IfStatement",
- "src": "9052:730:1",
- "trueBody": {
- "id": 772,
- "nodeType": "Block",
- "src": "9073:709:1",
- "statements": [
- {
- "body": {
- "id": 770,
- "nodeType": "Block",
- "src": "9127:645:1",
- "statements": [
- {
- "assignments": [
- 708
- ],
- "declarations": [
- {
- "constant": false,
- "id": 708,
- "mutability": "mutable",
- "name": "childrenGeoDID",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 770,
- "src": "9145:22:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 707,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "9145:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 712,
- "initialValue": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 709,
- "name": "childrenGeoDIDIds",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 667,
- "src": "9170:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[] memory"
- }
- },
- "id": 711,
- "indexExpression": {
- "argumentTypes": null,
- "id": 710,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 698,
- "src": "9188:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "9170:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "9145:45:1"
- },
- {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "id": 724,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 720,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 713,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "9212:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 715,
- "indexExpression": {
- "argumentTypes": null,
- "id": 714,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9220:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "9212:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "!=",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 718,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "9247:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 717,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "9239:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 716,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "9239:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 719,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "9239:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "9212:37:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "&&",
- "rightExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 721,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "9253:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 723,
- "indexExpression": {
- "argumentTypes": null,
- "id": 722,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9264:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "9253:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "src": "9212:67:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "id": 755,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 750,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 743,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "9494:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 745,
- "indexExpression": {
- "argumentTypes": null,
- "id": 744,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9502:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "9494:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "!=",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 748,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "9529:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 747,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "9521:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 746,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "9521:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 749,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "9521:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "9494:37:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "&&",
- "rightExpression": {
- "argumentTypes": null,
- "id": 754,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "UnaryOperation",
- "operator": "!",
- "prefix": true,
- "src": "9535:27:1",
- "subExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 751,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "9536:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 753,
- "indexExpression": {
- "argumentTypes": null,
- "id": 752,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9547:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "9536:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "src": "9494:68:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": {
- "id": 767,
- "nodeType": "Block",
- "src": "9662:96:1",
- "statements": [
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 763,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 664,
- "src": "9714:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 764,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9724:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 762,
- "name": "ChildrenErrorNoExistence",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 127,
- "src": "9689:24:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 765,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "9689:50:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 766,
- "nodeType": "EmitStatement",
- "src": "9684:55:1"
- }
- ]
- },
- "id": 768,
- "nodeType": "IfStatement",
- "src": "9490:268:1",
- "trueBody": {
- "id": 761,
- "nodeType": "Block",
- "src": "9563:93:1",
- "statements": [
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 757,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 664,
- "src": "9612:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 758,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9622:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 756,
- "name": "ChildrenErrorNoParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 120,
- "src": "9590:21:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 759,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "9590:47:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 760,
- "nodeType": "EmitStatement",
- "src": "9585:52:1"
- }
- ]
- }
- },
- "id": 769,
- "nodeType": "IfStatement",
- "src": "9208:550:1",
- "trueBody": {
- "id": 742,
- "nodeType": "Block",
- "src": "9281:203:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "id": 729,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 725,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "9303:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 727,
- "indexExpression": {
- "argumentTypes": null,
- "id": 726,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9314:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "9303:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "66616c7365",
- "id": 728,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "9332:5:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "false"
- },
- "src": "9303:34:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 730,
- "nodeType": "ExpressionStatement",
- "src": "9303:34:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 735,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 731,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "9359:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 733,
- "indexExpression": {
- "argumentTypes": null,
- "id": 732,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9365:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "9359:21:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "id": 734,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9383:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "src": "9359:38:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 736,
- "nodeType": "ExpressionStatement",
- "src": "9359:38:1"
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 738,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 664,
- "src": "9440:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 739,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 708,
- "src": "9450:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 737,
- "name": "ChildrenRemoved",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 113,
- "src": "9424:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 740,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "9424:41:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 741,
- "nodeType": "EmitStatement",
- "src": "9419:46:1"
- }
- ]
- }
- }
- ]
- },
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 703,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 701,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 698,
- "src": "9104:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "<",
- "rightExpression": {
- "argumentTypes": null,
- "id": 702,
- "name": "childrensLen",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 690,
- "src": "9108:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "src": "9104:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 771,
- "initializationExpression": {
- "assignments": [
- 698
- ],
- "declarations": [
- {
- "constant": false,
- "id": 698,
- "mutability": "mutable",
- "name": "j",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 771,
- "src": "9091:9:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "typeName": {
- "id": 697,
- "name": "uint256",
- "nodeType": "ElementaryTypeName",
- "src": "9091:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 700,
- "initialValue": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 699,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "9101:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "9091:11:1"
- },
- "loopExpression": {
- "expression": {
- "argumentTypes": null,
- "id": 705,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "UnaryOperation",
- "operator": "++",
- "prefix": false,
- "src": "9122:3:1",
- "subExpression": {
- "argumentTypes": null,
- "id": 704,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 698,
- "src": "9122:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "id": 706,
- "nodeType": "ExpressionStatement",
- "src": "9122:3:1"
- },
- "nodeType": "ForStatement",
- "src": "9087:685:1"
- }
- ]
- }
- }
- ]
- },
- "documentation": {
- "id": 662,
- "nodeType": "StructuredDocumentation",
- "src": "8564:108:1",
- "text": " @dev Removes childrenGeoDIDs from a geoDID\n Emits a {ChildrenRemoved} event."
- },
- "functionSelector": "a8f904b5",
- "id": 775,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "removeChildrenGeoDIDs",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 668,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 664,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 775,
- "src": "8708:16:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 663,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "8708:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 667,
- "mutability": "mutable",
- "name": "childrenGeoDIDIds",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 775,
- "src": "8726:34:1",
- "stateVariable": false,
- "storageLocation": "memory",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[]"
- },
- "typeName": {
- "baseType": {
- "id": 665,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "8726:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 666,
- "length": null,
- "nodeType": "ArrayTypeName",
- "src": "8726:9:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
- "typeString": "bytes32[]"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "8707:54:1"
- },
- "returnParameters": {
- "id": 669,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "8769:0:1"
- },
- "scope": 1073,
- "src": "8677:1111:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 838,
- "nodeType": "Block",
- "src": "10000:576:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 785,
- "name": "DATA_SUPPLIER",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 139,
- "src": "10026:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 786,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "10041:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 787,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10041:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "id": 784,
- "name": "hasRole",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1148,
- "src": "10018:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
- "typeString": "function (bytes32,address) view returns (bool)"
- }
- },
- "id": 788,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10018:36:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "id": 789,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10056:57:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- },
- "value": "SpatialAssets: must have data supplier role to register"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "id": 783,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "10010:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 790,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10010:104:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 791,
- "nodeType": "ExpressionStatement",
- "src": "10010:104:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 798,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 793,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "10132:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 795,
- "indexExpression": {
- "argumentTypes": null,
- "id": 794,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 778,
- "src": "10140:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "10132:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 796,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "10153:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 797,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10153:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "10132:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574",
- "id": 799,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10167:46:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c",
- "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\""
- },
- "value": "SpatialAssets: id must not have an owner yet"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c",
- "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\""
- }
- ],
- "id": 792,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "10124:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 800,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10124:90:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 801,
- "nodeType": "ExpressionStatement",
- "src": "10124:90:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 810,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 803,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "10232:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 805,
- "indexExpression": {
- "argumentTypes": null,
- "id": 804,
- "name": "parentGeoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 780,
- "src": "10240:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "10232:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "!=",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 808,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10267:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 807,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "10259:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 806,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "10259:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 809,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10259:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "10232:37:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a2047656f44494420746f2062652072656d6f76656420617320706172656e7420646f6573206e6f74206578697374",
- "id": 811,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10271:62:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_64e6913217981af21a3600f4e8d0d455b10cb50ec24445db6949f4566f751285",
- "typeString": "literal_string \"SpatialAssets: GeoDID to be removed as parent does not exist\""
- },
- "value": "SpatialAssets: GeoDID to be removed as parent does not exist"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_64e6913217981af21a3600f4e8d0d455b10cb50ec24445db6949f4566f751285",
- "typeString": "literal_string \"SpatialAssets: GeoDID to be removed as parent does not exist\""
- }
- ],
- "id": 802,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "10224:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 812,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10224:110:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 813,
- "nodeType": "ExpressionStatement",
- "src": "10224:110:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 815,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "10352:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 817,
- "indexExpression": {
- "argumentTypes": null,
- "id": 816,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 778,
- "src": "10363:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "10352:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a2047656f44494420646f6573206e6f742068617665206120706172656e7420746f2072656d6f7665",
- "id": 818,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10374:56:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_2ab9bcfb707615a94d108c25ede9d65af23320dbf20a245340508dfbee304ef0",
- "typeString": "literal_string \"SpatialAssets: GeoDID does not have a parent to remove\""
- },
- "value": "SpatialAssets: GeoDID does not have a parent to remove"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_2ab9bcfb707615a94d108c25ede9d65af23320dbf20a245340508dfbee304ef0",
- "typeString": "literal_string \"SpatialAssets: GeoDID does not have a parent to remove\""
- }
- ],
- "id": 814,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "10344:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 819,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10344:87:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 820,
- "nodeType": "ExpressionStatement",
- "src": "10344:87:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 825,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 821,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "10442:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 823,
- "indexExpression": {
- "argumentTypes": null,
- "id": 822,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 778,
- "src": "10453:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "10442:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "66616c7365",
- "id": 824,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10465:5:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "false"
- },
- "src": "10442:28:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 826,
- "nodeType": "ExpressionStatement",
- "src": "10442:28:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 831,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 827,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "10480:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 829,
- "indexExpression": {
- "argumentTypes": null,
- "id": 828,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 778,
- "src": "10486:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "10480:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "id": 830,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 778,
- "src": "10498:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "src": "10480:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 832,
- "nodeType": "ExpressionStatement",
- "src": "10480:26:1"
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 834,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 778,
- "src": "10544:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 835,
- "name": "parentGeoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 780,
- "src": "10554:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 833,
- "name": "ParentRemoved",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 106,
- "src": "10530:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 836,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10530:39:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 837,
- "nodeType": "EmitStatement",
- "src": "10525:44:1"
- }
- ]
- },
- "documentation": {
- "id": 776,
- "nodeType": "StructuredDocumentation",
- "src": "9796:122:1",
- "text": " @dev Removes a parent GeoDID from an already existent geoDID\n Emits a {ParentAdded} event."
- },
- "functionSelector": "7c1c6c27",
- "id": 839,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "removeParentGeoDID",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 781,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 778,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 839,
- "src": "9951:16:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 777,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "9951:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 780,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 839,
- "src": "9969:22:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 779,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "9969:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "9950:42:1"
- },
- "returnParameters": {
- "id": 782,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "10000:0:1"
- },
- "scope": 1073,
- "src": "9923:653:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 980,
- "nodeType": "Block",
- "src": "10732:1164:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 854,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 849,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "10763:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 851,
- "indexExpression": {
- "argumentTypes": null,
- "id": 850,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "10771:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "10763:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "==",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [],
- "expression": {
- "argumentTypes": [],
- "id": 852,
- "name": "_msgSender",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1666,
- "src": "10784:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
- "typeString": "function () view returns (address payable)"
- }
- },
- "id": 853,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10784:12:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "10763:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- {
- "argumentTypes": null,
- "hexValue": "5370617469616c4173736574733a2063616c6c6572206973206e6f74206f776e6572206f6620746865205370617469616c204173736574",
- "id": 855,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10797:57:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_9236a874bf5a6a62bd70349ebeda081a8e8ed50334b7a53f944cd4f8601c274c",
- "typeString": "literal_string \"SpatialAssets: caller is not owner of the Spatial Asset\""
- },
- "value": "SpatialAssets: caller is not owner of the Spatial Asset"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_9236a874bf5a6a62bd70349ebeda081a8e8ed50334b7a53f944cd4f8601c274c",
- "typeString": "literal_string \"SpatialAssets: caller is not owner of the Spatial Asset\""
- }
- ],
- "id": 848,
- "name": "require",
- "nodeType": "Identifier",
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "src": "10742:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
- "typeString": "function (bool,string memory) pure"
- }
- },
- "id": 856,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10742:122:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 857,
- "nodeType": "ExpressionStatement",
- "src": "10742:122:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 865,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 858,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "10874:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 860,
- "indexExpression": {
- "argumentTypes": null,
- "id": 859,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "10882:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "10874:17:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 863,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10902:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 862,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "10894:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 861,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "10894:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 864,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "10894:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "10874:30:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "id": 866,
- "nodeType": "ExpressionStatement",
- "src": "10874:30:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 871,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 867,
- "name": "_externalStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 165,
- "src": "10914:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 869,
- "indexExpression": {
- "argumentTypes": null,
- "id": 868,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "10931:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "10914:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "",
- "id": 870,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10943:2:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
- "typeString": "literal_string \"\""
- },
- "value": ""
- },
- "src": "10914:31:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 872,
- "nodeType": "ExpressionStatement",
- "src": "10914:31:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 877,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 873,
- "name": "_cids",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 149,
- "src": "10955:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 875,
- "indexExpression": {
- "argumentTypes": null,
- "id": 874,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "10961:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "10955:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "",
- "id": 876,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "10973:2:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
- "typeString": "literal_string \"\""
- },
- "value": ""
- },
- "src": "10955:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 878,
- "nodeType": "ExpressionStatement",
- "src": "10955:20:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 883,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 879,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "10985:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 881,
- "indexExpression": {
- "argumentTypes": null,
- "id": 880,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "10996:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "10985:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "66616c7365",
- "id": 882,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "11008:5:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "false"
- },
- "src": "10985:28:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 884,
- "nodeType": "ExpressionStatement",
- "src": "10985:28:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 889,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 885,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "11023:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 887,
- "indexExpression": {
- "argumentTypes": null,
- "id": 886,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "11029:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "11023:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "",
- "id": 888,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "string",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "11041:2:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
- "typeString": "literal_string \"\""
- },
- "value": ""
- },
- "src": "11023:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 890,
- "nodeType": "ExpressionStatement",
- "src": "11023:20:1"
- },
- {
- "assignments": [
- 892
- ],
- "declarations": [
- {
- "constant": false,
- "id": 892,
- "mutability": "mutable",
- "name": "childrensLen",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 980,
- "src": "11054:20:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "typeName": {
- "id": 891,
- "name": "uint256",
- "nodeType": "ElementaryTypeName",
- "src": "11054:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 895,
- "initialValue": {
- "argumentTypes": null,
- "expression": {
- "argumentTypes": null,
- "id": 893,
- "name": "childrenToRemove",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 845,
- "src": "11077:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[] memory"
- }
- },
- "id": 894,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "memberName": "length",
- "nodeType": "MemberAccess",
- "referencedDeclaration": null,
- "src": "11077:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "11054:46:1"
- },
- {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 898,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 896,
- "name": "childrensLen",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 892,
- "src": "11115:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": ">",
- "rightExpression": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 897,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "11130:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "src": "11115:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": null,
- "id": 975,
- "nodeType": "IfStatement",
- "src": "11111:730:1",
- "trueBody": {
- "id": 974,
- "nodeType": "Block",
- "src": "11132:709:1",
- "statements": [
- {
- "body": {
- "id": 972,
- "nodeType": "Block",
- "src": "11186:645:1",
- "statements": [
- {
- "assignments": [
- 910
- ],
- "declarations": [
- {
- "constant": false,
- "id": 910,
- "mutability": "mutable",
- "name": "childrenGeoDID",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 972,
- "src": "11204:22:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 909,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "11204:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 914,
- "initialValue": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 911,
- "name": "childrenToRemove",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 845,
- "src": "11229:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[] memory"
- }
- },
- "id": 913,
- "indexExpression": {
- "argumentTypes": null,
- "id": 912,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 900,
- "src": "11246:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "11229:19:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "11204:44:1"
- },
- {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "id": 926,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 922,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 915,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "11270:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 917,
- "indexExpression": {
- "argumentTypes": null,
- "id": 916,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11278:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "11270:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "!=",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 920,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "11305:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 919,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "11297:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 918,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "11297:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 921,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "11297:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "11270:37:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "&&",
- "rightExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 923,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "11311:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 925,
- "indexExpression": {
- "argumentTypes": null,
- "id": 924,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11322:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "11311:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "src": "11270:67:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": {
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "id": 957,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "id": 952,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 945,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "11553:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 947,
- "indexExpression": {
- "argumentTypes": null,
- "id": 946,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11561:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "11553:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "!=",
- "rightExpression": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 950,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "11588:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "id": 949,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "nodeType": "ElementaryTypeNameExpression",
- "src": "11580:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_type$_t_address_$",
- "typeString": "type(address)"
- },
- "typeName": {
- "id": 948,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "11580:7:1",
- "typeDescriptions": {
- "typeIdentifier": null,
- "typeString": null
- }
- }
- },
- "id": 951,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "typeConversion",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "11580:10:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- },
- "src": "11553:37:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "&&",
- "rightExpression": {
- "argumentTypes": null,
- "id": 956,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "UnaryOperation",
- "operator": "!",
- "prefix": true,
- "src": "11594:27:1",
- "subExpression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 953,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "11595:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 955,
- "indexExpression": {
- "argumentTypes": null,
- "id": 954,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11606:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "11595:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "src": "11553:68:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "falseBody": {
- "id": 969,
- "nodeType": "Block",
- "src": "11721:96:1",
- "statements": [
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 965,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "11773:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 966,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11783:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 964,
- "name": "ChildrenErrorNoExistence",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 127,
- "src": "11748:24:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 967,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "11748:50:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 968,
- "nodeType": "EmitStatement",
- "src": "11743:55:1"
- }
- ]
- },
- "id": 970,
- "nodeType": "IfStatement",
- "src": "11549:268:1",
- "trueBody": {
- "id": 963,
- "nodeType": "Block",
- "src": "11622:93:1",
- "statements": [
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 959,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "11671:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 960,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11681:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 958,
- "name": "ChildrenErrorNoParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 120,
- "src": "11649:21:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 961,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "11649:47:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 962,
- "nodeType": "EmitStatement",
- "src": "11644:52:1"
- }
- ]
- }
- },
- "id": 971,
- "nodeType": "IfStatement",
- "src": "11266:551:1",
- "trueBody": {
- "id": 944,
- "nodeType": "Block",
- "src": "11339:203:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "id": 931,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 927,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "11361:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 929,
- "indexExpression": {
- "argumentTypes": null,
- "id": 928,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11372:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "11361:26:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "hexValue": "66616c7365",
- "id": 930,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "bool",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "11390:5:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "value": "false"
- },
- "src": "11361:34:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 932,
- "nodeType": "ExpressionStatement",
- "src": "11361:34:1"
- },
- {
- "expression": {
- "argumentTypes": null,
- "id": 937,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 933,
- "name": "_root",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 161,
- "src": "11417:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 935,
- "indexExpression": {
- "argumentTypes": null,
- "id": 934,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11423:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "nodeType": "IndexAccess",
- "src": "11417:21:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "id": 936,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11441:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "src": "11417:38:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 938,
- "nodeType": "ExpressionStatement",
- "src": "11417:38:1"
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 940,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "11498:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- {
- "argumentTypes": null,
- "id": 941,
- "name": "childrenGeoDID",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 910,
- "src": "11508:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 939,
- "name": "ChildrenRemoved",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 113,
- "src": "11482:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32,bytes32)"
- }
- },
- "id": 942,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "11482:41:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 943,
- "nodeType": "EmitStatement",
- "src": "11477:46:1"
- }
- ]
- }
- }
- ]
- },
- "condition": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "id": 905,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftExpression": {
- "argumentTypes": null,
- "id": 903,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 900,
- "src": "11163:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "nodeType": "BinaryOperation",
- "operator": "<",
- "rightExpression": {
- "argumentTypes": null,
- "id": 904,
- "name": "childrensLen",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 892,
- "src": "11167:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "src": "11163:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "id": 973,
- "initializationExpression": {
- "assignments": [
- 900
- ],
- "declarations": [
- {
- "constant": false,
- "id": 900,
- "mutability": "mutable",
- "name": "j",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 973,
- "src": "11150:9:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "typeName": {
- "id": 899,
- "name": "uint256",
- "nodeType": "ElementaryTypeName",
- "src": "11150:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "id": 902,
- "initialValue": {
- "argumentTypes": null,
- "hexValue": "30",
- "id": 901,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "kind": "number",
- "lValueRequested": false,
- "nodeType": "Literal",
- "src": "11160:1:1",
- "subdenomination": null,
- "typeDescriptions": {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- },
- "value": "0"
- },
- "nodeType": "VariableDeclarationStatement",
- "src": "11150:11:1"
- },
- "loopExpression": {
- "expression": {
- "argumentTypes": null,
- "id": 907,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "UnaryOperation",
- "operator": "++",
- "prefix": false,
- "src": "11181:3:1",
- "subExpression": {
- "argumentTypes": null,
- "id": 906,
- "name": "j",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 900,
- "src": "11181:1:1",
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "typeDescriptions": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- }
- },
- "id": 908,
- "nodeType": "ExpressionStatement",
- "src": "11181:3:1"
- },
- "nodeType": "ForStatement",
- "src": "11146:685:1"
- }
- ]
- }
- },
- {
- "eventCall": {
- "argumentTypes": null,
- "arguments": [
- {
- "argumentTypes": null,
- "id": 977,
- "name": "geoDIDId",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 842,
- "src": "11880:8:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- }
- ],
- "expression": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "id": 976,
- "name": "SpatialAssetDeactivated",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 85,
- "src": "11856:23:1",
- "typeDescriptions": {
- "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
- "typeString": "function (bytes32)"
- }
- },
- "id": 978,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "kind": "functionCall",
- "lValueRequested": false,
- "names": [],
- "nodeType": "FunctionCall",
- "src": "11856:33:1",
- "tryCall": false,
- "typeDescriptions": {
- "typeIdentifier": "t_tuple$__$",
- "typeString": "tuple()"
- }
- },
- "id": 979,
- "nodeType": "EmitStatement",
- "src": "11851:38:1"
- }
- ]
- },
- "documentation": {
- "id": 840,
- "nodeType": "StructuredDocumentation",
- "src": "10582:52:1",
- "text": " @dev De-registers a spatial asset"
- },
- "functionSelector": "0e437b1c",
- "id": 981,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "deactivateSpatialAsset",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 846,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 842,
- "mutability": "mutable",
- "name": "geoDIDId",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 981,
- "src": "10672:16:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 841,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "10672:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- },
- {
- "constant": false,
- "id": 845,
- "mutability": "mutable",
- "name": "childrenToRemove",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 981,
- "src": "10690:33:1",
- "stateVariable": false,
- "storageLocation": "memory",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
- "typeString": "bytes32[]"
- },
- "typeName": {
- "baseType": {
- "id": 843,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "10690:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "id": 844,
- "length": null,
- "nodeType": "ArrayTypeName",
- "src": "10690:9:1",
- "typeDescriptions": {
- "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
- "typeString": "bytes32[]"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "10671:53:1"
- },
- "returnParameters": {
- "id": 847,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "10732:0:1"
- },
- "scope": 1073,
- "src": "10640:1256:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 991,
- "nodeType": "Block",
- "src": "12027:30:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "id": 989,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "leftHandSide": {
- "argumentTypes": null,
- "id": 987,
- "name": "_uri",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 141,
- "src": "12037:4:1",
- "typeDescriptions": {
- "typeIdentifier": "t_string_storage",
- "typeString": "string storage ref"
- }
- },
- "nodeType": "Assignment",
- "operator": "=",
- "rightHandSide": {
- "argumentTypes": null,
- "id": 988,
- "name": "newuri",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 984,
- "src": "12044:6:1",
- "typeDescriptions": {
- "typeIdentifier": "t_string_memory_ptr",
- "typeString": "string memory"
- }
- },
- "src": "12037:13:1",
- "typeDescriptions": {
- "typeIdentifier": "t_string_storage",
- "typeString": "string storage ref"
- }
- },
- "id": 990,
- "nodeType": "ExpressionStatement",
- "src": "12037:13:1"
- }
- ]
- },
- "documentation": {
- "id": 982,
- "nodeType": "StructuredDocumentation",
- "src": "11904:70:1",
- "text": " @dev Sets a new URI for all the spatial asset types"
- },
- "id": 992,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "_setURI",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 985,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 984,
- "mutability": "mutable",
- "name": "newuri",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 992,
- "src": "11996:20:1",
- "stateVariable": false,
- "storageLocation": "memory",
- "typeDescriptions": {
- "typeIdentifier": "t_string_memory_ptr",
- "typeString": "string"
- },
- "typeName": {
- "id": 983,
- "name": "string",
- "nodeType": "ElementaryTypeName",
- "src": "11996:6:1",
- "typeDescriptions": {
- "typeIdentifier": "t_string_storage_ptr",
- "typeString": "string"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "11995:22:1"
- },
- "returnParameters": {
- "id": 986,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "12027:0:1"
- },
- "scope": 1073,
- "src": "11979:78:1",
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "internal"
- },
- {
- "body": {
- "id": 1003,
- "nodeType": "Block",
- "src": "12124:35:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 999,
- "name": "_owners",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 145,
- "src": "12141:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
- "typeString": "mapping(bytes32 => address)"
- }
- },
- "id": 1001,
- "indexExpression": {
- "argumentTypes": null,
- "id": 1000,
- "name": "id",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 994,
- "src": "12149:2:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "12141:11:1",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "functionReturnParameters": 998,
- "id": 1002,
- "nodeType": "Return",
- "src": "12134:18:1"
- }
- ]
- },
- "documentation": null,
- "functionSelector": "1dc2a7b0",
- "id": 1004,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "idToOwner",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 995,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 994,
- "mutability": "mutable",
- "name": "id",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1004,
- "src": "12082:10:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 993,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "12082:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12081:12:1"
- },
- "returnParameters": {
- "id": 998,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 997,
- "mutability": "mutable",
- "name": "",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1004,
- "src": "12115:7:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "typeName": {
- "id": 996,
- "name": "address",
- "nodeType": "ElementaryTypeName",
- "src": "12115:7:1",
- "stateMutability": "nonpayable",
- "typeDescriptions": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12114:9:1"
- },
- "scope": 1073,
- "src": "12063:96:1",
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 1015,
- "nodeType": "Block",
- "src": "12224:33:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 1011,
- "name": "_cids",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 149,
- "src": "12241:5:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 1013,
- "indexExpression": {
- "argumentTypes": null,
- "id": 1012,
- "name": "id",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1006,
- "src": "12247:2:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "12241:9:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "functionReturnParameters": 1010,
- "id": 1014,
- "nodeType": "Return",
- "src": "12234:16:1"
- }
- ]
- },
- "documentation": null,
- "functionSelector": "c66f70cc",
- "id": 1016,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "idToCid",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 1007,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1006,
- "mutability": "mutable",
- "name": "id",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1016,
- "src": "12182:10:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 1005,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "12182:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12181:12:1"
- },
- "returnParameters": {
- "id": 1010,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1009,
- "mutability": "mutable",
- "name": "",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1016,
- "src": "12215:7:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 1008,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "12215:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12214:9:1"
- },
- "scope": 1073,
- "src": "12165:92:1",
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 1027,
- "nodeType": "Block",
- "src": "12327:40:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 1023,
- "name": "_canBeParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 157,
- "src": "12344:12:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 1025,
- "indexExpression": {
- "argumentTypes": null,
- "id": 1024,
- "name": "id",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1018,
- "src": "12357:2:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "12344:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "functionReturnParameters": 1022,
- "id": 1026,
- "nodeType": "Return",
- "src": "12337:23:1"
- }
- ]
- },
- "documentation": null,
- "functionSelector": "0bfa194d",
- "id": 1028,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "idToCanBeParent",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 1019,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1018,
- "mutability": "mutable",
- "name": "id",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1028,
- "src": "12288:10:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 1017,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "12288:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12287:12:1"
- },
- "returnParameters": {
- "id": 1022,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1021,
- "mutability": "mutable",
- "name": "",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1028,
- "src": "12321:4:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "typeName": {
- "id": 1020,
- "name": "bool",
- "nodeType": "ElementaryTypeName",
- "src": "12321:4:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12320:6:1"
- },
- "scope": 1073,
- "src": "12263:104:1",
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 1039,
- "nodeType": "Block",
- "src": "12435:38:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 1035,
- "name": "_hasParent",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 153,
- "src": "12452:10:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 1037,
- "indexExpression": {
- "argumentTypes": null,
- "id": 1036,
- "name": "id",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1030,
- "src": "12463:2:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "12452:14:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "functionReturnParameters": 1034,
- "id": 1038,
- "nodeType": "Return",
- "src": "12445:21:1"
- }
- ]
- },
- "documentation": null,
- "functionSelector": "092e9f25",
- "id": 1040,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "idToHasParent",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 1031,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1030,
- "mutability": "mutable",
- "name": "id",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1040,
- "src": "12396:10:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 1029,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "12396:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12395:12:1"
- },
- "returnParameters": {
- "id": 1034,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1033,
- "mutability": "mutable",
- "name": "",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1040,
- "src": "12429:4:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "typeName": {
- "id": 1032,
- "name": "bool",
- "nodeType": "ElementaryTypeName",
- "src": "12429:4:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12428:6:1"
- },
- "scope": 1073,
- "src": "12373:100:1",
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 1051,
- "nodeType": "Block",
- "src": "12550:44:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 1047,
- "name": "_externalStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 165,
- "src": "12567:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
- "typeString": "mapping(bytes32 => bytes32)"
- }
- },
- "id": 1049,
- "indexExpression": {
- "argumentTypes": null,
- "id": 1048,
- "name": "id",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1042,
- "src": "12584:2:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "12567:20:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "functionReturnParameters": 1046,
- "id": 1050,
- "nodeType": "Return",
- "src": "12560:27:1"
- }
- ]
- },
- "documentation": null,
- "functionSelector": "84f42912",
- "id": 1052,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "idToExternalStorage",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 1043,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1042,
- "mutability": "mutable",
- "name": "id",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1052,
- "src": "12508:10:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 1041,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "12508:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12507:12:1"
- },
- "returnParameters": {
- "id": 1046,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1045,
- "mutability": "mutable",
- "name": "",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1052,
- "src": "12541:7:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 1044,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "12541:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12540:9:1"
- },
- "scope": 1073,
- "src": "12479:115:1",
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 1063,
- "nodeType": "Block",
- "src": "12677:57:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "baseExpression": {
- "argumentTypes": null,
- "id": 1059,
- "name": "_allowedStorages",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 169,
- "src": "12694:16:1",
- "typeDescriptions": {
- "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
- "typeString": "mapping(bytes32 => bool)"
- }
- },
- "id": 1061,
- "indexExpression": {
- "argumentTypes": null,
- "id": 1060,
- "name": "offChainStorage",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 1054,
- "src": "12711:15:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "nodeType": "IndexAccess",
- "src": "12694:33:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "functionReturnParameters": 1058,
- "id": 1062,
- "nodeType": "Return",
- "src": "12687:40:1"
- }
- ]
- },
- "documentation": null,
- "functionSelector": "8d0a9bff",
- "id": 1064,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "allowedStorages",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 1055,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1054,
- "mutability": "mutable",
- "name": "offChainStorage",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1064,
- "src": "12625:23:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "typeName": {
- "id": 1053,
- "name": "bytes32",
- "nodeType": "ElementaryTypeName",
- "src": "12625:7:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12624:25:1"
- },
- "returnParameters": {
- "id": 1058,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1057,
- "mutability": "mutable",
- "name": "",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1064,
- "src": "12671:4:1",
- "stateVariable": false,
- "storageLocation": "default",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "typeName": {
- "id": 1056,
- "name": "bool",
- "nodeType": "ElementaryTypeName",
- "src": "12671:4:1",
- "typeDescriptions": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12670:6:1"
- },
- "scope": 1073,
- "src": "12600:134:1",
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- {
- "body": {
- "id": 1071,
- "nodeType": "Block",
- "src": "12791:28:1",
- "statements": [
- {
- "expression": {
- "argumentTypes": null,
- "id": 1069,
- "name": "_uri",
- "nodeType": "Identifier",
- "overloadedDeclarations": [],
- "referencedDeclaration": 141,
- "src": "12808:4:1",
- "typeDescriptions": {
- "typeIdentifier": "t_string_storage",
- "typeString": "string storage ref"
- }
- },
- "functionReturnParameters": 1068,
- "id": 1070,
- "nodeType": "Return",
- "src": "12801:11:1"
- }
- ]
- },
- "documentation": null,
- "functionSelector": "eac989f8",
- "id": 1072,
- "implemented": true,
- "kind": "function",
- "modifiers": [],
- "name": "uri",
- "nodeType": "FunctionDefinition",
- "overrides": null,
- "parameters": {
- "id": 1065,
- "nodeType": "ParameterList",
- "parameters": [],
- "src": "12752:2:1"
- },
- "returnParameters": {
- "id": 1068,
- "nodeType": "ParameterList",
- "parameters": [
- {
- "constant": false,
- "id": 1067,
- "mutability": "mutable",
- "name": "",
- "nodeType": "VariableDeclaration",
- "overrides": null,
- "scope": 1072,
- "src": "12776:13:1",
- "stateVariable": false,
- "storageLocation": "memory",
- "typeDescriptions": {
- "typeIdentifier": "t_string_memory_ptr",
- "typeString": "string"
- },
- "typeName": {
- "id": 1066,
- "name": "string",
- "nodeType": "ElementaryTypeName",
- "src": "12776:6:1",
- "typeDescriptions": {
- "typeIdentifier": "t_string_storage_ptr",
- "typeString": "string"
- }
- },
- "value": null,
- "visibility": "internal"
- }
- ],
- "src": "12775:15:1"
- },
- "scope": 1073,
- "src": "12740:79:1",
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- }
- ],
- "scope": 1074,
- "src": "539:12282:1"
- }
- ],
- "src": "42:12780:1"
- },
- "legacyAST": {
- "attributes": {
- "absolutePath": "/Users/jaredchilders/Astral/astralprotocol/packages/contracts/contracts/SpatialAssets.sol",
- "exportedSymbols": {
- "SpatialAssets": [
- 1073
- ]
- },
- "license": "APACHE OR MIT"
- },
- "children": [
- {
- "attributes": {
- "literals": [
- "solidity",
- "^",
- "0.6",
- ".0"
- ]
- },
- "id": 58,
- "name": "PragmaDirective",
- "src": "42:23:1"
- },
- {
- "attributes": {
- "SourceUnit": 1360,
- "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol",
- "file": "@openzeppelin/contracts/access/AccessControl.sol",
- "scope": 1074,
- "symbolAliases": [
- null
- ],
- "unitAlias": ""
- },
- "id": 59,
- "name": "ImportDirective",
- "src": "67:58:1"
- },
- {
- "attributes": {
- "SourceUnit": 1077,
- "absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
- "file": "@openzeppelin/contracts/GSN/Context.sol",
- "scope": 1074,
- "symbolAliases": [
- null
- ],
- "unitAlias": ""
- },
- "id": 60,
- "name": "ImportDirective",
- "src": "126:49:1"
- },
- {
- "attributes": {
- "abstract": false,
- "contractDependencies": [
- 1359,
- 1678
- ],
- "contractKind": "contract",
- "fullyImplemented": true,
- "linearizedBaseContracts": [
- 1073,
- 1359,
- 1678
- ],
- "name": "SpatialAssets",
- "scope": 1074
- },
- "children": [
- {
- "attributes": {
- "text": " @dev {SpatialAssets} registry\n This contract uses {AccessControl} to lock permissioned functions using the\n different roles - head to its documentation for details.\n The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant\n 'DATA_SUPPLIER' roles to other accounts"
- },
- "id": 61,
- "name": "StructuredDocumentation",
- "src": "177:361:1"
- },
- {
- "attributes": {
- "arguments": null
- },
- "children": [
- {
- "attributes": {
- "contractScope": null,
- "name": "Context",
- "referencedDeclaration": 1678,
- "type": "contract Context"
- },
- "id": 62,
- "name": "UserDefinedTypeName",
- "src": "565:7:1"
- }
- ],
- "id": 63,
- "name": "InheritanceSpecifier",
- "src": "565:7:1"
- },
- {
- "attributes": {
- "arguments": null
- },
- "children": [
- {
- "attributes": {
- "contractScope": null,
- "name": "AccessControl",
- "referencedDeclaration": 1359,
- "type": "contract AccessControl"
- },
- "id": 64,
- "name": "UserDefinedTypeName",
- "src": "574:13:1"
- }
- ],
- "id": 65,
- "name": "InheritanceSpecifier",
- "src": "574:13:1"
- },
- {
- "attributes": {
- "anonymous": false,
- "name": "SpatialAssetRegistered"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Emitted when Spatial Assets of id `id` are transferred to `to``."
- },
- "id": 66,
- "name": "StructuredDocumentation",
- "src": "594:88:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "to",
- "overrides": null,
- "scope": 80,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "address",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "stateMutability": "nonpayable",
- "type": "address"
- },
- "id": 67,
- "name": "ElementaryTypeName",
- "src": "716:7:1"
- }
- ],
- "id": 68,
- "name": "VariableDeclaration",
- "src": "716:18:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 80,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 69,
- "name": "ElementaryTypeName",
- "src": "736:7:1"
- }
- ],
- "id": 70,
- "name": "VariableDeclaration",
- "src": "736:24:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "cid",
- "overrides": null,
- "scope": 80,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 71,
- "name": "ElementaryTypeName",
- "src": "762:7:1"
- }
- ],
- "id": 72,
- "name": "VariableDeclaration",
- "src": "762:19:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": false,
- "mutability": "mutable",
- "name": "offChainStorage",
- "overrides": null,
- "scope": 80,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 73,
- "name": "ElementaryTypeName",
- "src": "783:7:1"
- }
- ],
- "id": 74,
- "name": "VariableDeclaration",
- "src": "783:23:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": false,
- "mutability": "mutable",
- "name": "root",
- "overrides": null,
- "scope": 80,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 75,
- "name": "ElementaryTypeName",
- "src": "808:7:1"
- }
- ],
- "id": 76,
- "name": "VariableDeclaration",
- "src": "808:12:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": false,
- "mutability": "mutable",
- "name": "canBeParent",
- "overrides": null,
- "scope": 80,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bool",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bool",
- "type": "bool"
- },
- "id": 77,
- "name": "ElementaryTypeName",
- "src": "822:4:1"
- }
- ],
- "id": 78,
- "name": "VariableDeclaration",
- "src": "822:16:1"
- }
- ],
- "id": 79,
- "name": "ParameterList",
- "src": "715:124:1"
- }
- ],
- "id": 80,
- "name": "EventDefinition",
- "src": "687:153:1"
- },
- {
- "attributes": {
- "anonymous": false,
- "name": "SpatialAssetDeactivated"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Emitted when Spatial Assets of id `id` are deactivated."
- },
- "id": 81,
- "name": "StructuredDocumentation",
- "src": "846:79:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 85,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 82,
- "name": "ElementaryTypeName",
- "src": "960:7:1"
- }
- ],
- "id": 83,
- "name": "VariableDeclaration",
- "src": "960:24:1"
- }
- ],
- "id": 84,
- "name": "ParameterList",
- "src": "959:26:1"
- }
- ],
- "id": 85,
- "name": "EventDefinition",
- "src": "930:56:1"
- },
- {
- "attributes": {
- "anonymous": false,
- "name": "ParentAdded"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Emitted when a parent geodid is added to a node"
- },
- "id": 86,
- "name": "StructuredDocumentation",
- "src": "992:71:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 92,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 87,
- "name": "ElementaryTypeName",
- "src": "1086:7:1"
- }
- ],
- "id": 88,
- "name": "VariableDeclaration",
- "src": "1086:24:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "overrides": null,
- "scope": 92,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 89,
- "name": "ElementaryTypeName",
- "src": "1112:7:1"
- }
- ],
- "id": 90,
- "name": "VariableDeclaration",
- "src": "1112:30:1"
- }
- ],
- "id": 91,
- "name": "ParameterList",
- "src": "1085:58:1"
- }
- ],
- "id": 92,
- "name": "EventDefinition",
- "src": "1068:76:1"
- },
- {
- "attributes": {
- "anonymous": false,
- "name": "ChildrenAdded"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Emitted when a children geodid is added to a node"
- },
- "id": 93,
- "name": "StructuredDocumentation",
- "src": "1150:73:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 99,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 94,
- "name": "ElementaryTypeName",
- "src": "1248:7:1"
- }
- ],
- "id": 95,
- "name": "VariableDeclaration",
- "src": "1248:24:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "overrides": null,
- "scope": 99,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 96,
- "name": "ElementaryTypeName",
- "src": "1274:7:1"
- }
- ],
- "id": 97,
- "name": "VariableDeclaration",
- "src": "1274:32:1"
- }
- ],
- "id": 98,
- "name": "ParameterList",
- "src": "1247:60:1"
- }
- ],
- "id": 99,
- "name": "EventDefinition",
- "src": "1228:80:1"
- },
- {
- "attributes": {
- "anonymous": false,
- "name": "ParentRemoved"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Emitted when a parent geodid is removed from a node"
- },
- "id": 100,
- "name": "StructuredDocumentation",
- "src": "1314:75:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 106,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 101,
- "name": "ElementaryTypeName",
- "src": "1414:7:1"
- }
- ],
- "id": 102,
- "name": "VariableDeclaration",
- "src": "1414:24:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "overrides": null,
- "scope": 106,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 103,
- "name": "ElementaryTypeName",
- "src": "1440:7:1"
- }
- ],
- "id": 104,
- "name": "VariableDeclaration",
- "src": "1440:30:1"
- }
- ],
- "id": 105,
- "name": "ParameterList",
- "src": "1413:58:1"
- }
- ],
- "id": 106,
- "name": "EventDefinition",
- "src": "1394:78:1"
- },
- {
- "attributes": {
- "anonymous": false,
- "name": "ChildrenRemoved"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Emitted when a children geodid is removed from a node"
- },
- "id": 107,
- "name": "StructuredDocumentation",
- "src": "1478:77:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 113,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 108,
- "name": "ElementaryTypeName",
- "src": "1582:7:1"
- }
- ],
- "id": 109,
- "name": "VariableDeclaration",
- "src": "1582:24:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "overrides": null,
- "scope": 113,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 110,
- "name": "ElementaryTypeName",
- "src": "1608:7:1"
- }
- ],
- "id": 111,
- "name": "VariableDeclaration",
- "src": "1608:32:1"
- }
- ],
- "id": 112,
- "name": "ParameterList",
- "src": "1581:60:1"
- }
- ],
- "id": 113,
- "name": "EventDefinition",
- "src": "1560:82:1"
- },
- {
- "attributes": {
- "anonymous": false,
- "name": "ChildrenErrorNoParent"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Emitted when a children geodid does not have a parent when trying to remove it from a parent"
- },
- "id": 114,
- "name": "StructuredDocumentation",
- "src": "1653:116:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 120,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 115,
- "name": "ElementaryTypeName",
- "src": "1802:7:1"
- }
- ],
- "id": 116,
- "name": "VariableDeclaration",
- "src": "1802:24:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "overrides": null,
- "scope": 120,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 117,
- "name": "ElementaryTypeName",
- "src": "1828:7:1"
- }
- ],
- "id": 118,
- "name": "VariableDeclaration",
- "src": "1828:32:1"
- }
- ],
- "id": 119,
- "name": "ParameterList",
- "src": "1801:60:1"
- }
- ],
- "id": 120,
- "name": "EventDefinition",
- "src": "1774:88:1"
- },
- {
- "attributes": {
- "anonymous": false,
- "name": "ChildrenErrorNoExistence"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Emitted when a children geodid does not exist"
- },
- "id": 121,
- "name": "StructuredDocumentation",
- "src": "1873:69:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 127,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 122,
- "name": "ElementaryTypeName",
- "src": "1978:7:1"
- }
- ],
- "id": 123,
- "name": "VariableDeclaration",
- "src": "1978:24:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "overrides": null,
- "scope": 127,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 124,
- "name": "ElementaryTypeName",
- "src": "2004:7:1"
- }
- ],
- "id": 125,
- "name": "VariableDeclaration",
- "src": "2004:32:1"
- }
- ],
- "id": 126,
- "name": "ParameterList",
- "src": "1977:60:1"
- }
- ],
- "id": 127,
- "name": "EventDefinition",
- "src": "1947:91:1"
- },
- {
- "attributes": {
- "anonymous": false,
- "name": "ChildrenErrorHasParent"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Emitted when a children geodid already has a parent but shouldn't have"
- },
- "id": 128,
- "name": "StructuredDocumentation",
- "src": "2049:94:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 134,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 129,
- "name": "ElementaryTypeName",
- "src": "2177:7:1"
- }
- ],
- "id": 130,
- "name": "VariableDeclaration",
- "src": "2177:24:1"
- },
- {
- "attributes": {
- "constant": false,
- "indexed": true,
- "mutability": "mutable",
- "name": "childrenGeoDIDId",
- "overrides": null,
- "scope": 134,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 131,
- "name": "ElementaryTypeName",
- "src": "2203:7:1"
- }
- ],
- "id": 132,
- "name": "VariableDeclaration",
- "src": "2203:32:1"
- }
- ],
- "id": 133,
- "name": "ParameterList",
- "src": "2176:60:1"
- }
- ],
- "id": 134,
- "name": "EventDefinition",
- "src": "2148:89:1"
- },
- {
- "attributes": {
- "constant": true,
- "functionSelector": "9969879b",
- "mutability": "constant",
- "name": "DATA_SUPPLIER",
- "overrides": null,
- "scope": 1073,
- "stateVariable": true,
- "storageLocation": "default",
- "type": "bytes32",
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 135,
- "name": "ElementaryTypeName",
- "src": "2244:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bytes32",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_stringliteral_b90ec3213bc54b34738ca7ad785b7e6275742931f3ddfa147171c27090643f3f",
- "typeString": "literal_string \"DATA_SUPPLIER\""
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": -8,
- "type": "function (bytes memory) pure returns (bytes32)",
- "value": "keccak256"
- },
- "id": 136,
- "name": "Identifier",
- "src": "2284:9:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "444154415f535550504c494552",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"DATA_SUPPLIER\"",
- "value": "DATA_SUPPLIER"
- },
- "id": 137,
- "name": "Literal",
- "src": "2294:15:1"
- }
- ],
- "id": 138,
- "name": "FunctionCall",
- "src": "2284:26:1"
- }
- ],
- "id": 139,
- "name": "VariableDeclaration",
- "src": "2244:66:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "_uri",
- "overrides": null,
- "scope": 1073,
- "stateVariable": true,
- "storageLocation": "default",
- "type": "string",
- "value": null,
- "visibility": "private"
- },
- "children": [
- {
- "attributes": {
- "name": "string",
- "type": "string"
- },
- "id": 140,
- "name": "ElementaryTypeName",
- "src": "2317:6:1"
- }
- ],
- "id": 141,
- "name": "VariableDeclaration",
- "src": "2317:19:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "_owners",
- "overrides": null,
- "scope": 1073,
- "stateVariable": true,
- "storageLocation": "default",
- "type": "mapping(bytes32 => address)",
- "value": null,
- "visibility": "private"
- },
- "children": [
- {
- "attributes": {
- "type": "mapping(bytes32 => address)"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 142,
- "name": "ElementaryTypeName",
- "src": "2395:7:1"
- },
- {
- "attributes": {
- "name": "address",
- "stateMutability": "nonpayable",
- "type": "address"
- },
- "id": 143,
- "name": "ElementaryTypeName",
- "src": "2406:7:1"
- }
- ],
- "id": 144,
- "name": "Mapping",
- "src": "2386:28:1"
- }
- ],
- "id": 145,
- "name": "VariableDeclaration",
- "src": "2386:44:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "_cids",
- "overrides": null,
- "scope": 1073,
- "stateVariable": true,
- "storageLocation": "default",
- "type": "mapping(bytes32 => bytes32)",
- "value": null,
- "visibility": "private"
- },
- "children": [
- {
- "attributes": {
- "type": "mapping(bytes32 => bytes32)"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 146,
- "name": "ElementaryTypeName",
- "src": "2486:7:1"
- },
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 147,
- "name": "ElementaryTypeName",
- "src": "2497:7:1"
- }
- ],
- "id": 148,
- "name": "Mapping",
- "src": "2477:28:1"
- }
- ],
- "id": 149,
- "name": "VariableDeclaration",
- "src": "2477:42:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "_hasParent",
- "overrides": null,
- "scope": 1073,
- "stateVariable": true,
- "storageLocation": "default",
- "type": "mapping(bytes32 => bool)",
- "value": null,
- "visibility": "private"
- },
- "children": [
- {
- "attributes": {
- "type": "mapping(bytes32 => bool)"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 150,
- "name": "ElementaryTypeName",
- "src": "2585:7:1"
- },
- {
- "attributes": {
- "name": "bool",
- "type": "bool"
- },
- "id": 151,
- "name": "ElementaryTypeName",
- "src": "2596:4:1"
- }
- ],
- "id": 152,
- "name": "Mapping",
- "src": "2576:25:1"
- }
- ],
- "id": 153,
- "name": "VariableDeclaration",
- "src": "2576:44:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "_canBeParent",
- "overrides": null,
- "scope": 1073,
- "stateVariable": true,
- "storageLocation": "default",
- "type": "mapping(bytes32 => bool)",
- "value": null,
- "visibility": "private"
- },
- "children": [
- {
- "attributes": {
- "type": "mapping(bytes32 => bool)"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 154,
- "name": "ElementaryTypeName",
- "src": "2684:7:1"
- },
- {
- "attributes": {
- "name": "bool",
- "type": "bool"
- },
- "id": 155,
- "name": "ElementaryTypeName",
- "src": "2695:4:1"
- }
- ],
- "id": 156,
- "name": "Mapping",
- "src": "2675:25:1"
- }
- ],
- "id": 157,
- "name": "VariableDeclaration",
- "src": "2675:46:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "_root",
- "overrides": null,
- "scope": 1073,
- "stateVariable": true,
- "storageLocation": "default",
- "type": "mapping(bytes32 => bytes32)",
- "value": null,
- "visibility": "private"
- },
- "children": [
- {
- "attributes": {
- "type": "mapping(bytes32 => bytes32)"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 158,
- "name": "ElementaryTypeName",
- "src": "2785:7:1"
- },
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 159,
- "name": "ElementaryTypeName",
- "src": "2796:7:1"
- }
- ],
- "id": 160,
- "name": "Mapping",
- "src": "2776:28:1"
- }
- ],
- "id": 161,
- "name": "VariableDeclaration",
- "src": "2776:42:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "_externalStorage",
- "overrides": null,
- "scope": 1073,
- "stateVariable": true,
- "storageLocation": "default",
- "type": "mapping(bytes32 => bytes32)",
- "value": null,
- "visibility": "private"
- },
- "children": [
- {
- "attributes": {
- "type": "mapping(bytes32 => bytes32)"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 162,
- "name": "ElementaryTypeName",
- "src": "2891:7:1"
- },
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 163,
- "name": "ElementaryTypeName",
- "src": "2902:7:1"
- }
- ],
- "id": 164,
- "name": "Mapping",
- "src": "2882:28:1"
- }
- ],
- "id": 165,
- "name": "VariableDeclaration",
- "src": "2882:53:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "_allowedStorages",
- "overrides": null,
- "scope": 1073,
- "stateVariable": true,
- "storageLocation": "default",
- "type": "mapping(bytes32 => bool)",
- "value": null,
- "visibility": "private"
- },
- "children": [
- {
- "attributes": {
- "type": "mapping(bytes32 => bool)"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 166,
- "name": "ElementaryTypeName",
- "src": "2995:7:1"
- },
- {
- "attributes": {
- "name": "bool",
- "type": "bool"
- },
- "id": 167,
- "name": "ElementaryTypeName",
- "src": "3006:4:1"
- }
- ],
- "id": 168,
- "name": "Mapping",
- "src": "2986:25:1"
- }
- ],
- "id": 169,
- "name": "VariableDeclaration",
- "src": "2986:50:1"
- },
- {
- "attributes": {
- "implemented": true,
- "isConstructor": true,
- "kind": "constructor",
- "modifiers": [
- null
- ],
- "name": "",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that\n deploys the contract."
- },
- "id": 170,
- "name": "StructuredDocumentation",
- "src": "3044:117:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "uri",
- "overrides": null,
- "scope": 192,
- "stateVariable": false,
- "storageLocation": "memory",
- "type": "string",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "string",
- "type": "string"
- },
- "id": 171,
- "name": "ElementaryTypeName",
- "src": "3178:6:1"
- }
- ],
- "id": 172,
- "name": "VariableDeclaration",
- "src": "3178:17:1"
- }
- ],
- "id": 173,
- "name": "ParameterList",
- "src": "3177:19:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 174,
- "name": "ParameterList",
- "src": "3204:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_string_memory_ptr",
- "typeString": "string memory"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 992,
- "type": "function (string memory)",
- "value": "_setURI"
- },
- "id": 175,
- "name": "Identifier",
- "src": "3214:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 172,
- "type": "string memory",
- "value": "uri"
- },
- "id": 176,
- "name": "Identifier",
- "src": "3222:3:1"
- }
- ],
- "id": 177,
- "name": "FunctionCall",
- "src": "3214:12:1"
- }
- ],
- "id": 178,
- "name": "ExpressionStatement",
- "src": "3214:12:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1285,
- "type": "function (bytes32,address)",
- "value": "_setupRole"
- },
- "id": 179,
- "name": "Identifier",
- "src": "3236:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1102,
- "type": "bytes32",
- "value": "DEFAULT_ADMIN_ROLE"
- },
- "id": 180,
- "name": "Identifier",
- "src": "3247:18:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 181,
- "name": "Identifier",
- "src": "3267:10:1"
- }
- ],
- "id": 182,
- "name": "FunctionCall",
- "src": "3267:12:1"
- }
- ],
- "id": 183,
- "name": "FunctionCall",
- "src": "3236:44:1"
- }
- ],
- "id": 184,
- "name": "ExpressionStatement",
- "src": "3236:44:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1285,
- "type": "function (bytes32,address)",
- "value": "_setupRole"
- },
- "id": 185,
- "name": "Identifier",
- "src": "3290:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 139,
- "type": "bytes32",
- "value": "DATA_SUPPLIER"
- },
- "id": 186,
- "name": "Identifier",
- "src": "3301:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 187,
- "name": "Identifier",
- "src": "3316:10:1"
- }
- ],
- "id": 188,
- "name": "FunctionCall",
- "src": "3316:12:1"
- }
- ],
- "id": 189,
- "name": "FunctionCall",
- "src": "3290:39:1"
- }
- ],
- "id": 190,
- "name": "ExpressionStatement",
- "src": "3290:39:1"
- }
- ],
- "id": 191,
- "name": "Block",
- "src": "3204:133:1"
- }
- ],
- "id": 192,
- "name": "FunctionDefinition",
- "src": "3166:171:1"
- },
- {
- "attributes": {
- "functionSelector": "c44e96a0",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "registerRole",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Registers a new user with the ability to register a spatial asset."
- },
- "id": 193,
- "name": "StructuredDocumentation",
- "src": "3343:90:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 194,
- "name": "ParameterList",
- "src": "3459:2:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 195,
- "name": "ParameterList",
- "src": "3469:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_ad6e74c880a0a8789cc0999bb5807e042142eac3ba8cd1a8f038e7ac1c7b18f3",
- "typeString": "literal_string \"SpatialAssets: must not have a DATA_SUPPLIER role yet\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 196,
- "name": "Identifier",
- "src": "3479:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!",
- "prefix": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bool",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1148,
- "type": "function (bytes32,address) view returns (bool)",
- "value": "hasRole"
- },
- "id": 197,
- "name": "Identifier",
- "src": "3488:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 139,
- "type": "bytes32",
- "value": "DATA_SUPPLIER"
- },
- "id": 198,
- "name": "Identifier",
- "src": "3496:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 199,
- "name": "Identifier",
- "src": "3511:10:1"
- }
- ],
- "id": 200,
- "name": "FunctionCall",
- "src": "3511:12:1"
- }
- ],
- "id": 201,
- "name": "FunctionCall",
- "src": "3488:36:1"
- }
- ],
- "id": 202,
- "name": "UnaryOperation",
- "src": "3487:37:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206d757374206e6f742068617665206120444154415f535550504c49455220726f6c6520796574",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: must not have a DATA_SUPPLIER role yet\"",
- "value": "SpatialAssets: must not have a DATA_SUPPLIER role yet"
- },
- "id": 203,
- "name": "Literal",
- "src": "3526:55:1"
- }
- ],
- "id": 204,
- "name": "FunctionCall",
- "src": "3479:103:1"
- }
- ],
- "id": 205,
- "name": "ExpressionStatement",
- "src": "3479:103:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1285,
- "type": "function (bytes32,address)",
- "value": "_setupRole"
- },
- "id": 206,
- "name": "Identifier",
- "src": "3592:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 139,
- "type": "bytes32",
- "value": "DATA_SUPPLIER"
- },
- "id": 207,
- "name": "Identifier",
- "src": "3603:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 208,
- "name": "Identifier",
- "src": "3618:10:1"
- }
- ],
- "id": 209,
- "name": "FunctionCall",
- "src": "3618:12:1"
- }
- ],
- "id": 210,
- "name": "FunctionCall",
- "src": "3592:39:1"
- }
- ],
- "id": 211,
- "name": "ExpressionStatement",
- "src": "3592:39:1"
- }
- ],
- "id": 212,
- "name": "Block",
- "src": "3469:169:1"
- }
- ],
- "id": 213,
- "name": "FunctionDefinition",
- "src": "3438:200:1"
- },
- {
- "attributes": {
- "functionSelector": "6e7a6f4b",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "enableStorage",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Registers a new storage that can accept GeoDID document creation"
- },
- "id": 214,
- "name": "StructuredDocumentation",
- "src": "3644:88:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "offChainStorage",
- "overrides": null,
- "scope": 244,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 215,
- "name": "ElementaryTypeName",
- "src": "3760:7:1"
- }
- ],
- "id": 216,
- "name": "VariableDeclaration",
- "src": "3760:23:1"
- }
- ],
- "id": 217,
- "name": "ParameterList",
- "src": "3759:25:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 218,
- "name": "ParameterList",
- "src": "3792:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f",
- "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 219,
- "name": "Identifier",
- "src": "3802:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bool",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1148,
- "type": "function (bytes32,address) view returns (bool)",
- "value": "hasRole"
- },
- "id": 220,
- "name": "Identifier",
- "src": "3810:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1102,
- "type": "bytes32",
- "value": "DEFAULT_ADMIN_ROLE"
- },
- "id": 221,
- "name": "Identifier",
- "src": "3818:18:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 222,
- "name": "Identifier",
- "src": "3838:10:1"
- }
- ],
- "id": 223,
- "name": "FunctionCall",
- "src": "3838:12:1"
- }
- ],
- "id": 224,
- "name": "FunctionCall",
- "src": "3810:41:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f7261676573",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"",
- "value": "SpatialAssets: must have admin role to edit allowed offchain storages"
- },
- "id": 225,
- "name": "Literal",
- "src": "3853:71:1"
- }
- ],
- "id": 226,
- "name": "FunctionCall",
- "src": "3802:123:1"
- }
- ],
- "id": 227,
- "name": "ExpressionStatement",
- "src": "3802:123:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_8fee17d368687c80e4deac3f133d29733581706ec6213898eb6c5db439fb45d7",
- "typeString": "literal_string \"SpatialAssets: storage must not be active yet\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 228,
- "name": "Identifier",
- "src": "3935:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 169,
- "type": "mapping(bytes32 => bool)",
- "value": "_allowedStorages"
- },
- "id": 229,
- "name": "Identifier",
- "src": "3943:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 216,
- "type": "bytes32",
- "value": "offChainStorage"
- },
- "id": 230,
- "name": "Identifier",
- "src": "3960:15:1"
- }
- ],
- "id": 231,
- "name": "IndexAccess",
- "src": "3943:33:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "66616c7365",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "false"
- },
- "id": 232,
- "name": "Literal",
- "src": "3979:5:1"
- }
- ],
- "id": 233,
- "name": "BinaryOperation",
- "src": "3943:41:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a2073746f72616765206d757374206e6f742062652061637469766520796574",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: storage must not be active yet\"",
- "value": "SpatialAssets: storage must not be active yet"
- },
- "id": 234,
- "name": "Literal",
- "src": "3986:47:1"
- }
- ],
- "id": 235,
- "name": "FunctionCall",
- "src": "3935:99:1"
- }
- ],
- "id": 236,
- "name": "ExpressionStatement",
- "src": "3935:99:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 169,
- "type": "mapping(bytes32 => bool)",
- "value": "_allowedStorages"
- },
- "id": 237,
- "name": "Identifier",
- "src": "4044:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 216,
- "type": "bytes32",
- "value": "offChainStorage"
- },
- "id": 238,
- "name": "Identifier",
- "src": "4061:15:1"
- }
- ],
- "id": 239,
- "name": "IndexAccess",
- "src": "4044:33:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "74727565",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "true"
- },
- "id": 240,
- "name": "Literal",
- "src": "4080:4:1"
- }
- ],
- "id": 241,
- "name": "Assignment",
- "src": "4044:40:1"
- }
- ],
- "id": 242,
- "name": "ExpressionStatement",
- "src": "4044:40:1"
- }
- ],
- "id": 243,
- "name": "Block",
- "src": "3792:299:1"
- }
- ],
- "id": 244,
- "name": "FunctionDefinition",
- "src": "3737:354:1"
- },
- {
- "attributes": {
- "functionSelector": "fd52c0d5",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "disableStorage",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Disables an existing storage"
- },
- "id": 245,
- "name": "StructuredDocumentation",
- "src": "4097:52:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "offChainStorage",
- "overrides": null,
- "scope": 266,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 246,
- "name": "ElementaryTypeName",
- "src": "4178:7:1"
- }
- ],
- "id": 247,
- "name": "VariableDeclaration",
- "src": "4178:23:1"
- }
- ],
- "id": 248,
- "name": "ParameterList",
- "src": "4177:25:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 249,
- "name": "ParameterList",
- "src": "4210:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_217cfcce26face481fde3359afaf9f2136dc9bfd5af0a63745f2341a24673a9f",
- "typeString": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 250,
- "name": "Identifier",
- "src": "4220:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bool",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1148,
- "type": "function (bytes32,address) view returns (bool)",
- "value": "hasRole"
- },
- "id": 251,
- "name": "Identifier",
- "src": "4228:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1102,
- "type": "bytes32",
- "value": "DEFAULT_ADMIN_ROLE"
- },
- "id": 252,
- "name": "Identifier",
- "src": "4236:18:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 253,
- "name": "Identifier",
- "src": "4256:10:1"
- }
- ],
- "id": 254,
- "name": "FunctionCall",
- "src": "4256:12:1"
- }
- ],
- "id": 255,
- "name": "FunctionCall",
- "src": "4228:41:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206d75737420686176652061646d696e20726f6c6520746f206564697420616c6c6f776564206f6666636861696e2073746f7261676573",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: must have admin role to edit allowed offchain storages\"",
- "value": "SpatialAssets: must have admin role to edit allowed offchain storages"
- },
- "id": 256,
- "name": "Literal",
- "src": "4271:71:1"
- }
- ],
- "id": 257,
- "name": "FunctionCall",
- "src": "4220:123:1"
- }
- ],
- "id": 258,
- "name": "ExpressionStatement",
- "src": "4220:123:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 169,
- "type": "mapping(bytes32 => bool)",
- "value": "_allowedStorages"
- },
- "id": 259,
- "name": "Identifier",
- "src": "4353:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 247,
- "type": "bytes32",
- "value": "offChainStorage"
- },
- "id": 260,
- "name": "Identifier",
- "src": "4370:15:1"
- }
- ],
- "id": 261,
- "name": "IndexAccess",
- "src": "4353:33:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "66616c7365",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "false"
- },
- "id": 262,
- "name": "Literal",
- "src": "4389:5:1"
- }
- ],
- "id": 263,
- "name": "Assignment",
- "src": "4353:41:1"
- }
- ],
- "id": 264,
- "name": "ExpressionStatement",
- "src": "4353:41:1"
- }
- ],
- "id": 265,
- "name": "Block",
- "src": "4210:191:1"
- }
- ],
- "id": 266,
- "name": "FunctionDefinition",
- "src": "4154:247:1"
- },
- {
- "attributes": {
- "functionSelector": "b22de880",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "registerSpatialAsset",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Registers one spatial asset with external storage 'data' and assigns them to `account`.\n Emits a {SpatialAssetRegistered} event."
- },
- "id": 267,
- "name": "StructuredDocumentation",
- "src": "4408:165:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "owner",
- "overrides": null,
- "scope": 464,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "address",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "stateMutability": "nonpayable",
- "type": "address"
- },
- "id": 268,
- "name": "ElementaryTypeName",
- "src": "4608:7:1"
- }
- ],
- "id": 269,
- "name": "VariableDeclaration",
- "src": "4608:13:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 464,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 270,
- "name": "ElementaryTypeName",
- "src": "4623:7:1"
- }
- ],
- "id": 271,
- "name": "VariableDeclaration",
- "src": "4623:16:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "overrides": null,
- "scope": 464,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 272,
- "name": "ElementaryTypeName",
- "src": "4641:7:1"
- }
- ],
- "id": 273,
- "name": "VariableDeclaration",
- "src": "4641:22:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrenGeoDIDIds",
- "overrides": null,
- "scope": 464,
- "stateVariable": false,
- "storageLocation": "memory",
- "type": "bytes32[]",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "length": null,
- "type": "bytes32[]"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 274,
- "name": "ElementaryTypeName",
- "src": "4666:7:1"
- }
- ],
- "id": 275,
- "name": "ArrayTypeName",
- "src": "4666:9:1"
- }
- ],
- "id": 276,
- "name": "VariableDeclaration",
- "src": "4666:34:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "cid",
- "overrides": null,
- "scope": 464,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 277,
- "name": "ElementaryTypeName",
- "src": "4702:7:1"
- }
- ],
- "id": 278,
- "name": "VariableDeclaration",
- "src": "4702:11:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "offChainStorage",
- "overrides": null,
- "scope": 464,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 279,
- "name": "ElementaryTypeName",
- "src": "4715:7:1"
- }
- ],
- "id": 280,
- "name": "VariableDeclaration",
- "src": "4715:23:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "geoDIDtype",
- "overrides": null,
- "scope": 464,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "uint256",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "uint256",
- "type": "uint256"
- },
- "id": 281,
- "name": "ElementaryTypeName",
- "src": "4740:7:1"
- }
- ],
- "id": 282,
- "name": "VariableDeclaration",
- "src": "4740:18:1"
- }
- ],
- "id": 283,
- "name": "ParameterList",
- "src": "4607:152:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 284,
- "name": "ParameterList",
- "src": "4767:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 285,
- "name": "Identifier",
- "src": "4777:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bool",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1148,
- "type": "function (bytes32,address) view returns (bool)",
- "value": "hasRole"
- },
- "id": 286,
- "name": "Identifier",
- "src": "4785:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 139,
- "type": "bytes32",
- "value": "DATA_SUPPLIER"
- },
- "id": 287,
- "name": "Identifier",
- "src": "4793:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 288,
- "name": "Identifier",
- "src": "4808:10:1"
- }
- ],
- "id": 289,
- "name": "FunctionCall",
- "src": "4808:12:1"
- }
- ],
- "id": 290,
- "name": "FunctionCall",
- "src": "4785:36:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: must have data supplier role to register\"",
- "value": "SpatialAssets: must have data supplier role to register"
- },
- "id": 291,
- "name": "Literal",
- "src": "4823:57:1"
- }
- ],
- "id": 292,
- "name": "FunctionCall",
- "src": "4777:104:1"
- }
- ],
- "id": 293,
- "name": "ExpressionStatement",
- "src": "4777:104:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_0ae99bd2d2bc928ba974a4c0584b94117dc577f73fe645d1eace2711f12192a2",
- "typeString": "literal_string \"SpatialAssets: storage must be allowed\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 294,
- "name": "Identifier",
- "src": "4891:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bool",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1064,
- "type": "function (bytes32) view returns (bool)",
- "value": "allowedStorages"
- },
- "id": 295,
- "name": "Identifier",
- "src": "4899:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 280,
- "type": "bytes32",
- "value": "offChainStorage"
- },
- "id": 296,
- "name": "Identifier",
- "src": "4915:15:1"
- }
- ],
- "id": 297,
- "name": "FunctionCall",
- "src": "4899:32:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a2073746f72616765206d75737420626520616c6c6f776564",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: storage must be allowed\"",
- "value": "SpatialAssets: storage must be allowed"
- },
- "id": 298,
- "name": "Literal",
- "src": "4933:40:1"
- }
- ],
- "id": 299,
- "name": "FunctionCall",
- "src": "4891:83:1"
- }
- ],
- "id": 300,
- "name": "ExpressionStatement",
- "src": "4891:83:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c",
- "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 301,
- "name": "Identifier",
- "src": "4984:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 302,
- "name": "Identifier",
- "src": "4992:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 303,
- "name": "Identifier",
- "src": "5000:8:1"
- }
- ],
- "id": 304,
- "name": "IndexAccess",
- "src": "4992:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 305,
- "name": "ElementaryTypeName",
- "src": "5013:7:1"
- }
- ],
- "id": 306,
- "name": "ElementaryTypeNameExpression",
- "src": "5013:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 307,
- "name": "Literal",
- "src": "5021:1:1"
- }
- ],
- "id": 308,
- "name": "FunctionCall",
- "src": "5013:10:1"
- }
- ],
- "id": 309,
- "name": "BinaryOperation",
- "src": "4992:31:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: id must not have an owner yet\"",
- "value": "SpatialAssets: id must not have an owner yet"
- },
- "id": 310,
- "name": "Literal",
- "src": "5025:46:1"
- }
- ],
- "id": 311,
- "name": "FunctionCall",
- "src": "4984:88:1"
- }
- ],
- "id": 312,
- "name": "ExpressionStatement",
- "src": "4984:88:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_e674447e79034d68bd1c7f2aa0a8d31190ad751eb2b878eced3a014448a54daa",
- "typeString": "literal_string \"Spatial Assets: wrong geodidtype\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 313,
- "name": "Identifier",
- "src": "5082:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "||",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 282,
- "type": "uint256",
- "value": "geoDIDtype"
- },
- "id": 314,
- "name": "Identifier",
- "src": "5090:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 315,
- "name": "Literal",
- "src": "5105:1:1"
- }
- ],
- "id": 316,
- "name": "BinaryOperation",
- "src": "5090:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 282,
- "type": "uint256",
- "value": "geoDIDtype"
- },
- "id": 317,
- "name": "Identifier",
- "src": "5110:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "31",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 1",
- "value": "1"
- },
- "id": 318,
- "name": "Literal",
- "src": "5124:1:1"
- }
- ],
- "id": 319,
- "name": "BinaryOperation",
- "src": "5110:15:1"
- }
- ],
- "id": 320,
- "name": "BinaryOperation",
- "src": "5090:35:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c204173736574733a2077726f6e672067656f64696474797065",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"Spatial Assets: wrong geodidtype\"",
- "value": "Spatial Assets: wrong geodidtype"
- },
- "id": 321,
- "name": "Literal",
- "src": "5127:34:1"
- }
- ],
- "id": 322,
- "name": "FunctionCall",
- "src": "5082:80:1"
- }
- ],
- "id": 323,
- "name": "ExpressionStatement",
- "src": "5082:80:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 149,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_cids"
- },
- "id": 324,
- "name": "Identifier",
- "src": "5173:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 325,
- "name": "Identifier",
- "src": "5179:8:1"
- }
- ],
- "id": 326,
- "name": "IndexAccess",
- "src": "5173:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 278,
- "type": "bytes32",
- "value": "cid"
- },
- "id": 327,
- "name": "Identifier",
- "src": "5190:3:1"
- }
- ],
- "id": 328,
- "name": "Assignment",
- "src": "5173:20:1"
- }
- ],
- "id": 329,
- "name": "ExpressionStatement",
- "src": "5173:20:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 330,
- "name": "Identifier",
- "src": "5203:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 331,
- "name": "Identifier",
- "src": "5211:8:1"
- }
- ],
- "id": 332,
- "name": "IndexAccess",
- "src": "5203:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 269,
- "type": "address",
- "value": "owner"
- },
- "id": 333,
- "name": "Identifier",
- "src": "5223:5:1"
- }
- ],
- "id": 334,
- "name": "Assignment",
- "src": "5203:25:1"
- }
- ],
- "id": 335,
- "name": "ExpressionStatement",
- "src": "5203:25:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 165,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_externalStorage"
- },
- "id": 336,
- "name": "Identifier",
- "src": "5238:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 337,
- "name": "Identifier",
- "src": "5255:8:1"
- }
- ],
- "id": 338,
- "name": "IndexAccess",
- "src": "5238:26:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 280,
- "type": "bytes32",
- "value": "offChainStorage"
- },
- "id": 339,
- "name": "Identifier",
- "src": "5267:15:1"
- }
- ],
- "id": 340,
- "name": "Assignment",
- "src": "5238:44:1"
- }
- ],
- "id": 341,
- "name": "ExpressionStatement",
- "src": "5238:44:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 282,
- "type": "uint256",
- "value": "geoDIDtype"
- },
- "id": 342,
- "name": "Identifier",
- "src": "5297:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 343,
- "name": "Literal",
- "src": "5311:1:1"
- }
- ],
- "id": 344,
- "name": "BinaryOperation",
- "src": "5297:15:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 157,
- "type": "mapping(bytes32 => bool)",
- "value": "_canBeParent"
- },
- "id": 345,
- "name": "Identifier",
- "src": "5328:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 346,
- "name": "Identifier",
- "src": "5341:8:1"
- }
- ],
- "id": 347,
- "name": "IndexAccess",
- "src": "5328:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "74727565",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "true"
- },
- "id": 348,
- "name": "Literal",
- "src": "5353:4:1"
- }
- ],
- "id": 349,
- "name": "Assignment",
- "src": "5328:29:1"
- }
- ],
- "id": 350,
- "name": "ExpressionStatement",
- "src": "5328:29:1"
- }
- ],
- "id": 351,
- "name": "Block",
- "src": "5314:54:1"
- },
- {
- "attributes": {
- "falseBody": null
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 282,
- "type": "uint256",
- "value": "geoDIDtype"
- },
- "id": 352,
- "name": "Identifier",
- "src": "5378:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "31",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 1",
- "value": "1"
- },
- "id": 353,
- "name": "Literal",
- "src": "5392:1:1"
- }
- ],
- "id": 354,
- "name": "BinaryOperation",
- "src": "5378:15:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 157,
- "type": "mapping(bytes32 => bool)",
- "value": "_canBeParent"
- },
- "id": 355,
- "name": "Identifier",
- "src": "5409:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 356,
- "name": "Identifier",
- "src": "5422:8:1"
- }
- ],
- "id": 357,
- "name": "IndexAccess",
- "src": "5409:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "66616c7365",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "false"
- },
- "id": 358,
- "name": "Literal",
- "src": "5434:5:1"
- }
- ],
- "id": 359,
- "name": "Assignment",
- "src": "5409:30:1"
- }
- ],
- "id": 360,
- "name": "ExpressionStatement",
- "src": "5409:30:1"
- }
- ],
- "id": 361,
- "name": "Block",
- "src": "5395:55:1"
- }
- ],
- "id": 362,
- "name": "IfStatement",
- "src": "5374:76:1"
- }
- ],
- "id": 363,
- "name": "IfStatement",
- "src": "5293:157:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 273,
- "type": "bytes32",
- "value": "parentGeoDIDId"
- },
- "id": 364,
- "name": "Identifier",
- "src": "5464:14:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bytes32",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(bytes32)"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": null
- },
- "id": 365,
- "name": "ElementaryTypeName",
- "src": "5482:7:1"
- }
- ],
- "id": 366,
- "name": "ElementaryTypeNameExpression",
- "src": "5482:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 367,
- "name": "Literal",
- "src": "5490:1:1"
- }
- ],
- "id": 368,
- "name": "FunctionCall",
- "src": "5482:10:1"
- }
- ],
- "id": 369,
- "name": "BinaryOperation",
- "src": "5464:28:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 370,
- "name": "Identifier",
- "src": "5508:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 371,
- "name": "Identifier",
- "src": "5519:8:1"
- }
- ],
- "id": 372,
- "name": "IndexAccess",
- "src": "5508:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "66616c7365",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "false"
- },
- "id": 373,
- "name": "Literal",
- "src": "5531:5:1"
- }
- ],
- "id": 374,
- "name": "Assignment",
- "src": "5508:28:1"
- }
- ],
- "id": 375,
- "name": "ExpressionStatement",
- "src": "5508:28:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 376,
- "name": "Identifier",
- "src": "5550:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 377,
- "name": "Identifier",
- "src": "5556:8:1"
- }
- ],
- "id": 378,
- "name": "IndexAccess",
- "src": "5550:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 379,
- "name": "Identifier",
- "src": "5568:8:1"
- }
- ],
- "id": 380,
- "name": "Assignment",
- "src": "5550:26:1"
- }
- ],
- "id": 381,
- "name": "ExpressionStatement",
- "src": "5550:26:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 80,
- "type": "function (address,bytes32,bytes32,bytes32,bytes32,bool)",
- "value": "SpatialAssetRegistered"
- },
- "id": 382,
- "name": "Identifier",
- "src": "5591:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 269,
- "type": "address",
- "value": "owner"
- },
- "id": 383,
- "name": "Identifier",
- "src": "5614:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 384,
- "name": "Identifier",
- "src": "5621:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 278,
- "type": "bytes32",
- "value": "cid"
- },
- "id": 385,
- "name": "Identifier",
- "src": "5631:3:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 280,
- "type": "bytes32",
- "value": "offChainStorage"
- },
- "id": 386,
- "name": "Identifier",
- "src": "5636:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 387,
- "name": "Identifier",
- "src": "5653:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 157,
- "type": "mapping(bytes32 => bool)",
- "value": "_canBeParent"
- },
- "id": 388,
- "name": "Identifier",
- "src": "5663:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 389,
- "name": "Identifier",
- "src": "5676:8:1"
- }
- ],
- "id": 390,
- "name": "IndexAccess",
- "src": "5663:22:1"
- }
- ],
- "id": 391,
- "name": "FunctionCall",
- "src": "5591:95:1"
- }
- ],
- "id": 392,
- "name": "EmitStatement",
- "src": "5586:100:1"
- }
- ],
- "id": 393,
- "name": "Block",
- "src": "5494:203:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 394,
- "name": "Identifier",
- "src": "5717:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 395,
- "name": "Identifier",
- "src": "5728:8:1"
- }
- ],
- "id": 396,
- "name": "IndexAccess",
- "src": "5717:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "74727565",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "true"
- },
- "id": 397,
- "name": "Literal",
- "src": "5740:4:1"
- }
- ],
- "id": 398,
- "name": "Assignment",
- "src": "5717:27:1"
- }
- ],
- "id": 399,
- "name": "ExpressionStatement",
- "src": "5717:27:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 80,
- "type": "function (address,bytes32,bytes32,bytes32,bytes32,bool)",
- "value": "SpatialAssetRegistered"
- },
- "id": 400,
- "name": "Identifier",
- "src": "5763:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 269,
- "type": "address",
- "value": "owner"
- },
- "id": 401,
- "name": "Identifier",
- "src": "5786:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 402,
- "name": "Identifier",
- "src": "5793:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 278,
- "type": "bytes32",
- "value": "cid"
- },
- "id": 403,
- "name": "Identifier",
- "src": "5803:3:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 280,
- "type": "bytes32",
- "value": "offChainStorage"
- },
- "id": 404,
- "name": "Identifier",
- "src": "5808:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 405,
- "name": "Identifier",
- "src": "5825:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 273,
- "type": "bytes32",
- "value": "parentGeoDIDId"
- },
- "id": 406,
- "name": "Identifier",
- "src": "5831:14:1"
- }
- ],
- "id": 407,
- "name": "IndexAccess",
- "src": "5825:21:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 157,
- "type": "mapping(bytes32 => bool)",
- "value": "_canBeParent"
- },
- "id": 408,
- "name": "Identifier",
- "src": "5848:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 409,
- "name": "Identifier",
- "src": "5861:8:1"
- }
- ],
- "id": 410,
- "name": "IndexAccess",
- "src": "5848:22:1"
- }
- ],
- "id": 411,
- "name": "FunctionCall",
- "src": "5763:108:1"
- }
- ],
- "id": 412,
- "name": "EmitStatement",
- "src": "5758:113:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 92,
- "type": "function (bytes32,bytes32)",
- "value": "ParentAdded"
- },
- "id": 413,
- "name": "Identifier",
- "src": "5890:11:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 414,
- "name": "Identifier",
- "src": "5902:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 273,
- "type": "bytes32",
- "value": "parentGeoDIDId"
- },
- "id": 415,
- "name": "Identifier",
- "src": "5912:14:1"
- }
- ],
- "id": 416,
- "name": "FunctionCall",
- "src": "5890:37:1"
- }
- ],
- "id": 417,
- "name": "EmitStatement",
- "src": "5885:42:1"
- }
- ],
- "id": 418,
- "name": "Block",
- "src": "5703:235:1"
- }
- ],
- "id": 419,
- "name": "IfStatement",
- "src": "5460:478:1"
- },
- {
- "attributes": {
- "assignments": [
- 421
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrensLen",
- "overrides": null,
- "scope": 463,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "uint256",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "uint256",
- "type": "uint256"
- },
- "id": 420,
- "name": "ElementaryTypeName",
- "src": "5948:7:1"
- }
- ],
- "id": 421,
- "name": "VariableDeclaration",
- "src": "5948:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "member_name": "length",
- "referencedDeclaration": null,
- "type": "uint256"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 276,
- "type": "bytes32[] memory",
- "value": "childrenGeoDIDIds"
- },
- "id": 422,
- "name": "Identifier",
- "src": "5971:17:1"
- }
- ],
- "id": 423,
- "name": "MemberAccess",
- "src": "5971:24:1"
- }
- ],
- "id": 424,
- "name": "VariableDeclarationStatement",
- "src": "5948:47:1"
- },
- {
- "attributes": {
- "falseBody": null
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "&&",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": ">",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 421,
- "type": "uint256",
- "value": "childrensLen"
- },
- "id": 425,
- "name": "Identifier",
- "src": "6010:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 426,
- "name": "Literal",
- "src": "6025:1:1"
- }
- ],
- "id": 427,
- "name": "BinaryOperation",
- "src": "6010:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 157,
- "type": "mapping(bytes32 => bool)",
- "value": "_canBeParent"
- },
- "id": 428,
- "name": "Identifier",
- "src": "6030:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 429,
- "name": "Identifier",
- "src": "6043:8:1"
- }
- ],
- "id": 430,
- "name": "IndexAccess",
- "src": "6030:22:1"
- }
- ],
- "id": 431,
- "name": "BinaryOperation",
- "src": "6010:42:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "assignments": [
- 433
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "j",
- "overrides": null,
- "scope": 460,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "uint256",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "uint256",
- "type": "uint256"
- },
- "id": 432,
- "name": "ElementaryTypeName",
- "src": "6071:7:1"
- }
- ],
- "id": 433,
- "name": "VariableDeclaration",
- "src": "6071:9:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 434,
- "name": "Literal",
- "src": "6081:1:1"
- }
- ],
- "id": 435,
- "name": "VariableDeclarationStatement",
- "src": "6071:11:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "<",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 433,
- "type": "uint256",
- "value": "j"
- },
- "id": 436,
- "name": "Identifier",
- "src": "6084:1:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 421,
- "type": "uint256",
- "value": "childrensLen"
- },
- "id": 437,
- "name": "Identifier",
- "src": "6088:12:1"
- }
- ],
- "id": 438,
- "name": "BinaryOperation",
- "src": "6084:16:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "++",
- "prefix": false,
- "type": "uint256"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 433,
- "type": "uint256",
- "value": "j"
- },
- "id": 439,
- "name": "Identifier",
- "src": "6102:1:1"
- }
- ],
- "id": 440,
- "name": "UnaryOperation",
- "src": "6102:3:1"
- }
- ],
- "id": 441,
- "name": "ExpressionStatement",
- "src": "6102:3:1"
- },
- {
- "children": [
- {
- "attributes": {
- "assignments": [
- 443
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrenGeoDID",
- "overrides": null,
- "scope": 459,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 442,
- "name": "ElementaryTypeName",
- "src": "6125:7:1"
- }
- ],
- "id": 443,
- "name": "VariableDeclaration",
- "src": "6125:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 276,
- "type": "bytes32[] memory",
- "value": "childrenGeoDIDIds"
- },
- "id": 444,
- "name": "Identifier",
- "src": "6150:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 433,
- "type": "uint256",
- "value": "j"
- },
- "id": 445,
- "name": "Identifier",
- "src": "6168:1:1"
- }
- ],
- "id": 446,
- "name": "IndexAccess",
- "src": "6150:20:1"
- }
- ],
- "id": 447,
- "name": "VariableDeclarationStatement",
- "src": "6125:45:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 448,
- "name": "Identifier",
- "src": "6188:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 443,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 449,
- "name": "Identifier",
- "src": "6199:14:1"
- }
- ],
- "id": 450,
- "name": "IndexAccess",
- "src": "6188:26:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "74727565",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "true"
- },
- "id": 451,
- "name": "Literal",
- "src": "6217:4:1"
- }
- ],
- "id": 452,
- "name": "Assignment",
- "src": "6188:33:1"
- }
- ],
- "id": 453,
- "name": "ExpressionStatement",
- "src": "6188:33:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 99,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenAdded"
- },
- "id": 454,
- "name": "Identifier",
- "src": "6244:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 271,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 455,
- "name": "Identifier",
- "src": "6258:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 443,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 456,
- "name": "Identifier",
- "src": "6268:14:1"
- }
- ],
- "id": 457,
- "name": "FunctionCall",
- "src": "6244:39:1"
- }
- ],
- "id": 458,
- "name": "EmitStatement",
- "src": "6239:44:1"
- }
- ],
- "id": 459,
- "name": "Block",
- "src": "6107:191:1"
- }
- ],
- "id": 460,
- "name": "ForStatement",
- "src": "6067:231:1"
- }
- ],
- "id": 461,
- "name": "Block",
- "src": "6053:255:1"
- }
- ],
- "id": 462,
- "name": "IfStatement",
- "src": "6006:302:1"
- }
- ],
- "id": 463,
- "name": "Block",
- "src": "4767:1547:1"
- }
- ],
- "id": 464,
- "name": "FunctionDefinition",
- "src": "4578:1736:1"
- },
- {
- "attributes": {
- "functionSelector": "bdabcf63",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "addChildrenGeoDIDs",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Adds children GeoDIDs to an already existent geoDID\n Emits a {ChildrenAdded} event."
- },
- "id": 465,
- "name": "StructuredDocumentation",
- "src": "6321:120:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 587,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 466,
- "name": "ElementaryTypeName",
- "src": "6474:7:1"
- }
- ],
- "id": 467,
- "name": "VariableDeclaration",
- "src": "6474:16:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrenGeoDIDIds",
- "overrides": null,
- "scope": 587,
- "stateVariable": false,
- "storageLocation": "memory",
- "type": "bytes32[]",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "length": null,
- "type": "bytes32[]"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 468,
- "name": "ElementaryTypeName",
- "src": "6492:7:1"
- }
- ],
- "id": 469,
- "name": "ArrayTypeName",
- "src": "6492:9:1"
- }
- ],
- "id": 470,
- "name": "VariableDeclaration",
- "src": "6492:34:1"
- }
- ],
- "id": 471,
- "name": "ParameterList",
- "src": "6473:54:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 472,
- "name": "ParameterList",
- "src": "6535:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 473,
- "name": "Identifier",
- "src": "6545:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bool",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1148,
- "type": "function (bytes32,address) view returns (bool)",
- "value": "hasRole"
- },
- "id": 474,
- "name": "Identifier",
- "src": "6553:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 139,
- "type": "bytes32",
- "value": "DATA_SUPPLIER"
- },
- "id": 475,
- "name": "Identifier",
- "src": "6561:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 476,
- "name": "Identifier",
- "src": "6576:10:1"
- }
- ],
- "id": 477,
- "name": "FunctionCall",
- "src": "6576:12:1"
- }
- ],
- "id": 478,
- "name": "FunctionCall",
- "src": "6553:36:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: must have data supplier role to register\"",
- "value": "SpatialAssets: must have data supplier role to register"
- },
- "id": 479,
- "name": "Literal",
- "src": "6591:57:1"
- }
- ],
- "id": 480,
- "name": "FunctionCall",
- "src": "6545:104:1"
- }
- ],
- "id": 481,
- "name": "ExpressionStatement",
- "src": "6545:104:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841",
- "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 482,
- "name": "Identifier",
- "src": "6659:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 483,
- "name": "Identifier",
- "src": "6667:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 467,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 484,
- "name": "Identifier",
- "src": "6675:8:1"
- }
- ],
- "id": 485,
- "name": "IndexAccess",
- "src": "6667:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 486,
- "name": "Identifier",
- "src": "6688:10:1"
- }
- ],
- "id": 487,
- "name": "FunctionCall",
- "src": "6688:12:1"
- }
- ],
- "id": 488,
- "name": "BinaryOperation",
- "src": "6667:33:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f72",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"",
- "value": "SpatialAssets: geoDIDId must be owned by its creator"
- },
- "id": 489,
- "name": "Literal",
- "src": "6702:54:1"
- }
- ],
- "id": 490,
- "name": "FunctionCall",
- "src": "6659:98:1"
- }
- ],
- "id": 491,
- "name": "ExpressionStatement",
- "src": "6659:98:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_35056da795db0b563126e5da17620c63bcd517d6bd90d17a597656966ba83aa1",
- "typeString": "literal_string \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 492,
- "name": "Identifier",
- "src": "6767:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 157,
- "type": "mapping(bytes32 => bool)",
- "value": "_canBeParent"
- },
- "id": 493,
- "name": "Identifier",
- "src": "6775:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 467,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 494,
- "name": "Identifier",
- "src": "6788:8:1"
- }
- ],
- "id": 495,
- "name": "IndexAccess",
- "src": "6775:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a2067656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e29",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: geoDIDId must be able to be parent (a Collection)\"",
- "value": "SpatialAssets: geoDIDId must be able to be parent (a Collection)"
- },
- "id": 496,
- "name": "Literal",
- "src": "6799:66:1"
- }
- ],
- "id": 497,
- "name": "FunctionCall",
- "src": "6767:99:1"
- }
- ],
- "id": 498,
- "name": "ExpressionStatement",
- "src": "6767:99:1"
- },
- {
- "attributes": {
- "assignments": [
- 500
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrensLen",
- "overrides": null,
- "scope": 586,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "uint256",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "uint256",
- "type": "uint256"
- },
- "id": 499,
- "name": "ElementaryTypeName",
- "src": "6877:7:1"
- }
- ],
- "id": 500,
- "name": "VariableDeclaration",
- "src": "6877:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "member_name": "length",
- "referencedDeclaration": null,
- "type": "uint256"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 470,
- "type": "bytes32[] memory",
- "value": "childrenGeoDIDIds"
- },
- "id": 501,
- "name": "Identifier",
- "src": "6900:17:1"
- }
- ],
- "id": 502,
- "name": "MemberAccess",
- "src": "6900:24:1"
- }
- ],
- "id": 503,
- "name": "VariableDeclarationStatement",
- "src": "6877:47:1"
- },
- {
- "attributes": {
- "falseBody": null
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": ">",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 500,
- "type": "uint256",
- "value": "childrensLen"
- },
- "id": 504,
- "name": "Identifier",
- "src": "6939:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 505,
- "name": "Literal",
- "src": "6954:1:1"
- }
- ],
- "id": 506,
- "name": "BinaryOperation",
- "src": "6939:16:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "assignments": [
- 508
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "j",
- "overrides": null,
- "scope": 583,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "uint256",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "uint256",
- "type": "uint256"
- },
- "id": 507,
- "name": "ElementaryTypeName",
- "src": "6974:7:1"
- }
- ],
- "id": 508,
- "name": "VariableDeclaration",
- "src": "6974:9:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 509,
- "name": "Literal",
- "src": "6984:1:1"
- }
- ],
- "id": 510,
- "name": "VariableDeclarationStatement",
- "src": "6974:11:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "<",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 508,
- "type": "uint256",
- "value": "j"
- },
- "id": 511,
- "name": "Identifier",
- "src": "6987:1:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 500,
- "type": "uint256",
- "value": "childrensLen"
- },
- "id": 512,
- "name": "Identifier",
- "src": "6991:12:1"
- }
- ],
- "id": 513,
- "name": "BinaryOperation",
- "src": "6987:16:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "++",
- "prefix": false,
- "type": "uint256"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 508,
- "type": "uint256",
- "value": "j"
- },
- "id": 514,
- "name": "Identifier",
- "src": "7005:1:1"
- }
- ],
- "id": 515,
- "name": "UnaryOperation",
- "src": "7005:3:1"
- }
- ],
- "id": 516,
- "name": "ExpressionStatement",
- "src": "7005:3:1"
- },
- {
- "children": [
- {
- "attributes": {
- "assignments": [
- 518
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrenGeoDID",
- "overrides": null,
- "scope": 582,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 517,
- "name": "ElementaryTypeName",
- "src": "7028:7:1"
- }
- ],
- "id": 518,
- "name": "VariableDeclaration",
- "src": "7028:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 470,
- "type": "bytes32[] memory",
- "value": "childrenGeoDIDIds"
- },
- "id": 519,
- "name": "Identifier",
- "src": "7053:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 508,
- "type": "uint256",
- "value": "j"
- },
- "id": 520,
- "name": "Identifier",
- "src": "7071:1:1"
- }
- ],
- "id": 521,
- "name": "IndexAccess",
- "src": "7053:20:1"
- }
- ],
- "id": 522,
- "name": "VariableDeclarationStatement",
- "src": "7028:45:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "&&",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 523,
- "name": "Identifier",
- "src": "7095:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 518,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 524,
- "name": "Identifier",
- "src": "7103:14:1"
- }
- ],
- "id": 525,
- "name": "IndexAccess",
- "src": "7095:23:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 526,
- "name": "ElementaryTypeName",
- "src": "7122:7:1"
- }
- ],
- "id": 527,
- "name": "ElementaryTypeNameExpression",
- "src": "7122:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 528,
- "name": "Literal",
- "src": "7130:1:1"
- }
- ],
- "id": 529,
- "name": "FunctionCall",
- "src": "7122:10:1"
- }
- ],
- "id": 530,
- "name": "BinaryOperation",
- "src": "7095:37:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!",
- "prefix": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 531,
- "name": "Identifier",
- "src": "7137:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 518,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 532,
- "name": "Identifier",
- "src": "7148:14:1"
- }
- ],
- "id": 533,
- "name": "IndexAccess",
- "src": "7137:26:1"
- }
- ],
- "id": 534,
- "name": "UnaryOperation",
- "src": "7136:27:1"
- }
- ],
- "id": 535,
- "name": "BinaryOperation",
- "src": "7095:68:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 536,
- "name": "Identifier",
- "src": "7187:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 518,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 537,
- "name": "Identifier",
- "src": "7198:14:1"
- }
- ],
- "id": 538,
- "name": "IndexAccess",
- "src": "7187:26:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "74727565",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "true"
- },
- "id": 539,
- "name": "Literal",
- "src": "7216:4:1"
- }
- ],
- "id": 540,
- "name": "Assignment",
- "src": "7187:33:1"
- }
- ],
- "id": 541,
- "name": "ExpressionStatement",
- "src": "7187:33:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 542,
- "name": "Identifier",
- "src": "7242:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 518,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 543,
- "name": "Identifier",
- "src": "7248:14:1"
- }
- ],
- "id": 544,
- "name": "IndexAccess",
- "src": "7242:21:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 545,
- "name": "Identifier",
- "src": "7266:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 467,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 546,
- "name": "Identifier",
- "src": "7272:8:1"
- }
- ],
- "id": 547,
- "name": "IndexAccess",
- "src": "7266:15:1"
- }
- ],
- "id": 548,
- "name": "Assignment",
- "src": "7242:39:1"
- }
- ],
- "id": 549,
- "name": "ExpressionStatement",
- "src": "7242:39:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 99,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenAdded"
- },
- "id": 550,
- "name": "Identifier",
- "src": "7308:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 467,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 551,
- "name": "Identifier",
- "src": "7322:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 518,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 552,
- "name": "Identifier",
- "src": "7332:14:1"
- }
- ],
- "id": 553,
- "name": "FunctionCall",
- "src": "7308:39:1"
- }
- ],
- "id": 554,
- "name": "EmitStatement",
- "src": "7303:44:1"
- }
- ],
- "id": 555,
- "name": "Block",
- "src": "7165:201:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "&&",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 556,
- "name": "Identifier",
- "src": "7376:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 518,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 557,
- "name": "Identifier",
- "src": "7384:14:1"
- }
- ],
- "id": 558,
- "name": "IndexAccess",
- "src": "7376:23:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 559,
- "name": "ElementaryTypeName",
- "src": "7403:7:1"
- }
- ],
- "id": 560,
- "name": "ElementaryTypeNameExpression",
- "src": "7403:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 561,
- "name": "Literal",
- "src": "7411:1:1"
- }
- ],
- "id": 562,
- "name": "FunctionCall",
- "src": "7403:10:1"
- }
- ],
- "id": 563,
- "name": "BinaryOperation",
- "src": "7376:37:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 564,
- "name": "Identifier",
- "src": "7417:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 518,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 565,
- "name": "Identifier",
- "src": "7428:14:1"
- }
- ],
- "id": 566,
- "name": "IndexAccess",
- "src": "7417:26:1"
- }
- ],
- "id": 567,
- "name": "BinaryOperation",
- "src": "7376:67:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 134,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenErrorHasParent"
- },
- "id": 568,
- "name": "Identifier",
- "src": "7471:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 467,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 569,
- "name": "Identifier",
- "src": "7494:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 518,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 570,
- "name": "Identifier",
- "src": "7504:14:1"
- }
- ],
- "id": 571,
- "name": "FunctionCall",
- "src": "7471:48:1"
- }
- ],
- "id": 572,
- "name": "EmitStatement",
- "src": "7466:53:1"
- }
- ],
- "id": 573,
- "name": "Block",
- "src": "7444:94:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 127,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenErrorNoExistence"
- },
- "id": 574,
- "name": "Identifier",
- "src": "7571:24:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 467,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 575,
- "name": "Identifier",
- "src": "7596:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 518,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 576,
- "name": "Identifier",
- "src": "7606:14:1"
- }
- ],
- "id": 577,
- "name": "FunctionCall",
- "src": "7571:50:1"
- }
- ],
- "id": 578,
- "name": "EmitStatement",
- "src": "7566:55:1"
- }
- ],
- "id": 579,
- "name": "Block",
- "src": "7544:96:1"
- }
- ],
- "id": 580,
- "name": "IfStatement",
- "src": "7372:268:1"
- }
- ],
- "id": 581,
- "name": "IfStatement",
- "src": "7091:549:1"
- }
- ],
- "id": 582,
- "name": "Block",
- "src": "7010:644:1"
- }
- ],
- "id": 583,
- "name": "ForStatement",
- "src": "6970:684:1"
- }
- ],
- "id": 584,
- "name": "Block",
- "src": "6956:708:1"
- }
- ],
- "id": 585,
- "name": "IfStatement",
- "src": "6935:729:1"
- }
- ],
- "id": 586,
- "name": "Block",
- "src": "6535:1135:1"
- }
- ],
- "id": 587,
- "name": "FunctionDefinition",
- "src": "6446:1224:1"
- },
- {
- "attributes": {
- "functionSelector": "f999be89",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "addParentGeoDID",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Adds a parent GeoDID to an already existent geoDID\n Emits a {ParentAdded} event."
- },
- "id": 588,
- "name": "StructuredDocumentation",
- "src": "7676:117:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 661,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 589,
- "name": "ElementaryTypeName",
- "src": "7823:7:1"
- }
- ],
- "id": 590,
- "name": "VariableDeclaration",
- "src": "7823:16:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "overrides": null,
- "scope": 661,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 591,
- "name": "ElementaryTypeName",
- "src": "7841:7:1"
- }
- ],
- "id": 592,
- "name": "VariableDeclaration",
- "src": "7841:22:1"
- }
- ],
- "id": 593,
- "name": "ParameterList",
- "src": "7822:42:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 594,
- "name": "ParameterList",
- "src": "7872:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 595,
- "name": "Identifier",
- "src": "7882:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bool",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1148,
- "type": "function (bytes32,address) view returns (bool)",
- "value": "hasRole"
- },
- "id": 596,
- "name": "Identifier",
- "src": "7890:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 139,
- "type": "bytes32",
- "value": "DATA_SUPPLIER"
- },
- "id": 597,
- "name": "Identifier",
- "src": "7898:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 598,
- "name": "Identifier",
- "src": "7913:10:1"
- }
- ],
- "id": 599,
- "name": "FunctionCall",
- "src": "7913:12:1"
- }
- ],
- "id": 600,
- "name": "FunctionCall",
- "src": "7890:36:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: must have data supplier role to register\"",
- "value": "SpatialAssets: must have data supplier role to register"
- },
- "id": 601,
- "name": "Literal",
- "src": "7928:57:1"
- }
- ],
- "id": 602,
- "name": "FunctionCall",
- "src": "7882:104:1"
- }
- ],
- "id": 603,
- "name": "ExpressionStatement",
- "src": "7882:104:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_141f85e6f52bf78350257a4ec10be89d97055fa340c7271b03e584c1efa8c841",
- "typeString": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 604,
- "name": "Identifier",
- "src": "7996:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 605,
- "name": "Identifier",
- "src": "8004:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 590,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 606,
- "name": "Identifier",
- "src": "8012:8:1"
- }
- ],
- "id": 607,
- "name": "IndexAccess",
- "src": "8004:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 608,
- "name": "Identifier",
- "src": "8025:10:1"
- }
- ],
- "id": 609,
- "name": "FunctionCall",
- "src": "8025:12:1"
- }
- ],
- "id": 610,
- "name": "BinaryOperation",
- "src": "8004:33:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a2067656f4449444964206d757374206265206f776e6564206279206974732063726561746f72",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: geoDIDId must be owned by its creator\"",
- "value": "SpatialAssets: geoDIDId must be owned by its creator"
- },
- "id": 611,
- "name": "Literal",
- "src": "8039:54:1"
- }
- ],
- "id": 612,
- "name": "FunctionCall",
- "src": "7996:98:1"
- }
- ],
- "id": 613,
- "name": "ExpressionStatement",
- "src": "7996:98:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_37628363356dfe049fe1dfb95b31ae659423f88203c2d0589d12bc6e2efba5fb",
- "typeString": "literal_string \"SpatialAssets: parentGeoDIDId does not exist\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 614,
- "name": "Identifier",
- "src": "8104:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 615,
- "name": "Identifier",
- "src": "8112:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 592,
- "type": "bytes32",
- "value": "parentGeoDIDId"
- },
- "id": 616,
- "name": "Identifier",
- "src": "8120:14:1"
- }
- ],
- "id": 617,
- "name": "IndexAccess",
- "src": "8112:23:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 618,
- "name": "ElementaryTypeName",
- "src": "8139:7:1"
- }
- ],
- "id": 619,
- "name": "ElementaryTypeNameExpression",
- "src": "8139:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 620,
- "name": "Literal",
- "src": "8147:1:1"
- }
- ],
- "id": 621,
- "name": "FunctionCall",
- "src": "8139:10:1"
- }
- ],
- "id": 622,
- "name": "BinaryOperation",
- "src": "8112:37:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a20706172656e7447656f444944496420646f6573206e6f74206578697374",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: parentGeoDIDId does not exist\"",
- "value": "SpatialAssets: parentGeoDIDId does not exist"
- },
- "id": 623,
- "name": "Literal",
- "src": "8151:46:1"
- }
- ],
- "id": 624,
- "name": "FunctionCall",
- "src": "8104:94:1"
- }
- ],
- "id": 625,
- "name": "ExpressionStatement",
- "src": "8104:94:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_365c191fc2e3b7185ac24986ce31e56094d1588c72dcea7a382fe58e00565569",
- "typeString": "literal_string \"SpatialAssets: geoDIDId already has a parent\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 626,
- "name": "Identifier",
- "src": "8208:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!",
- "prefix": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 627,
- "name": "Identifier",
- "src": "8217:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 590,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 628,
- "name": "Identifier",
- "src": "8228:8:1"
- }
- ],
- "id": 629,
- "name": "IndexAccess",
- "src": "8217:20:1"
- }
- ],
- "id": 630,
- "name": "UnaryOperation",
- "src": "8216:21:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a2067656f444944496420616c726561647920686173206120706172656e74",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: geoDIDId already has a parent\"",
- "value": "SpatialAssets: geoDIDId already has a parent"
- },
- "id": 631,
- "name": "Literal",
- "src": "8239:46:1"
- }
- ],
- "id": 632,
- "name": "FunctionCall",
- "src": "8208:78:1"
- }
- ],
- "id": 633,
- "name": "ExpressionStatement",
- "src": "8208:78:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_2fc4c9e1419e4474d6293c8f8fe90b0fca69366a562a1be7a551c73fee1d2c1d",
- "typeString": "literal_string \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 634,
- "name": "Identifier",
- "src": "8296:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 157,
- "type": "mapping(bytes32 => bool)",
- "value": "_canBeParent"
- },
- "id": 635,
- "name": "Identifier",
- "src": "8304:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 592,
- "type": "bytes32",
- "value": "parentGeoDIDId"
- },
- "id": 636,
- "name": "Identifier",
- "src": "8317:14:1"
- }
- ],
- "id": 637,
- "name": "IndexAccess",
- "src": "8304:28:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a20706172656e7447656f4449444964206d7573742062652061626c6520746f20626520706172656e7420286120436f6c6c656374696f6e29",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)\"",
- "value": "SpatialAssets: parentGeoDIDId must be able to be parent (a Collection)"
- },
- "id": 638,
- "name": "Literal",
- "src": "8334:72:1"
- }
- ],
- "id": 639,
- "name": "FunctionCall",
- "src": "8296:111:1"
- }
- ],
- "id": 640,
- "name": "ExpressionStatement",
- "src": "8296:111:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 641,
- "name": "Identifier",
- "src": "8418:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 590,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 642,
- "name": "Identifier",
- "src": "8429:8:1"
- }
- ],
- "id": 643,
- "name": "IndexAccess",
- "src": "8418:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "74727565",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "true"
- },
- "id": 644,
- "name": "Literal",
- "src": "8441:4:1"
- }
- ],
- "id": 645,
- "name": "Assignment",
- "src": "8418:27:1"
- }
- ],
- "id": 646,
- "name": "ExpressionStatement",
- "src": "8418:27:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 647,
- "name": "Identifier",
- "src": "8455:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 590,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 648,
- "name": "Identifier",
- "src": "8461:8:1"
- }
- ],
- "id": 649,
- "name": "IndexAccess",
- "src": "8455:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 650,
- "name": "Identifier",
- "src": "8473:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 592,
- "type": "bytes32",
- "value": "parentGeoDIDId"
- },
- "id": 651,
- "name": "Identifier",
- "src": "8479:14:1"
- }
- ],
- "id": 652,
- "name": "IndexAccess",
- "src": "8473:21:1"
- }
- ],
- "id": 653,
- "name": "Assignment",
- "src": "8455:39:1"
- }
- ],
- "id": 654,
- "name": "ExpressionStatement",
- "src": "8455:39:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 92,
- "type": "function (bytes32,bytes32)",
- "value": "ParentAdded"
- },
- "id": 655,
- "name": "Identifier",
- "src": "8509:11:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 590,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 656,
- "name": "Identifier",
- "src": "8521:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 592,
- "type": "bytes32",
- "value": "parentGeoDIDId"
- },
- "id": 657,
- "name": "Identifier",
- "src": "8531:14:1"
- }
- ],
- "id": 658,
- "name": "FunctionCall",
- "src": "8509:37:1"
- }
- ],
- "id": 659,
- "name": "EmitStatement",
- "src": "8504:42:1"
- }
- ],
- "id": 660,
- "name": "Block",
- "src": "7872:681:1"
- }
- ],
- "id": 661,
- "name": "FunctionDefinition",
- "src": "7798:755:1"
- },
- {
- "attributes": {
- "functionSelector": "a8f904b5",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "removeChildrenGeoDIDs",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Removes childrenGeoDIDs from a geoDID\n Emits a {ChildrenRemoved} event."
- },
- "id": 662,
- "name": "StructuredDocumentation",
- "src": "8564:108:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 775,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 663,
- "name": "ElementaryTypeName",
- "src": "8708:7:1"
- }
- ],
- "id": 664,
- "name": "VariableDeclaration",
- "src": "8708:16:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrenGeoDIDIds",
- "overrides": null,
- "scope": 775,
- "stateVariable": false,
- "storageLocation": "memory",
- "type": "bytes32[]",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "length": null,
- "type": "bytes32[]"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 665,
- "name": "ElementaryTypeName",
- "src": "8726:7:1"
- }
- ],
- "id": 666,
- "name": "ArrayTypeName",
- "src": "8726:9:1"
- }
- ],
- "id": 667,
- "name": "VariableDeclaration",
- "src": "8726:34:1"
- }
- ],
- "id": 668,
- "name": "ParameterList",
- "src": "8707:54:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 669,
- "name": "ParameterList",
- "src": "8769:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 670,
- "name": "Identifier",
- "src": "8779:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bool",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1148,
- "type": "function (bytes32,address) view returns (bool)",
- "value": "hasRole"
- },
- "id": 671,
- "name": "Identifier",
- "src": "8787:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 139,
- "type": "bytes32",
- "value": "DATA_SUPPLIER"
- },
- "id": 672,
- "name": "Identifier",
- "src": "8795:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 673,
- "name": "Identifier",
- "src": "8810:10:1"
- }
- ],
- "id": 674,
- "name": "FunctionCall",
- "src": "8810:12:1"
- }
- ],
- "id": 675,
- "name": "FunctionCall",
- "src": "8787:36:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: must have data supplier role to register\"",
- "value": "SpatialAssets: must have data supplier role to register"
- },
- "id": 676,
- "name": "Literal",
- "src": "8825:57:1"
- }
- ],
- "id": 677,
- "name": "FunctionCall",
- "src": "8779:104:1"
- }
- ],
- "id": 678,
- "name": "ExpressionStatement",
- "src": "8779:104:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c",
- "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 679,
- "name": "Identifier",
- "src": "8893:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 680,
- "name": "Identifier",
- "src": "8901:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 664,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 681,
- "name": "Identifier",
- "src": "8909:8:1"
- }
- ],
- "id": 682,
- "name": "IndexAccess",
- "src": "8901:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 683,
- "name": "Identifier",
- "src": "8922:10:1"
- }
- ],
- "id": 684,
- "name": "FunctionCall",
- "src": "8922:12:1"
- }
- ],
- "id": 685,
- "name": "BinaryOperation",
- "src": "8901:33:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: id must not have an owner yet\"",
- "value": "SpatialAssets: id must not have an owner yet"
- },
- "id": 686,
- "name": "Literal",
- "src": "8936:46:1"
- }
- ],
- "id": 687,
- "name": "FunctionCall",
- "src": "8893:90:1"
- }
- ],
- "id": 688,
- "name": "ExpressionStatement",
- "src": "8893:90:1"
- },
- {
- "attributes": {
- "assignments": [
- 690
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrensLen",
- "overrides": null,
- "scope": 774,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "uint256",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "uint256",
- "type": "uint256"
- },
- "id": 689,
- "name": "ElementaryTypeName",
- "src": "8994:7:1"
- }
- ],
- "id": 690,
- "name": "VariableDeclaration",
- "src": "8994:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "member_name": "length",
- "referencedDeclaration": null,
- "type": "uint256"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 667,
- "type": "bytes32[] memory",
- "value": "childrenGeoDIDIds"
- },
- "id": 691,
- "name": "Identifier",
- "src": "9017:17:1"
- }
- ],
- "id": 692,
- "name": "MemberAccess",
- "src": "9017:24:1"
- }
- ],
- "id": 693,
- "name": "VariableDeclarationStatement",
- "src": "8994:47:1"
- },
- {
- "attributes": {
- "falseBody": null
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": ">",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 690,
- "type": "uint256",
- "value": "childrensLen"
- },
- "id": 694,
- "name": "Identifier",
- "src": "9056:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 695,
- "name": "Literal",
- "src": "9071:1:1"
- }
- ],
- "id": 696,
- "name": "BinaryOperation",
- "src": "9056:16:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "assignments": [
- 698
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "j",
- "overrides": null,
- "scope": 771,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "uint256",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "uint256",
- "type": "uint256"
- },
- "id": 697,
- "name": "ElementaryTypeName",
- "src": "9091:7:1"
- }
- ],
- "id": 698,
- "name": "VariableDeclaration",
- "src": "9091:9:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 699,
- "name": "Literal",
- "src": "9101:1:1"
- }
- ],
- "id": 700,
- "name": "VariableDeclarationStatement",
- "src": "9091:11:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "<",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 698,
- "type": "uint256",
- "value": "j"
- },
- "id": 701,
- "name": "Identifier",
- "src": "9104:1:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 690,
- "type": "uint256",
- "value": "childrensLen"
- },
- "id": 702,
- "name": "Identifier",
- "src": "9108:12:1"
- }
- ],
- "id": 703,
- "name": "BinaryOperation",
- "src": "9104:16:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "++",
- "prefix": false,
- "type": "uint256"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 698,
- "type": "uint256",
- "value": "j"
- },
- "id": 704,
- "name": "Identifier",
- "src": "9122:1:1"
- }
- ],
- "id": 705,
- "name": "UnaryOperation",
- "src": "9122:3:1"
- }
- ],
- "id": 706,
- "name": "ExpressionStatement",
- "src": "9122:3:1"
- },
- {
- "children": [
- {
- "attributes": {
- "assignments": [
- 708
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrenGeoDID",
- "overrides": null,
- "scope": 770,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 707,
- "name": "ElementaryTypeName",
- "src": "9145:7:1"
- }
- ],
- "id": 708,
- "name": "VariableDeclaration",
- "src": "9145:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 667,
- "type": "bytes32[] memory",
- "value": "childrenGeoDIDIds"
- },
- "id": 709,
- "name": "Identifier",
- "src": "9170:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 698,
- "type": "uint256",
- "value": "j"
- },
- "id": 710,
- "name": "Identifier",
- "src": "9188:1:1"
- }
- ],
- "id": 711,
- "name": "IndexAccess",
- "src": "9170:20:1"
- }
- ],
- "id": 712,
- "name": "VariableDeclarationStatement",
- "src": "9145:45:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "&&",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 713,
- "name": "Identifier",
- "src": "9212:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 714,
- "name": "Identifier",
- "src": "9220:14:1"
- }
- ],
- "id": 715,
- "name": "IndexAccess",
- "src": "9212:23:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 716,
- "name": "ElementaryTypeName",
- "src": "9239:7:1"
- }
- ],
- "id": 717,
- "name": "ElementaryTypeNameExpression",
- "src": "9239:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 718,
- "name": "Literal",
- "src": "9247:1:1"
- }
- ],
- "id": 719,
- "name": "FunctionCall",
- "src": "9239:10:1"
- }
- ],
- "id": 720,
- "name": "BinaryOperation",
- "src": "9212:37:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 721,
- "name": "Identifier",
- "src": "9253:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 722,
- "name": "Identifier",
- "src": "9264:14:1"
- }
- ],
- "id": 723,
- "name": "IndexAccess",
- "src": "9253:26:1"
- }
- ],
- "id": 724,
- "name": "BinaryOperation",
- "src": "9212:67:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 725,
- "name": "Identifier",
- "src": "9303:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 726,
- "name": "Identifier",
- "src": "9314:14:1"
- }
- ],
- "id": 727,
- "name": "IndexAccess",
- "src": "9303:26:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "66616c7365",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "false"
- },
- "id": 728,
- "name": "Literal",
- "src": "9332:5:1"
- }
- ],
- "id": 729,
- "name": "Assignment",
- "src": "9303:34:1"
- }
- ],
- "id": 730,
- "name": "ExpressionStatement",
- "src": "9303:34:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 731,
- "name": "Identifier",
- "src": "9359:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 732,
- "name": "Identifier",
- "src": "9365:14:1"
- }
- ],
- "id": 733,
- "name": "IndexAccess",
- "src": "9359:21:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 734,
- "name": "Identifier",
- "src": "9383:14:1"
- }
- ],
- "id": 735,
- "name": "Assignment",
- "src": "9359:38:1"
- }
- ],
- "id": 736,
- "name": "ExpressionStatement",
- "src": "9359:38:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 113,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenRemoved"
- },
- "id": 737,
- "name": "Identifier",
- "src": "9424:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 664,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 738,
- "name": "Identifier",
- "src": "9440:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 739,
- "name": "Identifier",
- "src": "9450:14:1"
- }
- ],
- "id": 740,
- "name": "FunctionCall",
- "src": "9424:41:1"
- }
- ],
- "id": 741,
- "name": "EmitStatement",
- "src": "9419:46:1"
- }
- ],
- "id": 742,
- "name": "Block",
- "src": "9281:203:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "&&",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 743,
- "name": "Identifier",
- "src": "9494:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 744,
- "name": "Identifier",
- "src": "9502:14:1"
- }
- ],
- "id": 745,
- "name": "IndexAccess",
- "src": "9494:23:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 746,
- "name": "ElementaryTypeName",
- "src": "9521:7:1"
- }
- ],
- "id": 747,
- "name": "ElementaryTypeNameExpression",
- "src": "9521:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 748,
- "name": "Literal",
- "src": "9529:1:1"
- }
- ],
- "id": 749,
- "name": "FunctionCall",
- "src": "9521:10:1"
- }
- ],
- "id": 750,
- "name": "BinaryOperation",
- "src": "9494:37:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!",
- "prefix": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 751,
- "name": "Identifier",
- "src": "9536:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 752,
- "name": "Identifier",
- "src": "9547:14:1"
- }
- ],
- "id": 753,
- "name": "IndexAccess",
- "src": "9536:26:1"
- }
- ],
- "id": 754,
- "name": "UnaryOperation",
- "src": "9535:27:1"
- }
- ],
- "id": 755,
- "name": "BinaryOperation",
- "src": "9494:68:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 120,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenErrorNoParent"
- },
- "id": 756,
- "name": "Identifier",
- "src": "9590:21:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 664,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 757,
- "name": "Identifier",
- "src": "9612:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 758,
- "name": "Identifier",
- "src": "9622:14:1"
- }
- ],
- "id": 759,
- "name": "FunctionCall",
- "src": "9590:47:1"
- }
- ],
- "id": 760,
- "name": "EmitStatement",
- "src": "9585:52:1"
- }
- ],
- "id": 761,
- "name": "Block",
- "src": "9563:93:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 127,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenErrorNoExistence"
- },
- "id": 762,
- "name": "Identifier",
- "src": "9689:24:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 664,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 763,
- "name": "Identifier",
- "src": "9714:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 708,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 764,
- "name": "Identifier",
- "src": "9724:14:1"
- }
- ],
- "id": 765,
- "name": "FunctionCall",
- "src": "9689:50:1"
- }
- ],
- "id": 766,
- "name": "EmitStatement",
- "src": "9684:55:1"
- }
- ],
- "id": 767,
- "name": "Block",
- "src": "9662:96:1"
- }
- ],
- "id": 768,
- "name": "IfStatement",
- "src": "9490:268:1"
- }
- ],
- "id": 769,
- "name": "IfStatement",
- "src": "9208:550:1"
- }
- ],
- "id": 770,
- "name": "Block",
- "src": "9127:645:1"
- }
- ],
- "id": 771,
- "name": "ForStatement",
- "src": "9087:685:1"
- }
- ],
- "id": 772,
- "name": "Block",
- "src": "9073:709:1"
- }
- ],
- "id": 773,
- "name": "IfStatement",
- "src": "9052:730:1"
- }
- ],
- "id": 774,
- "name": "Block",
- "src": "8769:1019:1"
- }
- ],
- "id": 775,
- "name": "FunctionDefinition",
- "src": "8677:1111:1"
- },
- {
- "attributes": {
- "functionSelector": "7c1c6c27",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "removeParentGeoDID",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Removes a parent GeoDID from an already existent geoDID\n Emits a {ParentAdded} event."
- },
- "id": 776,
- "name": "StructuredDocumentation",
- "src": "9796:122:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 839,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 777,
- "name": "ElementaryTypeName",
- "src": "9951:7:1"
- }
- ],
- "id": 778,
- "name": "VariableDeclaration",
- "src": "9951:16:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "parentGeoDIDId",
- "overrides": null,
- "scope": 839,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 779,
- "name": "ElementaryTypeName",
- "src": "9969:7:1"
- }
- ],
- "id": 780,
- "name": "VariableDeclaration",
- "src": "9969:22:1"
- }
- ],
- "id": 781,
- "name": "ParameterList",
- "src": "9950:42:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 782,
- "name": "ParameterList",
- "src": "10000:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a63f9d7c89af474141c60ef50b69afc5ff92c5a8bca01ae8bf1ad58a8d517343",
- "typeString": "literal_string \"SpatialAssets: must have data supplier role to register\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 783,
- "name": "Identifier",
- "src": "10010:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "bool",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_address_payable",
- "typeString": "address payable"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1148,
- "type": "function (bytes32,address) view returns (bool)",
- "value": "hasRole"
- },
- "id": 784,
- "name": "Identifier",
- "src": "10018:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 139,
- "type": "bytes32",
- "value": "DATA_SUPPLIER"
- },
- "id": 785,
- "name": "Identifier",
- "src": "10026:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 786,
- "name": "Identifier",
- "src": "10041:10:1"
- }
- ],
- "id": 787,
- "name": "FunctionCall",
- "src": "10041:12:1"
- }
- ],
- "id": 788,
- "name": "FunctionCall",
- "src": "10018:36:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206d7573742068617665206461746120737570706c69657220726f6c6520746f207265676973746572",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: must have data supplier role to register\"",
- "value": "SpatialAssets: must have data supplier role to register"
- },
- "id": 789,
- "name": "Literal",
- "src": "10056:57:1"
- }
- ],
- "id": 790,
- "name": "FunctionCall",
- "src": "10010:104:1"
- }
- ],
- "id": 791,
- "name": "ExpressionStatement",
- "src": "10010:104:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_a2ba2ebfc38e548fefdb3c30fe605533706b9d98e3015ed81adb67a22d6cd33c",
- "typeString": "literal_string \"SpatialAssets: id must not have an owner yet\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 792,
- "name": "Identifier",
- "src": "10124:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 793,
- "name": "Identifier",
- "src": "10132:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 778,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 794,
- "name": "Identifier",
- "src": "10140:8:1"
- }
- ],
- "id": 795,
- "name": "IndexAccess",
- "src": "10132:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 796,
- "name": "Identifier",
- "src": "10153:10:1"
- }
- ],
- "id": 797,
- "name": "FunctionCall",
- "src": "10153:12:1"
- }
- ],
- "id": 798,
- "name": "BinaryOperation",
- "src": "10132:33:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a206964206d757374206e6f74206861766520616e206f776e657220796574",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: id must not have an owner yet\"",
- "value": "SpatialAssets: id must not have an owner yet"
- },
- "id": 799,
- "name": "Literal",
- "src": "10167:46:1"
- }
- ],
- "id": 800,
- "name": "FunctionCall",
- "src": "10124:90:1"
- }
- ],
- "id": 801,
- "name": "ExpressionStatement",
- "src": "10124:90:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_64e6913217981af21a3600f4e8d0d455b10cb50ec24445db6949f4566f751285",
- "typeString": "literal_string \"SpatialAssets: GeoDID to be removed as parent does not exist\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 802,
- "name": "Identifier",
- "src": "10224:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 803,
- "name": "Identifier",
- "src": "10232:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 780,
- "type": "bytes32",
- "value": "parentGeoDIDId"
- },
- "id": 804,
- "name": "Identifier",
- "src": "10240:14:1"
- }
- ],
- "id": 805,
- "name": "IndexAccess",
- "src": "10232:23:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 806,
- "name": "ElementaryTypeName",
- "src": "10259:7:1"
- }
- ],
- "id": 807,
- "name": "ElementaryTypeNameExpression",
- "src": "10259:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 808,
- "name": "Literal",
- "src": "10267:1:1"
- }
- ],
- "id": 809,
- "name": "FunctionCall",
- "src": "10259:10:1"
- }
- ],
- "id": 810,
- "name": "BinaryOperation",
- "src": "10232:37:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a2047656f44494420746f2062652072656d6f76656420617320706172656e7420646f6573206e6f74206578697374",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: GeoDID to be removed as parent does not exist\"",
- "value": "SpatialAssets: GeoDID to be removed as parent does not exist"
- },
- "id": 811,
- "name": "Literal",
- "src": "10271:62:1"
- }
- ],
- "id": 812,
- "name": "FunctionCall",
- "src": "10224:110:1"
- }
- ],
- "id": 813,
- "name": "ExpressionStatement",
- "src": "10224:110:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_2ab9bcfb707615a94d108c25ede9d65af23320dbf20a245340508dfbee304ef0",
- "typeString": "literal_string \"SpatialAssets: GeoDID does not have a parent to remove\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 814,
- "name": "Identifier",
- "src": "10344:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 815,
- "name": "Identifier",
- "src": "10352:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 778,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 816,
- "name": "Identifier",
- "src": "10363:8:1"
- }
- ],
- "id": 817,
- "name": "IndexAccess",
- "src": "10352:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a2047656f44494420646f6573206e6f742068617665206120706172656e7420746f2072656d6f7665",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: GeoDID does not have a parent to remove\"",
- "value": "SpatialAssets: GeoDID does not have a parent to remove"
- },
- "id": 818,
- "name": "Literal",
- "src": "10374:56:1"
- }
- ],
- "id": 819,
- "name": "FunctionCall",
- "src": "10344:87:1"
- }
- ],
- "id": 820,
- "name": "ExpressionStatement",
- "src": "10344:87:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 821,
- "name": "Identifier",
- "src": "10442:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 778,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 822,
- "name": "Identifier",
- "src": "10453:8:1"
- }
- ],
- "id": 823,
- "name": "IndexAccess",
- "src": "10442:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "66616c7365",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "false"
- },
- "id": 824,
- "name": "Literal",
- "src": "10465:5:1"
- }
- ],
- "id": 825,
- "name": "Assignment",
- "src": "10442:28:1"
- }
- ],
- "id": 826,
- "name": "ExpressionStatement",
- "src": "10442:28:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 827,
- "name": "Identifier",
- "src": "10480:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 778,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 828,
- "name": "Identifier",
- "src": "10486:8:1"
- }
- ],
- "id": 829,
- "name": "IndexAccess",
- "src": "10480:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 778,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 830,
- "name": "Identifier",
- "src": "10498:8:1"
- }
- ],
- "id": 831,
- "name": "Assignment",
- "src": "10480:26:1"
- }
- ],
- "id": 832,
- "name": "ExpressionStatement",
- "src": "10480:26:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 106,
- "type": "function (bytes32,bytes32)",
- "value": "ParentRemoved"
- },
- "id": 833,
- "name": "Identifier",
- "src": "10530:13:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 778,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 834,
- "name": "Identifier",
- "src": "10544:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 780,
- "type": "bytes32",
- "value": "parentGeoDIDId"
- },
- "id": 835,
- "name": "Identifier",
- "src": "10554:14:1"
- }
- ],
- "id": 836,
- "name": "FunctionCall",
- "src": "10530:39:1"
- }
- ],
- "id": 837,
- "name": "EmitStatement",
- "src": "10525:44:1"
- }
- ],
- "id": 838,
- "name": "Block",
- "src": "10000:576:1"
- }
- ],
- "id": 839,
- "name": "FunctionDefinition",
- "src": "9923:653:1"
- },
- {
- "attributes": {
- "functionSelector": "0e437b1c",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "deactivateSpatialAsset",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev De-registers a spatial asset"
- },
- "id": 840,
- "name": "StructuredDocumentation",
- "src": "10582:52:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "geoDIDId",
- "overrides": null,
- "scope": 981,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 841,
- "name": "ElementaryTypeName",
- "src": "10672:7:1"
- }
- ],
- "id": 842,
- "name": "VariableDeclaration",
- "src": "10672:16:1"
- },
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrenToRemove",
- "overrides": null,
- "scope": 981,
- "stateVariable": false,
- "storageLocation": "memory",
- "type": "bytes32[]",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "length": null,
- "type": "bytes32[]"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 843,
- "name": "ElementaryTypeName",
- "src": "10690:7:1"
- }
- ],
- "id": 844,
- "name": "ArrayTypeName",
- "src": "10690:9:1"
- }
- ],
- "id": 845,
- "name": "VariableDeclaration",
- "src": "10690:33:1"
- }
- ],
- "id": 846,
- "name": "ParameterList",
- "src": "10671:53:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 847,
- "name": "ParameterList",
- "src": "10732:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- {
- "typeIdentifier": "t_stringliteral_9236a874bf5a6a62bd70349ebeda081a8e8ed50334b7a53f944cd4f8601c274c",
- "typeString": "literal_string \"SpatialAssets: caller is not owner of the Spatial Asset\""
- }
- ],
- "overloadedDeclarations": [
- -18,
- -18
- ],
- "referencedDeclaration": -18,
- "type": "function (bool,string memory) pure",
- "value": "require"
- },
- "id": 848,
- "name": "Identifier",
- "src": "10742:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "==",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 849,
- "name": "Identifier",
- "src": "10763:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 850,
- "name": "Identifier",
- "src": "10771:8:1"
- }
- ],
- "id": 851,
- "name": "IndexAccess",
- "src": "10763:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "arguments": [
- null
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- null
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1666,
- "type": "function () view returns (address payable)",
- "value": "_msgSender"
- },
- "id": 852,
- "name": "Identifier",
- "src": "10784:10:1"
- }
- ],
- "id": 853,
- "name": "FunctionCall",
- "src": "10784:12:1"
- }
- ],
- "id": 854,
- "name": "BinaryOperation",
- "src": "10763:33:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "5370617469616c4173736574733a2063616c6c6572206973206e6f74206f776e6572206f6620746865205370617469616c204173736574",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"SpatialAssets: caller is not owner of the Spatial Asset\"",
- "value": "SpatialAssets: caller is not owner of the Spatial Asset"
- },
- "id": 855,
- "name": "Literal",
- "src": "10797:57:1"
- }
- ],
- "id": 856,
- "name": "FunctionCall",
- "src": "10742:122:1"
- }
- ],
- "id": 857,
- "name": "ExpressionStatement",
- "src": "10742:122:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 858,
- "name": "Identifier",
- "src": "10874:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 859,
- "name": "Identifier",
- "src": "10882:8:1"
- }
- ],
- "id": 860,
- "name": "IndexAccess",
- "src": "10874:17:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 861,
- "name": "ElementaryTypeName",
- "src": "10894:7:1"
- }
- ],
- "id": 862,
- "name": "ElementaryTypeNameExpression",
- "src": "10894:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 863,
- "name": "Literal",
- "src": "10902:1:1"
- }
- ],
- "id": 864,
- "name": "FunctionCall",
- "src": "10894:10:1"
- }
- ],
- "id": 865,
- "name": "Assignment",
- "src": "10874:30:1"
- }
- ],
- "id": 866,
- "name": "ExpressionStatement",
- "src": "10874:30:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 165,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_externalStorage"
- },
- "id": 867,
- "name": "Identifier",
- "src": "10914:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 868,
- "name": "Identifier",
- "src": "10931:8:1"
- }
- ],
- "id": 869,
- "name": "IndexAccess",
- "src": "10914:26:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"\"",
- "value": ""
- },
- "id": 870,
- "name": "Literal",
- "src": "10943:2:1"
- }
- ],
- "id": 871,
- "name": "Assignment",
- "src": "10914:31:1"
- }
- ],
- "id": 872,
- "name": "ExpressionStatement",
- "src": "10914:31:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 149,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_cids"
- },
- "id": 873,
- "name": "Identifier",
- "src": "10955:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 874,
- "name": "Identifier",
- "src": "10961:8:1"
- }
- ],
- "id": 875,
- "name": "IndexAccess",
- "src": "10955:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"\"",
- "value": ""
- },
- "id": 876,
- "name": "Literal",
- "src": "10973:2:1"
- }
- ],
- "id": 877,
- "name": "Assignment",
- "src": "10955:20:1"
- }
- ],
- "id": 878,
- "name": "ExpressionStatement",
- "src": "10955:20:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 879,
- "name": "Identifier",
- "src": "10985:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 880,
- "name": "Identifier",
- "src": "10996:8:1"
- }
- ],
- "id": 881,
- "name": "IndexAccess",
- "src": "10985:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "66616c7365",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "false"
- },
- "id": 882,
- "name": "Literal",
- "src": "11008:5:1"
- }
- ],
- "id": 883,
- "name": "Assignment",
- "src": "10985:28:1"
- }
- ],
- "id": 884,
- "name": "ExpressionStatement",
- "src": "10985:28:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 885,
- "name": "Identifier",
- "src": "11023:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 886,
- "name": "Identifier",
- "src": "11029:8:1"
- }
- ],
- "id": 887,
- "name": "IndexAccess",
- "src": "11023:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "string",
- "type": "literal_string \"\"",
- "value": ""
- },
- "id": 888,
- "name": "Literal",
- "src": "11041:2:1"
- }
- ],
- "id": 889,
- "name": "Assignment",
- "src": "11023:20:1"
- }
- ],
- "id": 890,
- "name": "ExpressionStatement",
- "src": "11023:20:1"
- },
- {
- "attributes": {
- "assignments": [
- 892
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrensLen",
- "overrides": null,
- "scope": 980,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "uint256",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "uint256",
- "type": "uint256"
- },
- "id": 891,
- "name": "ElementaryTypeName",
- "src": "11054:7:1"
- }
- ],
- "id": 892,
- "name": "VariableDeclaration",
- "src": "11054:20:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "member_name": "length",
- "referencedDeclaration": null,
- "type": "uint256"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 845,
- "type": "bytes32[] memory",
- "value": "childrenToRemove"
- },
- "id": 893,
- "name": "Identifier",
- "src": "11077:16:1"
- }
- ],
- "id": 894,
- "name": "MemberAccess",
- "src": "11077:23:1"
- }
- ],
- "id": 895,
- "name": "VariableDeclarationStatement",
- "src": "11054:46:1"
- },
- {
- "attributes": {
- "falseBody": null
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": ">",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 892,
- "type": "uint256",
- "value": "childrensLen"
- },
- "id": 896,
- "name": "Identifier",
- "src": "11115:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 897,
- "name": "Literal",
- "src": "11130:1:1"
- }
- ],
- "id": 898,
- "name": "BinaryOperation",
- "src": "11115:16:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "assignments": [
- 900
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "j",
- "overrides": null,
- "scope": 973,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "uint256",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "uint256",
- "type": "uint256"
- },
- "id": 899,
- "name": "ElementaryTypeName",
- "src": "11150:7:1"
- }
- ],
- "id": 900,
- "name": "VariableDeclaration",
- "src": "11150:9:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 901,
- "name": "Literal",
- "src": "11160:1:1"
- }
- ],
- "id": 902,
- "name": "VariableDeclarationStatement",
- "src": "11150:11:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_uint256",
- "typeString": "uint256"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "<",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 900,
- "type": "uint256",
- "value": "j"
- },
- "id": 903,
- "name": "Identifier",
- "src": "11163:1:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 892,
- "type": "uint256",
- "value": "childrensLen"
- },
- "id": 904,
- "name": "Identifier",
- "src": "11167:12:1"
- }
- ],
- "id": 905,
- "name": "BinaryOperation",
- "src": "11163:16:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "++",
- "prefix": false,
- "type": "uint256"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 900,
- "type": "uint256",
- "value": "j"
- },
- "id": 906,
- "name": "Identifier",
- "src": "11181:1:1"
- }
- ],
- "id": 907,
- "name": "UnaryOperation",
- "src": "11181:3:1"
- }
- ],
- "id": 908,
- "name": "ExpressionStatement",
- "src": "11181:3:1"
- },
- {
- "children": [
- {
- "attributes": {
- "assignments": [
- 910
- ]
- },
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "childrenGeoDID",
- "overrides": null,
- "scope": 972,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 909,
- "name": "ElementaryTypeName",
- "src": "11204:7:1"
- }
- ],
- "id": 910,
- "name": "VariableDeclaration",
- "src": "11204:22:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 845,
- "type": "bytes32[] memory",
- "value": "childrenToRemove"
- },
- "id": 911,
- "name": "Identifier",
- "src": "11229:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 900,
- "type": "uint256",
- "value": "j"
- },
- "id": 912,
- "name": "Identifier",
- "src": "11246:1:1"
- }
- ],
- "id": 913,
- "name": "IndexAccess",
- "src": "11229:19:1"
- }
- ],
- "id": 914,
- "name": "VariableDeclarationStatement",
- "src": "11204:44:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "&&",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 915,
- "name": "Identifier",
- "src": "11270:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 916,
- "name": "Identifier",
- "src": "11278:14:1"
- }
- ],
- "id": 917,
- "name": "IndexAccess",
- "src": "11270:23:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 918,
- "name": "ElementaryTypeName",
- "src": "11297:7:1"
- }
- ],
- "id": 919,
- "name": "ElementaryTypeNameExpression",
- "src": "11297:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 920,
- "name": "Literal",
- "src": "11305:1:1"
- }
- ],
- "id": 921,
- "name": "FunctionCall",
- "src": "11297:10:1"
- }
- ],
- "id": 922,
- "name": "BinaryOperation",
- "src": "11270:37:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 923,
- "name": "Identifier",
- "src": "11311:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 924,
- "name": "Identifier",
- "src": "11322:14:1"
- }
- ],
- "id": 925,
- "name": "IndexAccess",
- "src": "11311:26:1"
- }
- ],
- "id": 926,
- "name": "BinaryOperation",
- "src": "11270:67:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 927,
- "name": "Identifier",
- "src": "11361:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 928,
- "name": "Identifier",
- "src": "11372:14:1"
- }
- ],
- "id": 929,
- "name": "IndexAccess",
- "src": "11361:26:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "66616c7365",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "bool",
- "type": "bool",
- "value": "false"
- },
- "id": 930,
- "name": "Literal",
- "src": "11390:5:1"
- }
- ],
- "id": 931,
- "name": "Assignment",
- "src": "11361:34:1"
- }
- ],
- "id": 932,
- "name": "ExpressionStatement",
- "src": "11361:34:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": true,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 161,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_root"
- },
- "id": 933,
- "name": "Identifier",
- "src": "11417:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 934,
- "name": "Identifier",
- "src": "11423:14:1"
- }
- ],
- "id": 935,
- "name": "IndexAccess",
- "src": "11417:21:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 936,
- "name": "Identifier",
- "src": "11441:14:1"
- }
- ],
- "id": 937,
- "name": "Assignment",
- "src": "11417:38:1"
- }
- ],
- "id": 938,
- "name": "ExpressionStatement",
- "src": "11417:38:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 113,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenRemoved"
- },
- "id": 939,
- "name": "Identifier",
- "src": "11482:15:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 940,
- "name": "Identifier",
- "src": "11498:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 941,
- "name": "Identifier",
- "src": "11508:14:1"
- }
- ],
- "id": 942,
- "name": "FunctionCall",
- "src": "11482:41:1"
- }
- ],
- "id": 943,
- "name": "EmitStatement",
- "src": "11477:46:1"
- }
- ],
- "id": 944,
- "name": "Block",
- "src": "11339:203:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_bool",
- "typeString": "bool"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "&&",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "commonType": {
- "typeIdentifier": "t_address",
- "typeString": "address"
- },
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!=",
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 945,
- "name": "Identifier",
- "src": "11553:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 946,
- "name": "Identifier",
- "src": "11561:14:1"
- }
- ],
- "id": 947,
- "name": "IndexAccess",
- "src": "11553:23:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "address payable",
- "type_conversion": true
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_rational_0_by_1",
- "typeString": "int_const 0"
- }
- ],
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "type": "type(address)"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "type": null
- },
- "id": 948,
- "name": "ElementaryTypeName",
- "src": "11580:7:1"
- }
- ],
- "id": 949,
- "name": "ElementaryTypeNameExpression",
- "src": "11580:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "hexvalue": "30",
- "isConstant": false,
- "isLValue": false,
- "isPure": true,
- "lValueRequested": false,
- "subdenomination": null,
- "token": "number",
- "type": "int_const 0",
- "value": "0"
- },
- "id": 950,
- "name": "Literal",
- "src": "11588:1:1"
- }
- ],
- "id": 951,
- "name": "FunctionCall",
- "src": "11580:10:1"
- }
- ],
- "id": 952,
- "name": "BinaryOperation",
- "src": "11553:37:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "!",
- "prefix": true,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 953,
- "name": "Identifier",
- "src": "11595:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 954,
- "name": "Identifier",
- "src": "11606:14:1"
- }
- ],
- "id": 955,
- "name": "IndexAccess",
- "src": "11595:26:1"
- }
- ],
- "id": 956,
- "name": "UnaryOperation",
- "src": "11594:27:1"
- }
- ],
- "id": 957,
- "name": "BinaryOperation",
- "src": "11553:68:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 120,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenErrorNoParent"
- },
- "id": 958,
- "name": "Identifier",
- "src": "11649:21:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 959,
- "name": "Identifier",
- "src": "11671:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 960,
- "name": "Identifier",
- "src": "11681:14:1"
- }
- ],
- "id": 961,
- "name": "FunctionCall",
- "src": "11649:47:1"
- }
- ],
- "id": 962,
- "name": "EmitStatement",
- "src": "11644:52:1"
- }
- ],
- "id": 963,
- "name": "Block",
- "src": "11622:93:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- },
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 127,
- "type": "function (bytes32,bytes32)",
- "value": "ChildrenErrorNoExistence"
- },
- "id": 964,
- "name": "Identifier",
- "src": "11748:24:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 965,
- "name": "Identifier",
- "src": "11773:8:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 910,
- "type": "bytes32",
- "value": "childrenGeoDID"
- },
- "id": 966,
- "name": "Identifier",
- "src": "11783:14:1"
- }
- ],
- "id": 967,
- "name": "FunctionCall",
- "src": "11748:50:1"
- }
- ],
- "id": 968,
- "name": "EmitStatement",
- "src": "11743:55:1"
- }
- ],
- "id": 969,
- "name": "Block",
- "src": "11721:96:1"
- }
- ],
- "id": 970,
- "name": "IfStatement",
- "src": "11549:268:1"
- }
- ],
- "id": 971,
- "name": "IfStatement",
- "src": "11266:551:1"
- }
- ],
- "id": 972,
- "name": "Block",
- "src": "11186:645:1"
- }
- ],
- "id": 973,
- "name": "ForStatement",
- "src": "11146:685:1"
- }
- ],
- "id": 974,
- "name": "Block",
- "src": "11132:709:1"
- }
- ],
- "id": 975,
- "name": "IfStatement",
- "src": "11111:730:1"
- },
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "isStructConstructorCall": false,
- "lValueRequested": false,
- "names": [
- null
- ],
- "tryCall": false,
- "type": "tuple()",
- "type_conversion": false
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": [
- {
- "typeIdentifier": "t_bytes32",
- "typeString": "bytes32"
- }
- ],
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 85,
- "type": "function (bytes32)",
- "value": "SpatialAssetDeactivated"
- },
- "id": 976,
- "name": "Identifier",
- "src": "11856:23:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 842,
- "type": "bytes32",
- "value": "geoDIDId"
- },
- "id": 977,
- "name": "Identifier",
- "src": "11880:8:1"
- }
- ],
- "id": 978,
- "name": "FunctionCall",
- "src": "11856:33:1"
- }
- ],
- "id": 979,
- "name": "EmitStatement",
- "src": "11851:38:1"
- }
- ],
- "id": 980,
- "name": "Block",
- "src": "10732:1164:1"
- }
- ],
- "id": 981,
- "name": "FunctionDefinition",
- "src": "10640:1256:1"
- },
- {
- "attributes": {
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "_setURI",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "nonpayable",
- "virtual": false,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "text": " @dev Sets a new URI for all the spatial asset types"
- },
- "id": 982,
- "name": "StructuredDocumentation",
- "src": "11904:70:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "newuri",
- "overrides": null,
- "scope": 992,
- "stateVariable": false,
- "storageLocation": "memory",
- "type": "string",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "string",
- "type": "string"
- },
- "id": 983,
- "name": "ElementaryTypeName",
- "src": "11996:6:1"
- }
- ],
- "id": 984,
- "name": "VariableDeclaration",
- "src": "11996:20:1"
- }
- ],
- "id": 985,
- "name": "ParameterList",
- "src": "11995:22:1"
- },
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 986,
- "name": "ParameterList",
- "src": "12027:0:1"
- },
- {
- "children": [
- {
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": false,
- "isPure": false,
- "lValueRequested": false,
- "operator": "=",
- "type": "string storage ref"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 141,
- "type": "string storage ref",
- "value": "_uri"
- },
- "id": 987,
- "name": "Identifier",
- "src": "12037:4:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 984,
- "type": "string memory",
- "value": "newuri"
- },
- "id": 988,
- "name": "Identifier",
- "src": "12044:6:1"
- }
- ],
- "id": 989,
- "name": "Assignment",
- "src": "12037:13:1"
- }
- ],
- "id": 990,
- "name": "ExpressionStatement",
- "src": "12037:13:1"
- }
- ],
- "id": 991,
- "name": "Block",
- "src": "12027:30:1"
- }
- ],
- "id": 992,
- "name": "FunctionDefinition",
- "src": "11979:78:1"
- },
- {
- "attributes": {
- "documentation": null,
- "functionSelector": "1dc2a7b0",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "idToOwner",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "id",
- "overrides": null,
- "scope": 1004,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 993,
- "name": "ElementaryTypeName",
- "src": "12082:7:1"
- }
- ],
- "id": 994,
- "name": "VariableDeclaration",
- "src": "12082:10:1"
- }
- ],
- "id": 995,
- "name": "ParameterList",
- "src": "12081:12:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "",
- "overrides": null,
- "scope": 1004,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "address",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "address",
- "stateMutability": "nonpayable",
- "type": "address"
- },
- "id": 996,
- "name": "ElementaryTypeName",
- "src": "12115:7:1"
- }
- ],
- "id": 997,
- "name": "VariableDeclaration",
- "src": "12115:7:1"
- }
- ],
- "id": 998,
- "name": "ParameterList",
- "src": "12114:9:1"
- },
- {
- "children": [
- {
- "attributes": {
- "functionReturnParameters": 998
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "address"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 145,
- "type": "mapping(bytes32 => address)",
- "value": "_owners"
- },
- "id": 999,
- "name": "Identifier",
- "src": "12141:7:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 994,
- "type": "bytes32",
- "value": "id"
- },
- "id": 1000,
- "name": "Identifier",
- "src": "12149:2:1"
- }
- ],
- "id": 1001,
- "name": "IndexAccess",
- "src": "12141:11:1"
- }
- ],
- "id": 1002,
- "name": "Return",
- "src": "12134:18:1"
- }
- ],
- "id": 1003,
- "name": "Block",
- "src": "12124:35:1"
- }
- ],
- "id": 1004,
- "name": "FunctionDefinition",
- "src": "12063:96:1"
- },
- {
- "attributes": {
- "documentation": null,
- "functionSelector": "c66f70cc",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "idToCid",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "id",
- "overrides": null,
- "scope": 1016,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 1005,
- "name": "ElementaryTypeName",
- "src": "12182:7:1"
- }
- ],
- "id": 1006,
- "name": "VariableDeclaration",
- "src": "12182:10:1"
- }
- ],
- "id": 1007,
- "name": "ParameterList",
- "src": "12181:12:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "",
- "overrides": null,
- "scope": 1016,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 1008,
- "name": "ElementaryTypeName",
- "src": "12215:7:1"
- }
- ],
- "id": 1009,
- "name": "VariableDeclaration",
- "src": "12215:7:1"
- }
- ],
- "id": 1010,
- "name": "ParameterList",
- "src": "12214:9:1"
- },
- {
- "children": [
- {
- "attributes": {
- "functionReturnParameters": 1010
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 149,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_cids"
- },
- "id": 1011,
- "name": "Identifier",
- "src": "12241:5:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1006,
- "type": "bytes32",
- "value": "id"
- },
- "id": 1012,
- "name": "Identifier",
- "src": "12247:2:1"
- }
- ],
- "id": 1013,
- "name": "IndexAccess",
- "src": "12241:9:1"
- }
- ],
- "id": 1014,
- "name": "Return",
- "src": "12234:16:1"
- }
- ],
- "id": 1015,
- "name": "Block",
- "src": "12224:33:1"
- }
- ],
- "id": 1016,
- "name": "FunctionDefinition",
- "src": "12165:92:1"
- },
- {
- "attributes": {
- "documentation": null,
- "functionSelector": "0bfa194d",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "idToCanBeParent",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "id",
- "overrides": null,
- "scope": 1028,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 1017,
- "name": "ElementaryTypeName",
- "src": "12288:7:1"
- }
- ],
- "id": 1018,
- "name": "VariableDeclaration",
- "src": "12288:10:1"
- }
- ],
- "id": 1019,
- "name": "ParameterList",
- "src": "12287:12:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "",
- "overrides": null,
- "scope": 1028,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bool",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bool",
- "type": "bool"
- },
- "id": 1020,
- "name": "ElementaryTypeName",
- "src": "12321:4:1"
- }
- ],
- "id": 1021,
- "name": "VariableDeclaration",
- "src": "12321:4:1"
- }
- ],
- "id": 1022,
- "name": "ParameterList",
- "src": "12320:6:1"
- },
- {
- "children": [
- {
- "attributes": {
- "functionReturnParameters": 1022
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 157,
- "type": "mapping(bytes32 => bool)",
- "value": "_canBeParent"
- },
- "id": 1023,
- "name": "Identifier",
- "src": "12344:12:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1018,
- "type": "bytes32",
- "value": "id"
- },
- "id": 1024,
- "name": "Identifier",
- "src": "12357:2:1"
- }
- ],
- "id": 1025,
- "name": "IndexAccess",
- "src": "12344:16:1"
- }
- ],
- "id": 1026,
- "name": "Return",
- "src": "12337:23:1"
- }
- ],
- "id": 1027,
- "name": "Block",
- "src": "12327:40:1"
- }
- ],
- "id": 1028,
- "name": "FunctionDefinition",
- "src": "12263:104:1"
- },
- {
- "attributes": {
- "documentation": null,
- "functionSelector": "092e9f25",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "idToHasParent",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "id",
- "overrides": null,
- "scope": 1040,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 1029,
- "name": "ElementaryTypeName",
- "src": "12396:7:1"
- }
- ],
- "id": 1030,
- "name": "VariableDeclaration",
- "src": "12396:10:1"
- }
- ],
- "id": 1031,
- "name": "ParameterList",
- "src": "12395:12:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "",
- "overrides": null,
- "scope": 1040,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bool",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bool",
- "type": "bool"
- },
- "id": 1032,
- "name": "ElementaryTypeName",
- "src": "12429:4:1"
- }
- ],
- "id": 1033,
- "name": "VariableDeclaration",
- "src": "12429:4:1"
- }
- ],
- "id": 1034,
- "name": "ParameterList",
- "src": "12428:6:1"
- },
- {
- "children": [
- {
- "attributes": {
- "functionReturnParameters": 1034
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 153,
- "type": "mapping(bytes32 => bool)",
- "value": "_hasParent"
- },
- "id": 1035,
- "name": "Identifier",
- "src": "12452:10:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1030,
- "type": "bytes32",
- "value": "id"
- },
- "id": 1036,
- "name": "Identifier",
- "src": "12463:2:1"
- }
- ],
- "id": 1037,
- "name": "IndexAccess",
- "src": "12452:14:1"
- }
- ],
- "id": 1038,
- "name": "Return",
- "src": "12445:21:1"
- }
- ],
- "id": 1039,
- "name": "Block",
- "src": "12435:38:1"
- }
- ],
- "id": 1040,
- "name": "FunctionDefinition",
- "src": "12373:100:1"
- },
- {
- "attributes": {
- "documentation": null,
- "functionSelector": "84f42912",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "idToExternalStorage",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "id",
- "overrides": null,
- "scope": 1052,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 1041,
- "name": "ElementaryTypeName",
- "src": "12508:7:1"
- }
- ],
- "id": 1042,
- "name": "VariableDeclaration",
- "src": "12508:10:1"
- }
- ],
- "id": 1043,
- "name": "ParameterList",
- "src": "12507:12:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "",
- "overrides": null,
- "scope": 1052,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 1044,
- "name": "ElementaryTypeName",
- "src": "12541:7:1"
- }
- ],
- "id": 1045,
- "name": "VariableDeclaration",
- "src": "12541:7:1"
- }
- ],
- "id": 1046,
- "name": "ParameterList",
- "src": "12540:9:1"
- },
- {
- "children": [
- {
- "attributes": {
- "functionReturnParameters": 1046
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bytes32"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 165,
- "type": "mapping(bytes32 => bytes32)",
- "value": "_externalStorage"
- },
- "id": 1047,
- "name": "Identifier",
- "src": "12567:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1042,
- "type": "bytes32",
- "value": "id"
- },
- "id": 1048,
- "name": "Identifier",
- "src": "12584:2:1"
- }
- ],
- "id": 1049,
- "name": "IndexAccess",
- "src": "12567:20:1"
- }
- ],
- "id": 1050,
- "name": "Return",
- "src": "12560:27:1"
- }
- ],
- "id": 1051,
- "name": "Block",
- "src": "12550:44:1"
- }
- ],
- "id": 1052,
- "name": "FunctionDefinition",
- "src": "12479:115:1"
- },
- {
- "attributes": {
- "documentation": null,
- "functionSelector": "8d0a9bff",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "allowedStorages",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "offChainStorage",
- "overrides": null,
- "scope": 1064,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bytes32",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bytes32",
- "type": "bytes32"
- },
- "id": 1053,
- "name": "ElementaryTypeName",
- "src": "12625:7:1"
- }
- ],
- "id": 1054,
- "name": "VariableDeclaration",
- "src": "12625:23:1"
- }
- ],
- "id": 1055,
- "name": "ParameterList",
- "src": "12624:25:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "",
- "overrides": null,
- "scope": 1064,
- "stateVariable": false,
- "storageLocation": "default",
- "type": "bool",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "bool",
- "type": "bool"
- },
- "id": 1056,
- "name": "ElementaryTypeName",
- "src": "12671:4:1"
- }
- ],
- "id": 1057,
- "name": "VariableDeclaration",
- "src": "12671:4:1"
- }
- ],
- "id": 1058,
- "name": "ParameterList",
- "src": "12670:6:1"
- },
- {
- "children": [
- {
- "attributes": {
- "functionReturnParameters": 1058
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "isConstant": false,
- "isLValue": true,
- "isPure": false,
- "lValueRequested": false,
- "type": "bool"
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 169,
- "type": "mapping(bytes32 => bool)",
- "value": "_allowedStorages"
- },
- "id": 1059,
- "name": "Identifier",
- "src": "12694:16:1"
- },
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 1054,
- "type": "bytes32",
- "value": "offChainStorage"
- },
- "id": 1060,
- "name": "Identifier",
- "src": "12711:15:1"
- }
- ],
- "id": 1061,
- "name": "IndexAccess",
- "src": "12694:33:1"
- }
- ],
- "id": 1062,
- "name": "Return",
- "src": "12687:40:1"
- }
- ],
- "id": 1063,
- "name": "Block",
- "src": "12677:57:1"
- }
- ],
- "id": 1064,
- "name": "FunctionDefinition",
- "src": "12600:134:1"
- },
- {
- "attributes": {
- "documentation": null,
- "functionSelector": "eac989f8",
- "implemented": true,
- "isConstructor": false,
- "kind": "function",
- "modifiers": [
- null
- ],
- "name": "uri",
- "overrides": null,
- "scope": 1073,
- "stateMutability": "view",
- "virtual": false,
- "visibility": "public"
- },
- "children": [
- {
- "attributes": {
- "parameters": [
- null
- ]
- },
- "children": [],
- "id": 1065,
- "name": "ParameterList",
- "src": "12752:2:1"
- },
- {
- "children": [
- {
- "attributes": {
- "constant": false,
- "mutability": "mutable",
- "name": "",
- "overrides": null,
- "scope": 1072,
- "stateVariable": false,
- "storageLocation": "memory",
- "type": "string",
- "value": null,
- "visibility": "internal"
- },
- "children": [
- {
- "attributes": {
- "name": "string",
- "type": "string"
- },
- "id": 1066,
- "name": "ElementaryTypeName",
- "src": "12776:6:1"
- }
- ],
- "id": 1067,
- "name": "VariableDeclaration",
- "src": "12776:13:1"
- }
- ],
- "id": 1068,
- "name": "ParameterList",
- "src": "12775:15:1"
- },
- {
- "children": [
- {
- "attributes": {
- "functionReturnParameters": 1068
- },
- "children": [
- {
- "attributes": {
- "argumentTypes": null,
- "overloadedDeclarations": [
- null
- ],
- "referencedDeclaration": 141,
- "type": "string storage ref",
- "value": "_uri"
- },
- "id": 1069,
- "name": "Identifier",
- "src": "12808:4:1"
- }
- ],
- "id": 1070,
- "name": "Return",
- "src": "12801:11:1"
- }
- ],
- "id": 1071,
- "name": "Block",
- "src": "12791:28:1"
- }
- ],
- "id": 1072,
- "name": "FunctionDefinition",
- "src": "12740:79:1"
- }
- ],
- "id": 1073,
- "name": "ContractDefinition",
- "src": "539:12282:1"
- }
- ],
- "id": 1074,
- "name": "SourceUnit",
- "src": "42:12780:1"
- },
- "compiler": {
- "name": "solc",
- "version": "0.6.12+commit.27d51765.Emscripten.clang"
- },
- "networks": {
- "3": {
- "events": {
- "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "previousAdminRole",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "newAdminRole",
- "type": "bytes32"
- }
- ],
- "name": "RoleAdminChanged",
- "type": "event"
- },
- "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "account",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "sender",
- "type": "address"
- }
- ],
- "name": "RoleGranted",
- "type": "event"
- },
- "0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "account",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "sender",
- "type": "address"
- }
- ],
- "name": "RoleRevoked",
- "type": "event"
- },
- "0xa6cc161f6b65bbf394777cb57fb5f3d43cce56acfa59850ab99594ef35b99aab": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "id",
- "type": "uint256"
- }
- ],
- "name": "SpatialAssetDeactivated",
- "type": "event"
- },
- "0x60d3fb6a4380f21d92b1cbafb25d8d0f693bc9e359cafc542bc0d01a0732a936": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "id",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0x33974780998cd0a6a121380888197f6af20340bc338905596e0c8819ae461a7b": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "childrenGeoDIDId",
- "type": "uint256"
- }
- ],
- "name": "ChildrenAdded",
- "type": "event"
- },
- "0xd9446a40bb30eb7c68d45f553a8344a460470e6120827bbaa22bb731e455c3ed": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "childrenGeoDIDId",
- "type": "uint256"
- }
- ],
- "name": "ChildrenRemoved",
- "type": "event"
- },
- "0x00a67c7413e7cbd6fa0dfd556b6bfb0844428500ee38687ae6c65ecf371df4e2": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "parentGeoDIDId",
- "type": "uint256"
- }
- ],
- "name": "ParentAdded",
- "type": "event"
- },
- "0x8b572be57bab095e1edbcb8666bc126bab7989981d0724d3a8d44966f02e6583": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "parentGeoDIDId",
- "type": "uint256"
- }
- ],
- "name": "ParentRemoved",
- "type": "event"
- },
- "0x6958d9a5b92b38869062a9e904dc1f2343e1f6b7cd07d5bee19a677b1f253bd2": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "uint256[]",
- "name": "childrenToRemove",
- "type": "uint256[]"
- }
- ],
- "name": "SpatialAssetDeactivated",
- "type": "event"
- },
- "0xc3c858e6322b126c4de2de41f4a8f82707e31807c2f72d3a9e3a1b6552cfcdc5": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "cid",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "root",
- "type": "bool"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "canBeParent",
- "type": "bool"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0x0cc103a5869a49c97e798d0ac77b8483c91e7df0b64be636187cba93b7ae367d": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "cid",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "root",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "canBeParent",
- "type": "bool"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0xc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenAdded",
- "type": "event"
- },
- "0x64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenRemoved",
- "type": "event"
- },
- "0xe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d06": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "parentGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ParentAdded",
- "type": "event"
- },
- "0x09ba4d5138fa8cb519e6a82fc3d9fe09a800f44f4b25ecea405424f82ffcaca9": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "parentGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ParentRemoved",
- "type": "event"
- },
- "0xfca200adc1021dfcfba93d50e56819ff7cd406f40d8fb784caf11d8c114a78fd": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bytes32[]",
- "name": "childrenToRemove",
- "type": "bytes32[]"
- }
- ],
- "name": "SpatialAssetDeactivated",
- "type": "event"
- },
- "0x63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "cid",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "root",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "canBeParent",
- "type": "bool"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0xf02d29e4850d2beddb5886160b76b29bd18836de50f35dde5b1ce3e11ec43bb8": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "SpatialAssetDeactivated",
- "type": "event"
- },
- "0xc2fbe5202fa3aef19d26284e739c3305170f8c2e9acf77122fc10277a492ac6b": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenErrorHasParent",
- "type": "event"
- },
- "0x9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda0466": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenErrorNoExistence",
- "type": "event"
- },
- "0x69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenErrorNoParent",
- "type": "event"
- }
- },
- "links": {},
- "address": "0xD57a165739C1717A1AfDb1C4B2c80f4b87d57933",
- "transactionHash": "0x758b4849270a601b9e824ed832cbc64d461b7500e90323bb505152a7b808fb03"
- },
- "333": {
- "events": {
- "0x33974780998cd0a6a121380888197f6af20340bc338905596e0c8819ae461a7b": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "childrenGeoDIDId",
- "type": "uint256"
- }
- ],
- "name": "ChildrenAdded",
- "type": "event"
- },
- "0xd9446a40bb30eb7c68d45f553a8344a460470e6120827bbaa22bb731e455c3ed": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "childrenGeoDIDId",
- "type": "uint256"
- }
- ],
- "name": "ChildrenRemoved",
- "type": "event"
- },
- "0x00a67c7413e7cbd6fa0dfd556b6bfb0844428500ee38687ae6c65ecf371df4e2": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "parentGeoDIDId",
- "type": "uint256"
- }
- ],
- "name": "ParentAdded",
- "type": "event"
- },
- "0x8b572be57bab095e1edbcb8666bc126bab7989981d0724d3a8d44966f02e6583": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "parentGeoDIDId",
- "type": "uint256"
- }
- ],
- "name": "ParentRemoved",
- "type": "event"
- },
- "0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "previousAdminRole",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "newAdminRole",
- "type": "bytes32"
- }
- ],
- "name": "RoleAdminChanged",
- "type": "event"
- },
- "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "account",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "sender",
- "type": "address"
- }
- ],
- "name": "RoleGranted",
- "type": "event"
- },
- "0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "role",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "account",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "sender",
- "type": "address"
- }
- ],
- "name": "RoleRevoked",
- "type": "event"
- },
- "0xa6cc161f6b65bbf394777cb57fb5f3d43cce56acfa59850ab99594ef35b99aab": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "id",
- "type": "uint256"
- }
- ],
- "name": "SpatialAssetDeactivated",
- "type": "event"
- },
- "0xab0f458e596764e6af15283b8bc76a316532e1149acd758550d12f9041362f78": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "cid",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0xfacd7723c5f086c22b992e5f37de5ae73ad1f38829f0636b23d493040e1470b0": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "cid",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "root",
- "type": "bool"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0x6958d9a5b92b38869062a9e904dc1f2343e1f6b7cd07d5bee19a677b1f253bd2": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "uint256[]",
- "name": "childrenToRemove",
- "type": "uint256[]"
- }
- ],
- "name": "SpatialAssetDeactivated",
- "type": "event"
- },
- "0xc2978c9c04ebd4422d798a4cd3e559a4a40d60aa4cead5bafe79a0278fc9ef37": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "cid",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "root",
- "type": "bool"
- },
- {
- "indexed": false,
- "internalType": "string",
- "name": "geoDIDtype",
- "type": "string"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0xc3c858e6322b126c4de2de41f4a8f82707e31807c2f72d3a9e3a1b6552cfcdc5": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "cid",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "root",
- "type": "bool"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "canBeParent",
- "type": "bool"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0x0cc103a5869a49c97e798d0ac77b8483c91e7df0b64be636187cba93b7ae367d": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "geoDIDId",
- "type": "uint256"
- },
- {
- "indexed": true,
- "internalType": "uint256",
- "name": "cid",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "uint256",
- "name": "root",
- "type": "uint256"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "canBeParent",
- "type": "bool"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0xc5188e1ad025cd9b14f9b77496a121bb77c2aca1c221401a1e92288a93ad143d": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenAdded",
- "type": "event"
- },
- "0x64cd8d5daa1351ab7ef481cd86ebc8d199e153d85b6442711dbaa6ee68989eee": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenRemoved",
- "type": "event"
- },
- "0xe4dc822b14b51bcb0daee9b2a47ad5cfe785b97988c9ba9fb18a008fa74d8d06": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "parentGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ParentAdded",
- "type": "event"
- },
- "0x09ba4d5138fa8cb519e6a82fc3d9fe09a800f44f4b25ecea405424f82ffcaca9": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "parentGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ParentRemoved",
- "type": "event"
- },
- "0xfca200adc1021dfcfba93d50e56819ff7cd406f40d8fb784caf11d8c114a78fd": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bytes32[]",
- "name": "childrenToRemove",
- "type": "bytes32[]"
- }
- ],
- "name": "SpatialAssetDeactivated",
- "type": "event"
- },
- "0x63b20be522ec742d63054a358a08806c3d3645cddc76f3ffcd2e5a66697a47a2": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "address",
- "name": "to",
- "type": "address"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "cid",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "offChainStorage",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bytes32",
- "name": "root",
- "type": "bytes32"
- },
- {
- "indexed": false,
- "internalType": "bool",
- "name": "canBeParent",
- "type": "bool"
- }
- ],
- "name": "SpatialAssetRegistered",
- "type": "event"
- },
- "0xf02d29e4850d2beddb5886160b76b29bd18836de50f35dde5b1ce3e11ec43bb8": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "SpatialAssetDeactivated",
- "type": "event"
- },
- "0xc2fbe5202fa3aef19d26284e739c3305170f8c2e9acf77122fc10277a492ac6b": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenErrorHasParent",
- "type": "event"
- },
- "0x9fd08a31a95521d410b6d20008384ec9a65bff57159bb95ad8ba86c03fda0466": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenErrorNoExistence",
- "type": "event"
- },
- "0x69081739e741291d0f0ca163bc158eaa3775c02069512953c69e7ae7e7a1970c": {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "geoDIDId",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "childrenGeoDIDId",
- "type": "bytes32"
- }
- ],
- "name": "ChildrenErrorNoParent",
- "type": "event"
- }
- },
- "links": {},
- "address": "0xCfEB869F69431e42cdB54A4F4f105C19C080A601",
- "transactionHash": "0x126672783b76dd30253aa8f7e0fdf5d1384fac33679d57c92c3db20d360aa027"
- }
- },
- "schemaVersion": "3.3.4",
- "updatedAt": "2021-03-29T15:19:40.270Z",
- "networkType": "ethereum",
- "devdoc": {
- "details": "{SpatialAssets} registry This contract uses {AccessControl} to lock permissioned functions using the different roles - head to its documentation for details. The account that deploys the contract will be granted the 'DATA_SUPPLIER' as well as the default admin role, which will let it grant 'DATA_SUPPLIER' roles to other accounts",
- "events": {
- "ChildrenAdded(bytes32,bytes32)": {
- "details": "Emitted when a children geodid is added to a node"
- },
- "ChildrenErrorHasParent(bytes32,bytes32)": {
- "details": "Emitted when a children geodid already has a parent but shouldn't have"
- },
- "ChildrenErrorNoExistence(bytes32,bytes32)": {
- "details": "Emitted when a children geodid does not exist"
- },
- "ChildrenErrorNoParent(bytes32,bytes32)": {
- "details": "Emitted when a children geodid does not have a parent when trying to remove it from a parent"
- },
- "ChildrenRemoved(bytes32,bytes32)": {
- "details": "Emitted when a children geodid is removed from a node"
- },
- "ParentAdded(bytes32,bytes32)": {
- "details": "Emitted when a parent geodid is added to a node"
- },
- "ParentRemoved(bytes32,bytes32)": {
- "details": "Emitted when a parent geodid is removed from a node"
- },
- "SpatialAssetDeactivated(bytes32)": {
- "details": "Emitted when Spatial Assets of id `id` are deactivated."
- },
- "SpatialAssetRegistered(address,bytes32,bytes32,bytes32,bytes32,bool)": {
- "details": "Emitted when Spatial Assets of id `id` are transferred to `to``."
- }
- },
- "kind": "dev",
- "methods": {
- "addChildrenGeoDIDs(bytes32,bytes32[])": {
- "details": "Adds children GeoDIDs to an already existent geoDID Emits a {ChildrenAdded} event."
- },
- "addParentGeoDID(bytes32,bytes32)": {
- "details": "Adds a parent GeoDID to an already existent geoDID Emits a {ParentAdded} event."
- },
- "constructor": {
- "details": "Grants `DEFAULT_ADMIN_ROLE`, `DATA_SUPPLIER` to the account that deploys the contract."
- },
- "deactivateSpatialAsset(bytes32,bytes32[])": {
- "details": "De-registers a spatial asset"
- },
- "disableStorage(bytes32)": {
- "details": "Disables an existing storage"
- },
- "enableStorage(bytes32)": {
- "details": "Registers a new storage that can accept GeoDID document creation"
- },
- "getRoleAdmin(bytes32)": {
- "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
- },
- "getRoleMember(bytes32,uint256)": {
- "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information."
- },
- "getRoleMemberCount(bytes32)": {
- "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role."
- },
- "grantRole(bytes32,address)": {
- "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."
- },
- "hasRole(bytes32,address)": {
- "details": "Returns `true` if `account` has been granted `role`."
- },
- "registerRole()": {
- "details": "Registers a new user with the ability to register a spatial asset."
- },
- "registerSpatialAsset(address,bytes32,bytes32,bytes32[],bytes32,bytes32,uint256)": {
- "details": "Registers one spatial asset with external storage 'data' and assigns them to `account`. Emits a {SpatialAssetRegistered} event."
- },
- "removeChildrenGeoDIDs(bytes32,bytes32[])": {
- "details": "Removes childrenGeoDIDs from a geoDID Emits a {ChildrenRemoved} event."
- },
- "removeParentGeoDID(bytes32,bytes32)": {
- "details": "Removes a parent GeoDID from an already existent geoDID Emits a {ParentAdded} event."
- },
- "renounceRole(bytes32,address)": {
- "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."
- },
- "revokeRole(bytes32,address)": {
- "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."
- }
- },
- "version": 1
- },
- "userdoc": {
- "kind": "user",
- "methods": {},
- "version": 1
- }
-}
\ No newline at end of file
diff --git a/legacy/packages/subgraph/docs/try.graphql b/legacy/packages/subgraph/docs/try.graphql
deleted file mode 100644
index 6986329..0000000
--- a/legacy/packages/subgraph/docs/try.graphql
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- geoDIDs {
- id
- owner
- bytes32hash
- bytes32hashWithQM
- errors
- cid
- storage
- root
- isRoot
- parent
- edges {
- id
- childGeoDID {
- id
- }
- }
- active
- type
- }
-}
diff --git a/legacy/packages/subgraph/generated/SpatialAssets/SpatialAssets.ts b/legacy/packages/subgraph/generated/SpatialAssets/SpatialAssets.ts
deleted file mode 100644
index 8d5722b..0000000
--- a/legacy/packages/subgraph/generated/SpatialAssets/SpatialAssets.ts
+++ /dev/null
@@ -1,1026 +0,0 @@
-// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-
-import {
- ethereum,
- JSONValue,
- TypedMap,
- Entity,
- Bytes,
- Address,
- BigInt
-} from "@graphprotocol/graph-ts";
-
-export class ChildrenAdded extends ethereum.Event {
- get params(): ChildrenAdded__Params {
- return new ChildrenAdded__Params(this);
- }
-}
-
-export class ChildrenAdded__Params {
- _event: ChildrenAdded;
-
- constructor(event: ChildrenAdded) {
- this._event = event;
- }
-
- get geoDIDId(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get childrenGeoDIDId(): Bytes {
- return this._event.parameters[1].value.toBytes();
- }
-}
-
-export class ChildrenErrorHasParent extends ethereum.Event {
- get params(): ChildrenErrorHasParent__Params {
- return new ChildrenErrorHasParent__Params(this);
- }
-}
-
-export class ChildrenErrorHasParent__Params {
- _event: ChildrenErrorHasParent;
-
- constructor(event: ChildrenErrorHasParent) {
- this._event = event;
- }
-
- get geoDIDId(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get childrenGeoDIDId(): Bytes {
- return this._event.parameters[1].value.toBytes();
- }
-}
-
-export class ChildrenErrorNoExistence extends ethereum.Event {
- get params(): ChildrenErrorNoExistence__Params {
- return new ChildrenErrorNoExistence__Params(this);
- }
-}
-
-export class ChildrenErrorNoExistence__Params {
- _event: ChildrenErrorNoExistence;
-
- constructor(event: ChildrenErrorNoExistence) {
- this._event = event;
- }
-
- get geoDIDId(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get childrenGeoDIDId(): Bytes {
- return this._event.parameters[1].value.toBytes();
- }
-}
-
-export class ChildrenErrorNoParent extends ethereum.Event {
- get params(): ChildrenErrorNoParent__Params {
- return new ChildrenErrorNoParent__Params(this);
- }
-}
-
-export class ChildrenErrorNoParent__Params {
- _event: ChildrenErrorNoParent;
-
- constructor(event: ChildrenErrorNoParent) {
- this._event = event;
- }
-
- get geoDIDId(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get childrenGeoDIDId(): Bytes {
- return this._event.parameters[1].value.toBytes();
- }
-}
-
-export class ChildrenRemoved extends ethereum.Event {
- get params(): ChildrenRemoved__Params {
- return new ChildrenRemoved__Params(this);
- }
-}
-
-export class ChildrenRemoved__Params {
- _event: ChildrenRemoved;
-
- constructor(event: ChildrenRemoved) {
- this._event = event;
- }
-
- get geoDIDId(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get childrenGeoDIDId(): Bytes {
- return this._event.parameters[1].value.toBytes();
- }
-}
-
-export class ParentAdded extends ethereum.Event {
- get params(): ParentAdded__Params {
- return new ParentAdded__Params(this);
- }
-}
-
-export class ParentAdded__Params {
- _event: ParentAdded;
-
- constructor(event: ParentAdded) {
- this._event = event;
- }
-
- get geoDIDId(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get parentGeoDIDId(): Bytes {
- return this._event.parameters[1].value.toBytes();
- }
-}
-
-export class ParentRemoved extends ethereum.Event {
- get params(): ParentRemoved__Params {
- return new ParentRemoved__Params(this);
- }
-}
-
-export class ParentRemoved__Params {
- _event: ParentRemoved;
-
- constructor(event: ParentRemoved) {
- this._event = event;
- }
-
- get geoDIDId(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get parentGeoDIDId(): Bytes {
- return this._event.parameters[1].value.toBytes();
- }
-}
-
-export class RoleAdminChanged extends ethereum.Event {
- get params(): RoleAdminChanged__Params {
- return new RoleAdminChanged__Params(this);
- }
-}
-
-export class RoleAdminChanged__Params {
- _event: RoleAdminChanged;
-
- constructor(event: RoleAdminChanged) {
- this._event = event;
- }
-
- get role(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get previousAdminRole(): Bytes {
- return this._event.parameters[1].value.toBytes();
- }
-
- get newAdminRole(): Bytes {
- return this._event.parameters[2].value.toBytes();
- }
-}
-
-export class RoleGranted extends ethereum.Event {
- get params(): RoleGranted__Params {
- return new RoleGranted__Params(this);
- }
-}
-
-export class RoleGranted__Params {
- _event: RoleGranted;
-
- constructor(event: RoleGranted) {
- this._event = event;
- }
-
- get role(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get account(): Address {
- return this._event.parameters[1].value.toAddress();
- }
-
- get sender(): Address {
- return this._event.parameters[2].value.toAddress();
- }
-}
-
-export class RoleRevoked extends ethereum.Event {
- get params(): RoleRevoked__Params {
- return new RoleRevoked__Params(this);
- }
-}
-
-export class RoleRevoked__Params {
- _event: RoleRevoked;
-
- constructor(event: RoleRevoked) {
- this._event = event;
- }
-
- get role(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-
- get account(): Address {
- return this._event.parameters[1].value.toAddress();
- }
-
- get sender(): Address {
- return this._event.parameters[2].value.toAddress();
- }
-}
-
-export class SpatialAssetDeactivated extends ethereum.Event {
- get params(): SpatialAssetDeactivated__Params {
- return new SpatialAssetDeactivated__Params(this);
- }
-}
-
-export class SpatialAssetDeactivated__Params {
- _event: SpatialAssetDeactivated;
-
- constructor(event: SpatialAssetDeactivated) {
- this._event = event;
- }
-
- get geoDIDId(): Bytes {
- return this._event.parameters[0].value.toBytes();
- }
-}
-
-export class SpatialAssetRegistered extends ethereum.Event {
- get params(): SpatialAssetRegistered__Params {
- return new SpatialAssetRegistered__Params(this);
- }
-}
-
-export class SpatialAssetRegistered__Params {
- _event: SpatialAssetRegistered;
-
- constructor(event: SpatialAssetRegistered) {
- this._event = event;
- }
-
- get to(): Address {
- return this._event.parameters[0].value.toAddress();
- }
-
- get geoDIDId(): Bytes {
- return this._event.parameters[1].value.toBytes();
- }
-
- get cid(): Bytes {
- return this._event.parameters[2].value.toBytes();
- }
-
- get offChainStorage(): Bytes {
- return this._event.parameters[3].value.toBytes();
- }
-
- get root(): Bytes {
- return this._event.parameters[4].value.toBytes();
- }
-
- get canBeParent(): boolean {
- return this._event.parameters[5].value.toBoolean();
- }
-}
-
-export class SpatialAssets extends ethereum.SmartContract {
- static bind(address: Address): SpatialAssets {
- return new SpatialAssets("SpatialAssets", address);
- }
-
- DATA_SUPPLIER(): Bytes {
- let result = super.call("DATA_SUPPLIER", "DATA_SUPPLIER():(bytes32)", []);
-
- return result[0].toBytes();
- }
-
- try_DATA_SUPPLIER(): ethereum.CallResult {
- let result = super.tryCall(
- "DATA_SUPPLIER",
- "DATA_SUPPLIER():(bytes32)",
- []
- );
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBytes());
- }
-
- DEFAULT_ADMIN_ROLE(): Bytes {
- let result = super.call(
- "DEFAULT_ADMIN_ROLE",
- "DEFAULT_ADMIN_ROLE():(bytes32)",
- []
- );
-
- return result[0].toBytes();
- }
-
- try_DEFAULT_ADMIN_ROLE(): ethereum.CallResult {
- let result = super.tryCall(
- "DEFAULT_ADMIN_ROLE",
- "DEFAULT_ADMIN_ROLE():(bytes32)",
- []
- );
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBytes());
- }
-
- getRoleAdmin(role: Bytes): Bytes {
- let result = super.call("getRoleAdmin", "getRoleAdmin(bytes32):(bytes32)", [
- ethereum.Value.fromFixedBytes(role)
- ]);
-
- return result[0].toBytes();
- }
-
- try_getRoleAdmin(role: Bytes): ethereum.CallResult {
- let result = super.tryCall(
- "getRoleAdmin",
- "getRoleAdmin(bytes32):(bytes32)",
- [ethereum.Value.fromFixedBytes(role)]
- );
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBytes());
- }
-
- getRoleMember(role: Bytes, index: BigInt): Address {
- let result = super.call(
- "getRoleMember",
- "getRoleMember(bytes32,uint256):(address)",
- [
- ethereum.Value.fromFixedBytes(role),
- ethereum.Value.fromUnsignedBigInt(index)
- ]
- );
-
- return result[0].toAddress();
- }
-
- try_getRoleMember(role: Bytes, index: BigInt): ethereum.CallResult {
- let result = super.tryCall(
- "getRoleMember",
- "getRoleMember(bytes32,uint256):(address)",
- [
- ethereum.Value.fromFixedBytes(role),
- ethereum.Value.fromUnsignedBigInt(index)
- ]
- );
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toAddress());
- }
-
- getRoleMemberCount(role: Bytes): BigInt {
- let result = super.call(
- "getRoleMemberCount",
- "getRoleMemberCount(bytes32):(uint256)",
- [ethereum.Value.fromFixedBytes(role)]
- );
-
- return result[0].toBigInt();
- }
-
- try_getRoleMemberCount(role: Bytes): ethereum.CallResult {
- let result = super.tryCall(
- "getRoleMemberCount",
- "getRoleMemberCount(bytes32):(uint256)",
- [ethereum.Value.fromFixedBytes(role)]
- );
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBigInt());
- }
-
- hasRole(role: Bytes, account: Address): boolean {
- let result = super.call("hasRole", "hasRole(bytes32,address):(bool)", [
- ethereum.Value.fromFixedBytes(role),
- ethereum.Value.fromAddress(account)
- ]);
-
- return result[0].toBoolean();
- }
-
- try_hasRole(role: Bytes, account: Address): ethereum.CallResult {
- let result = super.tryCall("hasRole", "hasRole(bytes32,address):(bool)", [
- ethereum.Value.fromFixedBytes(role),
- ethereum.Value.fromAddress(account)
- ]);
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBoolean());
- }
-
- idToOwner(id: Bytes): Address {
- let result = super.call("idToOwner", "idToOwner(bytes32):(address)", [
- ethereum.Value.fromFixedBytes(id)
- ]);
-
- return result[0].toAddress();
- }
-
- try_idToOwner(id: Bytes): ethereum.CallResult {
- let result = super.tryCall("idToOwner", "idToOwner(bytes32):(address)", [
- ethereum.Value.fromFixedBytes(id)
- ]);
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toAddress());
- }
-
- idToCid(id: Bytes): Bytes {
- let result = super.call("idToCid", "idToCid(bytes32):(bytes32)", [
- ethereum.Value.fromFixedBytes(id)
- ]);
-
- return result[0].toBytes();
- }
-
- try_idToCid(id: Bytes): ethereum.CallResult {
- let result = super.tryCall("idToCid", "idToCid(bytes32):(bytes32)", [
- ethereum.Value.fromFixedBytes(id)
- ]);
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBytes());
- }
-
- idToCanBeParent(id: Bytes): boolean {
- let result = super.call(
- "idToCanBeParent",
- "idToCanBeParent(bytes32):(bool)",
- [ethereum.Value.fromFixedBytes(id)]
- );
-
- return result[0].toBoolean();
- }
-
- try_idToCanBeParent(id: Bytes): ethereum.CallResult {
- let result = super.tryCall(
- "idToCanBeParent",
- "idToCanBeParent(bytes32):(bool)",
- [ethereum.Value.fromFixedBytes(id)]
- );
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBoolean());
- }
-
- idToHasParent(id: Bytes): boolean {
- let result = super.call("idToHasParent", "idToHasParent(bytes32):(bool)", [
- ethereum.Value.fromFixedBytes(id)
- ]);
-
- return result[0].toBoolean();
- }
-
- try_idToHasParent(id: Bytes): ethereum.CallResult {
- let result = super.tryCall(
- "idToHasParent",
- "idToHasParent(bytes32):(bool)",
- [ethereum.Value.fromFixedBytes(id)]
- );
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBoolean());
- }
-
- idToExternalStorage(id: Bytes): Bytes {
- let result = super.call(
- "idToExternalStorage",
- "idToExternalStorage(bytes32):(bytes32)",
- [ethereum.Value.fromFixedBytes(id)]
- );
-
- return result[0].toBytes();
- }
-
- try_idToExternalStorage(id: Bytes): ethereum.CallResult {
- let result = super.tryCall(
- "idToExternalStorage",
- "idToExternalStorage(bytes32):(bytes32)",
- [ethereum.Value.fromFixedBytes(id)]
- );
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBytes());
- }
-
- allowedStorages(offChainStorage: Bytes): boolean {
- let result = super.call(
- "allowedStorages",
- "allowedStorages(bytes32):(bool)",
- [ethereum.Value.fromFixedBytes(offChainStorage)]
- );
-
- return result[0].toBoolean();
- }
-
- try_allowedStorages(offChainStorage: Bytes): ethereum.CallResult {
- let result = super.tryCall(
- "allowedStorages",
- "allowedStorages(bytes32):(bool)",
- [ethereum.Value.fromFixedBytes(offChainStorage)]
- );
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toBoolean());
- }
-
- uri(): string {
- let result = super.call("uri", "uri():(string)", []);
-
- return result[0].toString();
- }
-
- try_uri(): ethereum.CallResult {
- let result = super.tryCall("uri", "uri():(string)", []);
- if (result.reverted) {
- return new ethereum.CallResult();
- }
- let value = result.value;
- return ethereum.CallResult.fromValue(value[0].toString());
- }
-}
-
-export class ConstructorCall extends ethereum.Call {
- get inputs(): ConstructorCall__Inputs {
- return new ConstructorCall__Inputs(this);
- }
-
- get outputs(): ConstructorCall__Outputs {
- return new ConstructorCall__Outputs(this);
- }
-}
-
-export class ConstructorCall__Inputs {
- _call: ConstructorCall;
-
- constructor(call: ConstructorCall) {
- this._call = call;
- }
-
- get uri(): string {
- return this._call.inputValues[0].value.toString();
- }
-}
-
-export class ConstructorCall__Outputs {
- _call: ConstructorCall;
-
- constructor(call: ConstructorCall) {
- this._call = call;
- }
-}
-
-export class GrantRoleCall extends ethereum.Call {
- get inputs(): GrantRoleCall__Inputs {
- return new GrantRoleCall__Inputs(this);
- }
-
- get outputs(): GrantRoleCall__Outputs {
- return new GrantRoleCall__Outputs(this);
- }
-}
-
-export class GrantRoleCall__Inputs {
- _call: GrantRoleCall;
-
- constructor(call: GrantRoleCall) {
- this._call = call;
- }
-
- get role(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-
- get account(): Address {
- return this._call.inputValues[1].value.toAddress();
- }
-}
-
-export class GrantRoleCall__Outputs {
- _call: GrantRoleCall;
-
- constructor(call: GrantRoleCall) {
- this._call = call;
- }
-}
-
-export class RenounceRoleCall extends ethereum.Call {
- get inputs(): RenounceRoleCall__Inputs {
- return new RenounceRoleCall__Inputs(this);
- }
-
- get outputs(): RenounceRoleCall__Outputs {
- return new RenounceRoleCall__Outputs(this);
- }
-}
-
-export class RenounceRoleCall__Inputs {
- _call: RenounceRoleCall;
-
- constructor(call: RenounceRoleCall) {
- this._call = call;
- }
-
- get role(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-
- get account(): Address {
- return this._call.inputValues[1].value.toAddress();
- }
-}
-
-export class RenounceRoleCall__Outputs {
- _call: RenounceRoleCall;
-
- constructor(call: RenounceRoleCall) {
- this._call = call;
- }
-}
-
-export class RevokeRoleCall extends ethereum.Call {
- get inputs(): RevokeRoleCall__Inputs {
- return new RevokeRoleCall__Inputs(this);
- }
-
- get outputs(): RevokeRoleCall__Outputs {
- return new RevokeRoleCall__Outputs(this);
- }
-}
-
-export class RevokeRoleCall__Inputs {
- _call: RevokeRoleCall;
-
- constructor(call: RevokeRoleCall) {
- this._call = call;
- }
-
- get role(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-
- get account(): Address {
- return this._call.inputValues[1].value.toAddress();
- }
-}
-
-export class RevokeRoleCall__Outputs {
- _call: RevokeRoleCall;
-
- constructor(call: RevokeRoleCall) {
- this._call = call;
- }
-}
-
-export class RegisterRoleCall extends ethereum.Call {
- get inputs(): RegisterRoleCall__Inputs {
- return new RegisterRoleCall__Inputs(this);
- }
-
- get outputs(): RegisterRoleCall__Outputs {
- return new RegisterRoleCall__Outputs(this);
- }
-}
-
-export class RegisterRoleCall__Inputs {
- _call: RegisterRoleCall;
-
- constructor(call: RegisterRoleCall) {
- this._call = call;
- }
-}
-
-export class RegisterRoleCall__Outputs {
- _call: RegisterRoleCall;
-
- constructor(call: RegisterRoleCall) {
- this._call = call;
- }
-}
-
-export class EnableStorageCall extends ethereum.Call {
- get inputs(): EnableStorageCall__Inputs {
- return new EnableStorageCall__Inputs(this);
- }
-
- get outputs(): EnableStorageCall__Outputs {
- return new EnableStorageCall__Outputs(this);
- }
-}
-
-export class EnableStorageCall__Inputs {
- _call: EnableStorageCall;
-
- constructor(call: EnableStorageCall) {
- this._call = call;
- }
-
- get offChainStorage(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-}
-
-export class EnableStorageCall__Outputs {
- _call: EnableStorageCall;
-
- constructor(call: EnableStorageCall) {
- this._call = call;
- }
-}
-
-export class DisableStorageCall extends ethereum.Call {
- get inputs(): DisableStorageCall__Inputs {
- return new DisableStorageCall__Inputs(this);
- }
-
- get outputs(): DisableStorageCall__Outputs {
- return new DisableStorageCall__Outputs(this);
- }
-}
-
-export class DisableStorageCall__Inputs {
- _call: DisableStorageCall;
-
- constructor(call: DisableStorageCall) {
- this._call = call;
- }
-
- get offChainStorage(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-}
-
-export class DisableStorageCall__Outputs {
- _call: DisableStorageCall;
-
- constructor(call: DisableStorageCall) {
- this._call = call;
- }
-}
-
-export class RegisterSpatialAssetCall extends ethereum.Call {
- get inputs(): RegisterSpatialAssetCall__Inputs {
- return new RegisterSpatialAssetCall__Inputs(this);
- }
-
- get outputs(): RegisterSpatialAssetCall__Outputs {
- return new RegisterSpatialAssetCall__Outputs(this);
- }
-}
-
-export class RegisterSpatialAssetCall__Inputs {
- _call: RegisterSpatialAssetCall;
-
- constructor(call: RegisterSpatialAssetCall) {
- this._call = call;
- }
-
- get owner(): Address {
- return this._call.inputValues[0].value.toAddress();
- }
-
- get geoDIDId(): Bytes {
- return this._call.inputValues[1].value.toBytes();
- }
-
- get parentGeoDIDId(): Bytes {
- return this._call.inputValues[2].value.toBytes();
- }
-
- get childrenGeoDIDIds(): Array {
- return this._call.inputValues[3].value.toBytesArray();
- }
-
- get cid(): Bytes {
- return this._call.inputValues[4].value.toBytes();
- }
-
- get offChainStorage(): Bytes {
- return this._call.inputValues[5].value.toBytes();
- }
-
- get geoDIDtype(): BigInt {
- return this._call.inputValues[6].value.toBigInt();
- }
-}
-
-export class RegisterSpatialAssetCall__Outputs {
- _call: RegisterSpatialAssetCall;
-
- constructor(call: RegisterSpatialAssetCall) {
- this._call = call;
- }
-}
-
-export class AddChildrenGeoDIDsCall extends ethereum.Call {
- get inputs(): AddChildrenGeoDIDsCall__Inputs {
- return new AddChildrenGeoDIDsCall__Inputs(this);
- }
-
- get outputs(): AddChildrenGeoDIDsCall__Outputs {
- return new AddChildrenGeoDIDsCall__Outputs(this);
- }
-}
-
-export class AddChildrenGeoDIDsCall__Inputs {
- _call: AddChildrenGeoDIDsCall;
-
- constructor(call: AddChildrenGeoDIDsCall) {
- this._call = call;
- }
-
- get geoDIDId(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-
- get childrenGeoDIDIds(): Array {
- return this._call.inputValues[1].value.toBytesArray();
- }
-}
-
-export class AddChildrenGeoDIDsCall__Outputs {
- _call: AddChildrenGeoDIDsCall;
-
- constructor(call: AddChildrenGeoDIDsCall) {
- this._call = call;
- }
-}
-
-export class AddParentGeoDIDCall extends ethereum.Call {
- get inputs(): AddParentGeoDIDCall__Inputs {
- return new AddParentGeoDIDCall__Inputs(this);
- }
-
- get outputs(): AddParentGeoDIDCall__Outputs {
- return new AddParentGeoDIDCall__Outputs(this);
- }
-}
-
-export class AddParentGeoDIDCall__Inputs {
- _call: AddParentGeoDIDCall;
-
- constructor(call: AddParentGeoDIDCall) {
- this._call = call;
- }
-
- get geoDIDId(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-
- get parentGeoDIDId(): Bytes {
- return this._call.inputValues[1].value.toBytes();
- }
-}
-
-export class AddParentGeoDIDCall__Outputs {
- _call: AddParentGeoDIDCall;
-
- constructor(call: AddParentGeoDIDCall) {
- this._call = call;
- }
-}
-
-export class RemoveChildrenGeoDIDsCall extends ethereum.Call {
- get inputs(): RemoveChildrenGeoDIDsCall__Inputs {
- return new RemoveChildrenGeoDIDsCall__Inputs(this);
- }
-
- get outputs(): RemoveChildrenGeoDIDsCall__Outputs {
- return new RemoveChildrenGeoDIDsCall__Outputs(this);
- }
-}
-
-export class RemoveChildrenGeoDIDsCall__Inputs {
- _call: RemoveChildrenGeoDIDsCall;
-
- constructor(call: RemoveChildrenGeoDIDsCall) {
- this._call = call;
- }
-
- get geoDIDId(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-
- get childrenGeoDIDIds(): Array {
- return this._call.inputValues[1].value.toBytesArray();
- }
-}
-
-export class RemoveChildrenGeoDIDsCall__Outputs {
- _call: RemoveChildrenGeoDIDsCall;
-
- constructor(call: RemoveChildrenGeoDIDsCall) {
- this._call = call;
- }
-}
-
-export class RemoveParentGeoDIDCall extends ethereum.Call {
- get inputs(): RemoveParentGeoDIDCall__Inputs {
- return new RemoveParentGeoDIDCall__Inputs(this);
- }
-
- get outputs(): RemoveParentGeoDIDCall__Outputs {
- return new RemoveParentGeoDIDCall__Outputs(this);
- }
-}
-
-export class RemoveParentGeoDIDCall__Inputs {
- _call: RemoveParentGeoDIDCall;
-
- constructor(call: RemoveParentGeoDIDCall) {
- this._call = call;
- }
-
- get geoDIDId(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-
- get parentGeoDIDId(): Bytes {
- return this._call.inputValues[1].value.toBytes();
- }
-}
-
-export class RemoveParentGeoDIDCall__Outputs {
- _call: RemoveParentGeoDIDCall;
-
- constructor(call: RemoveParentGeoDIDCall) {
- this._call = call;
- }
-}
-
-export class DeactivateSpatialAssetCall extends ethereum.Call {
- get inputs(): DeactivateSpatialAssetCall__Inputs {
- return new DeactivateSpatialAssetCall__Inputs(this);
- }
-
- get outputs(): DeactivateSpatialAssetCall__Outputs {
- return new DeactivateSpatialAssetCall__Outputs(this);
- }
-}
-
-export class DeactivateSpatialAssetCall__Inputs {
- _call: DeactivateSpatialAssetCall;
-
- constructor(call: DeactivateSpatialAssetCall) {
- this._call = call;
- }
-
- get geoDIDId(): Bytes {
- return this._call.inputValues[0].value.toBytes();
- }
-
- get childrenToRemove(): Array {
- return this._call.inputValues[1].value.toBytesArray();
- }
-}
-
-export class DeactivateSpatialAssetCall__Outputs {
- _call: DeactivateSpatialAssetCall;
-
- constructor(call: DeactivateSpatialAssetCall) {
- this._call = call;
- }
-}
diff --git a/legacy/packages/subgraph/generated/schema.ts b/legacy/packages/subgraph/generated/schema.ts
deleted file mode 100644
index ea0cc50..0000000
--- a/legacy/packages/subgraph/generated/schema.ts
+++ /dev/null
@@ -1,210 +0,0 @@
-// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-
-import {
- TypedMap,
- Entity,
- Value,
- ValueKind,
- store,
- Address,
- Bytes,
- BigInt,
- BigDecimal
-} from "@graphprotocol/graph-ts";
-
-export class GeoDID extends Entity {
- constructor(id: string) {
- super();
- this.set("id", Value.fromString(id));
- }
-
- save(): void {
- let id = this.get("id");
- assert(id !== null, "Cannot save GeoDID entity without an ID");
- assert(
- id.kind == ValueKind.STRING,
- "Cannot save GeoDID entity with non-string ID. " +
- 'Considering using .toHex() to convert the "id" to a string.'
- );
- store.set("GeoDID", id.toString(), this);
- }
-
- static load(id: string): GeoDID | null {
- return store.get("GeoDID", id) as GeoDID | null;
- }
-
- get id(): string {
- let value = this.get("id");
- return value.toString();
- }
-
- set id(value: string) {
- this.set("id", Value.fromString(value));
- }
-
- get bytes32hash(): Bytes {
- let value = this.get("bytes32hash");
- return value.toBytes();
- }
-
- set bytes32hash(value: Bytes) {
- this.set("bytes32hash", Value.fromBytes(value));
- }
-
- get bytes32hashWithQM(): Bytes {
- let value = this.get("bytes32hashWithQM");
- return value.toBytes();
- }
-
- set bytes32hashWithQM(value: Bytes) {
- this.set("bytes32hashWithQM", Value.fromBytes(value));
- }
-
- get owner(): string {
- let value = this.get("owner");
- return value.toString();
- }
-
- set owner(value: string) {
- this.set("owner", Value.fromString(value));
- }
-
- get cid(): string {
- let value = this.get("cid");
- return value.toString();
- }
-
- set cid(value: string) {
- this.set("cid", Value.fromString(value));
- }
-
- get storage(): Bytes {
- let value = this.get("storage");
- return value.toBytes();
- }
-
- set storage(value: Bytes) {
- this.set("storage", Value.fromBytes(value));
- }
-
- get root(): string {
- let value = this.get("root");
- return value.toString();
- }
-
- set root(value: string) {
- this.set("root", Value.fromString(value));
- }
-
- get isRoot(): boolean {
- let value = this.get("isRoot");
- return value.toBoolean();
- }
-
- set isRoot(value: boolean) {
- this.set("isRoot", Value.fromBoolean(value));
- }
-
- get parent(): string {
- let value = this.get("parent");
- return value.toString();
- }
-
- set parent(value: string) {
- this.set("parent", Value.fromString(value));
- }
-
- get edges(): Array {
- let value = this.get("edges");
- return value.toStringArray();
- }
-
- set edges(value: Array) {
- this.set("edges", Value.fromStringArray(value));
- }
-
- get active(): boolean {
- let value = this.get("active");
- return value.toBoolean();
- }
-
- set active(value: boolean) {
- this.set("active", Value.fromBoolean(value));
- }
-
- get type(): string {
- let value = this.get("type");
- return value.toString();
- }
-
- set type(value: string) {
- this.set("type", Value.fromString(value));
- }
-
- get errors(): Array {
- let value = this.get("errors");
- return value.toStringArray();
- }
-
- set errors(value: Array) {
- this.set("errors", Value.fromStringArray(value));
- }
-}
-
-export class Edge extends Entity {
- constructor(id: string) {
- super();
- this.set("id", Value.fromString(id));
- }
-
- save(): void {
- let id = this.get("id");
- assert(id !== null, "Cannot save Edge entity without an ID");
- assert(
- id.kind == ValueKind.STRING,
- "Cannot save Edge entity with non-string ID. " +
- 'Considering using .toHex() to convert the "id" to a string.'
- );
- store.set("Edge", id.toString(), this);
- }
-
- static load(id: string): Edge | null {
- return store.get("Edge", id) as Edge | null;
- }
-
- get id(): string {
- let value = this.get("id");
- return value.toString();
- }
-
- set id(value: string) {
- this.set("id", Value.fromString(value));
- }
-
- get parentGeoDID(): string {
- let value = this.get("parentGeoDID");
- return value.toString();
- }
-
- set parentGeoDID(value: string) {
- this.set("parentGeoDID", Value.fromString(value));
- }
-
- get childGeoDID(): string {
- let value = this.get("childGeoDID");
- return value.toString();
- }
-
- set childGeoDID(value: string) {
- this.set("childGeoDID", Value.fromString(value));
- }
-
- get active(): boolean {
- let value = this.get("active");
- return value.toBoolean();
- }
-
- set active(value: boolean) {
- this.set("active", Value.fromBoolean(value));
- }
-}
diff --git a/legacy/packages/subgraph/package.json b/legacy/packages/subgraph/package.json
deleted file mode 100644
index db2e566..0000000
--- a/legacy/packages/subgraph/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "@astralprotocol/subgraph",
- "version": "1.0.13",
- "description": "The @astralprotocol/subgraph serves as the indexing engine of the protocol, capturing the registration and modification events of GeoDIDs in the @astralprotocol/contracts. It acts like a decentralized querying database where it is substantially easier to make complex queries to the Spatial Assets registry. It is used to create the tree of GeoDID nodes that represents their relationships and groupings.",
- "author": "Astral ",
- "homepage": "https://github.com/AstralProtocol/astralprotocol#readme",
- "license": "MIT OR Apache-2.0",
- "main": "lib/mapping.js",
- "directories": {
- "lib": "lib",
- "test": "__tests__"
- },
- "files": [
- "lib"
- ],
- "repository": {
- "type": "git",
- "url": "git+https://github.com/AstralProtocol/astralprotocol.git",
- "directory": "packages/subgraph"
- },
- "publishConfig": {
- "registry": "https://registry.npmjs.org",
- "access": "public"
- },
- "scripts": {
- "codegen": "graph codegen",
- "build": "graph build",
- "deploy": "graph deploy --node https://api.thegraph.com/deploy/ --ipfs https://api.thegraph.com/ipfs/ astralprotocol/spatialassetsfinalv1 --access-token TOKEN_HERE",
- "create-local": "graph create --node http://localhost:8020/ astralprotocol/spatialassets",
- "remove-local": "graph remove --node http://localhost:8020/ astralprotocol/spatialassets",
- "deploy-local": "graph deploy --node http://localhost:8020/ --ipfs http://localhost:5001 astralprotocol/spatialassets",
- "remove-subgraph": "graph remove astraldao/spatial-assets --ipfs http://localhost:5001 --node http://127.0.0.1:8020",
- "clean": "rm -rf ./lib ./tsconfig.tsbuildinfo"
- },
- "bugs": {
- "url": "https://github.com/AstralProtocol/astralprotocol/issues"
- },
- "dependencies": {
- "@graphprotocol/graph-cli": "^0.19.0",
- "@graphprotocol/graph-ts": "^0.19.0"
- }
-}
diff --git a/legacy/packages/subgraph/schema.graphql b/legacy/packages/subgraph/schema.graphql
deleted file mode 100644
index b0a9cad..0000000
--- a/legacy/packages/subgraph/schema.graphql
+++ /dev/null
@@ -1,22 +0,0 @@
-type GeoDID @entity {
- id: ID!
- bytes32hash: Bytes!
- bytes32hashWithQM: Bytes!
- owner: String!
- cid: String!
- storage: Bytes!
- root: String!
- isRoot: Boolean!
- parent: String!
- edges: [Edge!]!
- active: Boolean!
- type: String!
- errors: [String!]!
-}
-
-type Edge @entity {
- id: ID!
- parentGeoDID: GeoDID!
- childGeoDID: GeoDID!
- active: Boolean!
-}
diff --git a/legacy/packages/subgraph/src/helpers.ts b/legacy/packages/subgraph/src/helpers.ts
deleted file mode 100644
index 79be946..0000000
--- a/legacy/packages/subgraph/src/helpers.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { ByteArray } from "@graphprotocol/graph-ts";
-
-// Helper adding 0x12 and 0x20 to make the proper ipfs hash
-// the returned bytes32 is so [0,31]
-export function addQm(a: ByteArray): ByteArray {
- let out = new Uint8Array(34);
- out[0] = 0x12;
- out[1] = 0x20;
- for (let i = 0; i < 32; i++) {
- out[i + 2] = a[i];
- }
- return out as ByteArray;
-}
diff --git a/legacy/packages/subgraph/src/mapping.ts b/legacy/packages/subgraph/src/mapping.ts
deleted file mode 100644
index faf6be5..0000000
--- a/legacy/packages/subgraph/src/mapping.ts
+++ /dev/null
@@ -1,358 +0,0 @@
-import {
- SpatialAssetRegistered,
- ParentAdded,
- ChildrenAdded,
- ParentRemoved,
- ChildrenRemoved,
- SpatialAssetDeactivated,
- ChildrenErrorNoParent,
- ChildrenErrorNoExistence,
- ChildrenErrorHasParent,
-} from "../generated/SpatialAssets/SpatialAssets";
-import { GeoDID, Edge } from "../generated/schema";
-import { Bytes } from "@graphprotocol/graph-ts";
-
-import { addQm } from "./helpers";
-
-// this is a recursive function to change the root id in the children (and their children)
-function changeRoot(edges: string[]): void {
- if (edges.length > 0) {
- edges.forEach((ed) => {
- let edge = Edge.load(ed);
- let child = GeoDID.load(edge.childGeoDID);
-
- child.isRoot = false;
- let parent = GeoDID.load(edge.parentGeoDID);
-
- child.root = parent.root;
-
- child.save();
- if (child.edges.length > 0) {
- changeRoot(child.edges);
- }
- });
- }
-}
-
-export function handleSpatialAssetRegistered(
- event: SpatialAssetRegistered
-): void {
- let hexHashId = addQm(event.params.geoDIDId) as Bytes;
- let base58HashId = "did:geo:" + hexHashId.toBase58(); // imported crypto function
-
- let geoDID = new GeoDID(base58HashId);
- geoDID.bytes32hash = event.params.geoDIDId;
- geoDID.bytes32hashWithQM = hexHashId;
-
- geoDID.owner = event.params.to.toHexString();
-
- let hexHashCid = addQm(event.params.cid) as Bytes;
- let base58HashCid = hexHashCid.toBase58(); // imported crypto function
-
- geoDID.cid = base58HashCid;
- geoDID.storage = event.params.offChainStorage;
-
- let hexHashRoot = addQm(event.params.root) as Bytes;
- let base58HashRoot = "did:geo:" + hexHashRoot.toBase58(); // imported crypto function
-
- geoDID.root = base58HashRoot;
-
- if (hexHashId.toBase58() == hexHashRoot.toBase58()) {
- geoDID.isRoot = true;
- } else {
- geoDID.isRoot = false;
- }
-
- geoDID.active = true;
-
- geoDID.parent = "";
-
- if (event.params.canBeParent) {
- geoDID.type = "Collection";
- } else {
- geoDID.type = "Item";
- }
-
- geoDID.edges = [];
- geoDID.errors = [];
- geoDID.save();
-}
-
-export function handleParentAdded(event: ParentAdded): void {
- let hexHashIdParent = addQm(event.params.parentGeoDIDId) as Bytes;
- let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function
- let hexHashChild = addQm(event.params.geoDIDId) as Bytes;
- let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function
-
- let edge = new Edge(base58HashParent + "-" + base58HashChild);
-
- edge.parentGeoDID = base58HashParent;
- edge.childGeoDID = base58HashChild;
- edge.active = true;
- edge.save();
-
- // add edge to parent
-
- let parentGeoDID = GeoDID.load(base58HashParent);
-
- let edges = parentGeoDID.edges;
-
- edges.push(edge.id);
-
- parentGeoDID.edges = edges;
-
- parentGeoDID.save();
-
- let geoDID = GeoDID.load(base58HashChild);
-
- geoDID.parent = base58HashParent;
- geoDID.isRoot = false;
- geoDID.root = parentGeoDID.root;
-
- geoDID.save();
-
- // change root to root of parent
- if (Array.isArray(geoDID.edges)) {
- changeRoot(geoDID.edges);
- }
-}
-
-export function handleChildrenAdded(event: ChildrenAdded): void {
- let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes;
- let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function
- let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes;
- let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function
-
- let edge = new Edge(base58HashParent + "-" + base58HashChild);
-
- edge.parentGeoDID = base58HashParent;
- edge.childGeoDID = base58HashChild;
- edge.active = true;
- edge.save();
-
- // add edge to parent
-
- let parentGeoDID = GeoDID.load(base58HashParent);
-
- let edges = parentGeoDID.edges;
-
- edges.push(edge.id);
-
- parentGeoDID.edges = edges;
-
- parentGeoDID.save();
-
- let geoDID = GeoDID.load(base58HashChild);
-
- geoDID.parent = base58HashParent;
- geoDID.isRoot = false;
- geoDID.root = parentGeoDID.root;
- geoDID.save();
-
- // change root to root of parent
- if (Array.isArray(geoDID.edges)) {
- changeRoot(geoDID.edges);
- }
-}
-
-export function handleParentRemoved(event: ParentRemoved): void {
- let hexHashIdParent = addQm(event.params.parentGeoDIDId) as Bytes;
- let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function
- let hexHashChild = addQm(event.params.geoDIDId) as Bytes;
- let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function
-
- let edge = Edge.load(base58HashParent + "-" + base58HashChild);
-
- edge.active = false;
-
- edge.save();
-
- // remove edge from parent
- let parentGeoDID = GeoDID.load(base58HashParent);
-
- let originalEdges = parentGeoDID.edges;
-
- let changedEdges: Array;
-
- for (let i = 0; i < originalEdges.length; i++) {
- let ed = Edge.load(originalEdges[i]);
- if (ed.id != edge.id) {
- changedEdges.push(originalEdges[i]);
- }
- }
-
- parentGeoDID.edges = changedEdges;
-
- parentGeoDID.save();
-
- let geoDID = GeoDID.load(base58HashChild);
-
- geoDID.parent = "";
-
- geoDID.root = geoDID.id;
- geoDID.isRoot = true;
- geoDID.save();
-
- // change root from children to itself
- if (Array.isArray(geoDID.edges)) {
- changeRoot(geoDID.edges);
- }
-}
-
-export function handleChildrenRemoved(event: ChildrenRemoved): void {
- let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes;
- let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function
- let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes;
- let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function
-
- let edge = Edge.load(base58HashParent + "-" + base58HashChild);
-
- edge.active = false;
-
- edge.save();
-
- // remove edge from parent
- let parentGeoDID = GeoDID.load(base58HashParent);
-
- let originalEdges = parentGeoDID.edges;
-
- let changedEdges: Array;
-
- for (let i = 0; i < originalEdges.length; i++) {
- let ed = Edge.load(originalEdges[i]);
- if (ed.id != edge.id) {
- changedEdges.push(originalEdges[i]);
- }
- }
-
- parentGeoDID.edges = changedEdges;
-
- parentGeoDID.save();
-
- let geoDID = GeoDID.load(base58HashChild);
-
- geoDID.parent = "";
- geoDID.root = geoDID.id;
- geoDID.isRoot = true;
- geoDID.save();
-
- if (Array.isArray(geoDID.edges)) {
- changeRoot(geoDID.edges);
- }
-}
-
-export function handleSpatialAssetDeactivated(
- event: SpatialAssetDeactivated
-): void {
- let hexHashId = addQm(event.params.geoDIDId) as Bytes;
- let base58Hash = "did:geo:" + hexHashId.toBase58(); // imported crypto function
-
- let geoDID = GeoDID.load(base58Hash);
-
- if (geoDID.parent.length > 0) {
- let edgeToParent = Edge.load(geoDID.parent + "-" + base58Hash);
-
- edgeToParent.active = false;
- edgeToParent.save();
-
- // remove edge from parent
- let parentGeoDID = GeoDID.load(geoDID.parent);
-
- let originalEdges = parentGeoDID.edges;
-
- let changedEdges: Array;
-
- for (let i = 0; i < originalEdges.length; i++) {
- let ed = Edge.load(originalEdges[i]);
- if (ed.id != edgeToParent.id) {
- changedEdges.push(originalEdges[i]);
- }
- }
-
- parentGeoDID.edges = changedEdges;
-
- parentGeoDID.save();
- }
-
- geoDID.owner = "";
- geoDID.root = "";
- geoDID.active = false;
- geoDID.parent = "";
-
- geoDID.save();
-}
-
-export function handleChildrenErrorNoParent(
- event: ChildrenErrorNoParent
-): void {
- let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes;
- let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function
- let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes;
- let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function
-
- let geoDID = GeoDID.load(base58HashParent);
-
- let originalErrors = geoDID.errors;
-
- let newErrors: Array;
-
- for (let i = 0; i < originalErrors.length; i++) {
- newErrors.push(originalErrors[i]);
- }
-
- newErrors.push("ChildrenErrorNoParent" + base58HashChild);
-
- geoDID.errors = newErrors;
-
- geoDID.save();
-}
-
-export function handleChildrenErrorNoExistence(
- event: ChildrenErrorNoExistence
-): void {
- let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes;
- let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function
- let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes;
- let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function
-
- let geoDID = GeoDID.load(base58HashParent);
-
- let originalErrors = geoDID.errors;
-
- let newErrors: Array;
-
- for (let i = 0; i < originalErrors.length; i++) {
- newErrors.push(originalErrors[i]);
- }
-
- newErrors.push("ChildrenErrorNoExistence" + base58HashChild);
-
- geoDID.errors = newErrors;
-
- geoDID.save();
-}
-
-export function handleChildrenErrorHasParent(
- event: ChildrenErrorHasParent
-): void {
- let hexHashIdParent = addQm(event.params.geoDIDId) as Bytes;
- let base58HashParent = "did:geo:" + hexHashIdParent.toBase58(); // imported crypto function
- let hexHashChild = addQm(event.params.childrenGeoDIDId) as Bytes;
- let base58HashChild = "did:geo:" + hexHashChild.toBase58(); // imported crypto function
-
- let geoDID = GeoDID.load(base58HashParent);
-
- let originalErrors = geoDID.errors;
-
- let newErrors: Array;
-
- for (let i = 0; i < originalErrors.length; i++) {
- newErrors.push(originalErrors[i]);
- }
-
- newErrors.push("ChildrenErrorHasParent" + base58HashChild);
-
- geoDID.errors = newErrors;
-
- geoDID.save();
-}
diff --git a/legacy/packages/subgraph/subgraph.yaml b/legacy/packages/subgraph/subgraph.yaml
deleted file mode 100644
index e52f37c..0000000
--- a/legacy/packages/subgraph/subgraph.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-specVersion: 0.0.2
-schema:
- file: ./schema.graphql
-dataSources:
- - kind: ethereum/contract
- name: SpatialAssets
- network: ropsten
- source:
- address: "0x20899AcaD772bEd24A8cf385bA5688428B10a963"
- abi: SpatialAssets
- mapping:
- kind: ethereum/events
- apiVersion: 0.0.4
- language: wasm/assemblyscript
- entities:
- - SpatialAsset
- - Node
- abis:
- - name: SpatialAssets
- file: ./abis/SpatialAssets.json
- eventHandlers:
- - event: SpatialAssetRegistered(indexed address,indexed bytes32,indexed bytes32,bytes32,bytes32,bool)
- handler: handleSpatialAssetRegistered
- - event: SpatialAssetDeactivated(indexed bytes32)
- handler: handleSpatialAssetDeactivated
- - event: ParentAdded(indexed bytes32,indexed bytes32)
- handler: handleParentAdded
- - event: ChildrenAdded(indexed bytes32,indexed bytes32)
- handler: handleChildrenAdded
- - event: ParentRemoved(indexed bytes32,indexed bytes32)
- handler: handleParentRemoved
- - event: ChildrenRemoved(indexed bytes32,indexed bytes32)
- handler: handleChildrenRemoved
- - event: ChildrenErrorNoParent(indexed bytes32,indexed bytes32)
- handler: handleChildrenErrorNoParent
- - event: ChildrenErrorNoExistence(indexed bytes32,indexed bytes32)
- handler: handleChildrenErrorNoExistence
- - event: ChildrenErrorHasParent(indexed bytes32,indexed bytes32)
- handler: handleChildrenErrorHasParent
- file: ./src/mapping.ts
diff --git a/legacy/packages/subgraph/subgraphLocal.yaml b/legacy/packages/subgraph/subgraphLocal.yaml
deleted file mode 100644
index 2dfda85..0000000
--- a/legacy/packages/subgraph/subgraphLocal.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-specVersion: 0.0.2
-schema:
- file: ./schema.graphql
-dataSources:
- - kind: ethereum/contract
- name: SpatialAssets
- network: mainnet
- source:
- address: "0xCfEB869F69431e42cdB54A4F4f105C19C080A601"
- abi: SpatialAssets
- mapping:
- kind: ethereum/events
- apiVersion: 0.0.4
- language: wasm/assemblyscript
- entities:
- - SpatialAsset
- - Node
- abis:
- - name: SpatialAssets
- file: ./abis/SpatialAssets.json
- eventHandlers:
- - event: SpatialAssetRegistered(indexed address,indexed bytes32,indexed bytes32,bytes32,bytes32,bool)
- handler: handleSpatialAssetRegistered
- - event: SpatialAssetDeactivated(indexed bytes32)
- handler: handleSpatialAssetDeactivated
- - event: ParentAdded(indexed bytes32,indexed bytes32)
- handler: handleParentAdded
- - event: ChildrenAdded(indexed bytes32,indexed bytes32)
- handler: handleChildrenAdded
- - event: ParentRemoved(indexed bytes32,indexed bytes32)
- handler: handleParentRemoved
- - event: ChildrenRemoved(indexed bytes32,indexed bytes32)
- handler: handleChildrenRemoved
- - event: ChildrenErrorNoParent(indexed bytes32,indexed bytes32)
- handler: handleChildrenErrorNoParent
- - event: ChildrenErrorNoExistence(indexed bytes32,indexed bytes32)
- handler: handleChildrenErrorNoExistence
- - event: ChildrenErrorHasParent(indexed bytes32,indexed bytes32)
- handler: handleChildrenErrorHasParent
- file: ./src/mapping.ts
diff --git a/legacy/packages/subgraph/tsconfig.json b/legacy/packages/subgraph/tsconfig.json
deleted file mode 100644
index 0d59dec..0000000
--- a/legacy/packages/subgraph/tsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "extends": "./node_modules/@graphprotocol/graph-ts/tsconfig.json",
- "compilerOptions": {
- "types": ["@graphprotocol/graph-ts"],
- "outDir": "./lib",
- "rootDir": "./src",
- "composite": true,
- "strictNullChecks": false
- }
-}
diff --git a/legacy/tsconfig.json b/legacy/tsconfig.json
deleted file mode 100644
index 9ba1d3a..0000000
--- a/legacy/tsconfig.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "compilerOptions": {
- "module": "commonjs",
- "lib": ["es2017", "dom", "dom.iterable", "scripthost"],
- "target": "es6",
- "declaration": true,
- "noImplicitAny": true,
- "removeComments": true,
- "esModuleInterop": true,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "sourceMap": true,
- "resolveJsonModule": true,
- "baseUrl": "./packages" /* Base directory to resolve non-absolute module names. */,
- "paths": {
- /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
- "@astraldao/*": ["./*/"]
- }
- },
- "exclude": ["node_modules", "**/*.spec.ts", "**/*.test.ts"],
- "references": [
- { "path": "./packages/core" },
- { "path": "./packages/subgraph" }
- ]
-}
diff --git a/location-proof-protocol/README.md b/location-proof-protocol/README.md
deleted file mode 100644
index 4ca3dcd..0000000
--- a/location-proof-protocol/README.md
+++ /dev/null
@@ -1,77 +0,0 @@
-#########################
-
-## For review only
-
-#########################
-
-# π Location Proof Protocol
-
-The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way.
-
-Given the diverse requirements and approaches for location proofs, our goal is to support innovation across a wide range of proof strategies
-while providing a standard data model for creating and verifying these proofs.
-
-This repository currently contains the code necessary to deploy the core Ethereum Attestation Service (EAS) schema for the protocol. The
-standard includes a framework (in development) for building "recipes" that allow for many different strategies for proving location to be
-added.
-
-## The Challenge
-
-### Broad Approaches to Location Proofs
-
-- **Authority-based Strategies**: Authorized individuals attest to someone's presence. i.e. ticket checkers, event hosts
-- **Social Strategies**: People verify each other's claims, confirming or challenging their validity. i.e. permissionless social
- confirmation, perhaps with sybil-resistant scoring of confirmer accounts; PIN exchange
-- **Near-field Machine Strategies**: Hardware devices attest to the presence of another device through information exchange or cryptographic
- 'endorsement' of a claim. i.e. RFID; NFC; Bluetooth
-- **Network Machine Strategies**: Nodes on a local network or hardware wallets triangulate position and sign confirmation attestations. i.e.
- Time of Flight; Time Difference of Arrival
-- **Sensor Data Strategies**: Where devices sense local networks, environmental conditions, images + audio, accelerometers, etc, and
- location is discerned from analysis of this evidence. i.e. radio frequency / optical / inertial / acoustic / magnetometer localization
-
-In addition to these different categories of strategies, various verification schemes can be employed to endow location proof recipes with a
-different attributes, such as privacy, game theoretic assurances of validity, etc.
-
-- **Time-based Schemes**: Involves waiting or challenge periods.
-- **Cryptographic Schemes**: Zero-knowledge proofs verified on-chain or in peer nodes.
-- **AI-based Schemes**: Analyzing photos or contextual information.
-- **Economic Schemes**: Requires payment or staking value for proof creation.
-
-This is an incomplete list, and we hope to support a growing set of experiments in location proof design.
-
-### Diverse Spatial Reference Systems
-
-Location proofs may not always relate to Earth-based coordinates but could be relative to other objects or within different spatial
-reference systems, such as:
-
-- Being with a person at a particular time
-- Location in a metaverse space
-- Presence in a vehicle or a specific room
-
-Astral's Location Proof Protocol aims to support location proofs within a wide range of different spatial reference systems, both global and
-relative. However, initial development of the protocol will focus on positioning objects / events on Earth.
-
-## Our Approach
-
-### Generalized Location Proof Protocol
-
-We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and
-verifying location proofs.
-
-## Repository Contents
-
-- **Contract Deployment Scripts**: Scripts to deploy the core EAS schema for the Location Proof Protocol
-- **Proof Creation Documentation**: Detailed documentation on how to interact with the EAS schema
-- **Location Proof Strategy Development Guides**: Detailed information on how to create and register recipes for creating location proofs
- based on different strategies
-
-## Core Schema v0.1 (Sepolia Testnet)
-
-The current working schema described [here](./schema/README.md) is deployed on Ethereum Sepolia testnet, UID
-`0x9efcbaa4a39a233977a6db557fd81ba5adc9023ca731db86cfd562c4fbf4073e`
-([view on EASScan](https://sepolia.easscan.org/schema/view/0x9efcbaa4a39a233977a6db557fd81ba5adc9023ca731db86cfd562c4fbf4073e)).
-
-## Contributing
-
-We welcome contributions to improve the protocol and tools. Please read our
-[contributing guidelines](https://github.com/AstralProtocol/astralprotocol/wiki/Contributing-guidelines) for more details.
diff --git a/markdown-page/index.html b/markdown-page/index.html
new file mode 100644
index 0000000..a046163
--- /dev/null
+++ b/markdown-page/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+Markdown page example | Astral Documentation
+
+
+
+
+
+Markdown page example
+You don't need React to write simple standalone pages.
+
+
\ No newline at end of file
diff --git a/package.json b/package.json
deleted file mode 100644
index e10c16d..0000000
--- a/package.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "name": "@AstralProtocol/astralprotocol",
- "description": "Tools and infrastructure for onchain location-based apps.",
- "version": "1.0.0",
- "author": {
- "name": "AstralProtocol",
- "url": "https://github.com/AstralProtocol"
- },
- "dependencies": {
- "@openzeppelin/contracts": "^5.0.1"
- },
- "devDependencies": {
- "@prb/test": "^0.6.4",
- "forge-std": "github:foundry-rs/forge-std#v1.7.5",
- "prettier": "3.2.5",
- "solhint": "^3.6.2"
- },
- "keywords": [
- "blockchain",
- "ethereum",
- "forge",
- "foundry",
- "smart-contracts",
- "solidity",
- "template"
- ],
- "private": true,
- "scripts": {
- "clean": "rm -rf cache out",
- "build": "forge build",
- "lint": "bun run lint:sol && bun run prettier:check",
- "lint:sol": "forge fmt --check && bun solhint {script,src}/**/*.sol",
- "prettier:check": "prettier --check '*.{json,md,yml}' --ignore-path '.prettierignore'",
- "prettier:write": "prettier --write '*.{json,md,yml}' --ignore-path '.prettierignore'",
- "test": "forge test",
- "test:coverage": "forge coverage",
- "test:coverage:report": "forge coverage --report lcov && genhtml lcov.info --branch-coverage --output-dir coverage"
- }
-}
diff --git a/remappings.txt b/remappings.txt
deleted file mode 100644
index ed67b07..0000000
--- a/remappings.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/
-@prb/test/=node_modules/@prb/test/
-forge-std/=node_modules/forge-std/
-@interface=src/interface
-@contracts=src/contracts
-
diff --git a/script/Base.s.sol b/script/Base.s.sol
deleted file mode 100644
index 07135a2..0000000
--- a/script/Base.s.sol
+++ /dev/null
@@ -1,41 +0,0 @@
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.8.25 <0.9.0;
-
-import { Script } from "forge-std/src/Script.sol";
-
-abstract contract BaseScript is Script {
- /// @dev Included to enable compilation of the script without a $MNEMONIC environment variable.
- string internal constant TEST_MNEMONIC = "test test test test test test test test test test test junk";
-
- /// @dev Needed for the deterministic deployments.
- bytes32 internal constant ZERO_SALT = bytes32(0);
-
- /// @dev The address of the transaction broadcaster.
- address internal broadcaster;
-
- /// @dev Used to derive the broadcaster's address if $ETH_FROM is not defined.
- string internal mnemonic;
-
- /// @dev Initializes the transaction broadcaster like this:
- ///
- /// - If $ETH_FROM is defined, use it.
- /// - Otherwise, derive the broadcaster address from $MNEMONIC.
- /// - If $MNEMONIC is not defined, default to a test mnemonic.
- ///
- /// The use case for $ETH_FROM is to specify the broadcaster key and its address via the command line.
- constructor() {
- address from = vm.envOr({ name: "ETH_FROM", defaultValue: address(0) });
- if (from != address(0)) {
- broadcaster = from;
- } else {
- mnemonic = vm.envOr({ name: "MNEMONIC", defaultValue: TEST_MNEMONIC });
- (broadcaster,) = deriveRememberKey({ mnemonic: mnemonic, index: 0 });
- }
- }
-
- modifier broadcast() {
- vm.startBroadcast(broadcaster);
- _;
- vm.stopBroadcast();
- }
-}
diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol
deleted file mode 100644
index b39f4bd..0000000
--- a/script/Deploy.s.sol
+++ /dev/null
@@ -1,13 +0,0 @@
-// SPDX-License-Identifier: UNLICENSED
-pragma solidity >=0.8.25 <0.9.0;
-
-import { RegistryFactory } from "@contracts/RegistryFactory.sol";
-
-import { BaseScript } from "./Base.s.sol";
-
-/// @dev See the Solidity Scripting tutorial: https://book.getfoundry.sh/tutorials/solidity-scripting
-contract Deploy is BaseScript {
- function run() public broadcast returns (RegistryFactory registryFactory) {
- registryFactory = new RegistryFactory();
- }
-}
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 0000000..213b4e0
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1 @@
+https://docs.astral.global/blog weekly 0.5 https://docs.astral.global/blog/archive weekly 0.5 https://docs.astral.global/blog/first-blog-post weekly 0.5 https://docs.astral.global/blog/long-blog-post weekly 0.5 https://docs.astral.global/blog/mdx-blog-post weekly 0.5 https://docs.astral.global/blog/tags weekly 0.5 https://docs.astral.global/blog/tags/docusaurus weekly 0.5 https://docs.astral.global/blog/tags/facebook weekly 0.5 https://docs.astral.global/blog/tags/hello weekly 0.5 https://docs.astral.global/blog/tags/hola weekly 0.5 https://docs.astral.global/blog/welcome weekly 0.5 https://docs.astral.global/markdown-page weekly 0.5 https://docs.astral.global/docs/core-concepts/decentralized-spatial-data weekly 0.5 https://docs.astral.global/docs/core-concepts/location-proofs weekly 0.5 https://docs.astral.global/docs/core-concepts/onchain-geospatial weekly 0.5 https://docs.astral.global/docs/core-concepts/what-is-spatial-data weekly 0.5 https://docs.astral.global/docs/developer-resources/location-attestations weekly 0.5 https://docs.astral.global/docs/developer-resources/quickstart weekly 0.5 https://docs.astral.global/docs/developer-resources/spatial-registries weekly 0.5 https://docs.astral.global/docs/examples weekly 0.5 https://docs.astral.global/docs/hello weekly 0.5 https://docs.astral.global/docs/intro weekly 0.5 https://docs.astral.global/docs/introducing-astral weekly 0.5 https://docs.astral.global/docs/location-proof-protocol/architecture weekly 0.5 https://docs.astral.global/docs/location-proof-protocol/eas-schema weekly 0.5 https://docs.astral.global/docs/location-proof-protocol/introduction weekly 0.5 https://docs.astral.global/docs/location-proof-protocol/location-types weekly 0.5 https://docs.astral.global/docs/location-proof-protocol/media-types weekly 0.5 https://docs.astral.global/docs/location-proof-protocol/rationale weekly 0.5 https://docs.astral.global/docs/location-proof-protocol/strategies-recipes weekly 0.5 https://docs.astral.global/docs/spatial-registries/logbook weekly 0.5 https://docs.astral.global/docs/spatial-registries/spatial-sol weekly 0.5 https://docs.astral.global/docs/tutorial-basics/congratulations weekly 0.5 https://docs.astral.global/docs/tutorial-basics/create-a-blog-post weekly 0.5 https://docs.astral.global/docs/tutorial-basics/create-a-document weekly 0.5 https://docs.astral.global/docs/tutorial-basics/create-a-page weekly 0.5 https://docs.astral.global/docs/tutorial-basics/deploy-your-site weekly 0.5 https://docs.astral.global/docs/tutorial-basics/markdown-features weekly 0.5 https://docs.astral.global/docs/tutorial-extras/manage-docs-versions weekly 0.5 https://docs.astral.global/docs/tutorial-extras/translate-your-site weekly 0.5 https://docs.astral.global/ weekly 0.5
\ No newline at end of file
diff --git a/src/contracts/location-proof-protocol/README.md b/src/contracts/location-proof-protocol/README.md
deleted file mode 100644
index 19edfb6..0000000
--- a/src/contracts/location-proof-protocol/README.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# π Location Proof Protocol
-
-The Location Proof Protocol aims to address the challenge of proving location on the decentralized web in a flexible, yet standardized way.
-
-Given the diverse requirements and approaches for location proofs, our goal is to support innovation across a wide range of proof strategies
-while providing a standard data model for creating and verifying these proofs.
-
-This repository currently contains the code necessary to deploy the core Ethereum Attestation Service (EAS) schema for the protocol. The
-standard includes a framework (in development) for building "recipes" that allow for many different strategies for proving location to be
-added.
-
-## The Challenge
-
-### Broad Approaches to Location Proofs
-
-- **Authority-based Strategies**: Authorized individuals attest to someone's presence. i.e. ticket checkers, event hosts
-- **Social Strategies**: People verify each other's claims, confirming or challenging their validity. i.e. permissionless social
- confirmation, perhaps with sybil-resistant scoring of confirmer accounts; PIN exchange
-- **Near-field Machine Strategies**: Hardware devices attest to the presence of another device through information exchange or cryptographic
- 'endorsement' of a claim. i.e. RFID; NFC; Bluetooth
-- **Network Machine Strategies**: Nodes on a local network or hardware wallets triangulate position and sign confirmation attestations. i.e.
- Time of Flight; Time Difference of Arrival
-- **Sensor Data Strategies**: Where devices sense local networks, environmental conditions, images + audio, accelerometers, etc, and
- location is discerned from analysis of this evidence. i.e. radio frequency / optical / inertial / acoustic / magnetometer localization
-
-In addition to these different categories of strategies, various verification schemes can be employed to endow location proof recipes with a
-different attributes, such as privacy, game theoretic assurances of validity, etc.
-
-- **Time-based Schemes**: Involves waiting or challenge periods.
-- **Cryptographic Schemes**: Zero-knowledge proofs verified on-chain or in peer nodes.
-- **AI-based Schemes**: Analyzing photos or contextual information.
-- **Economic Schemes**: Requires payment or staking value for proof creation.
-
-This is an incomplete list, and we hope to support a growing set of experiments in location proof design.
-
-### Diverse Spatial Reference Systems
-
-Location proofs may not always relate to Earth-based coordinates but could be relative to other objects or within different spatial
-reference systems, such as:
-
-- Being with a person at a particular time
-- Location in a metaverse space
-- Presence in a vehicle or a specific room
-
-Astral's Location Proof Protocol aims to support location proofs within a wide range of different spatial reference systems, both global and
-relative. However, initial development of the protocol will focus on positioning objects / events on Earth.
-
-## Our Approach
-
-### Generalized Location Proof Protocol
-
-We are developing a protocol that accommodates various proof strategies while maintaining a standard data model and tools for creating and
-verifying location proofs.
-
-## Repository Contents
-
-- **Contract Deployment Scripts**: Scripts to deploy the core EAS schema for the Location Proof Protocol
-- **Proof Creation Documentation**: Detailed documentation on how to interact with the EAS schema
-- **Location Proof Strategy Development Guides**: Detailed information on how to create and register recipes for creating location proofs
- based on different strategies
-
-## Core Schema v0.1 (Sepolia Testnet)
-
-The current working schema described [here](./schema/README.md) is deployed on Ethereum Sepolia testnet, UID
-`0x9efcbaa4a39a233977a6db557fd81ba5adc9023ca731db86cfd562c4fbf4073e`
-([view on EASScan](https://sepolia.easscan.org/schema/view/0x9efcbaa4a39a233977a6db557fd81ba5adc9023ca731db86cfd562c4fbf4073e)).
-
-## Contributing
-
-We welcome contributions to improve the protocol and tools. Please read our
-[contributing guidelines](https://github.com/AstralProtocol/astralprotocol/wiki/Contributing-guidelines) for more details.
diff --git a/src/contracts/location-proof-protocol/locations/README.md b/src/contracts/location-proof-protocol/locations/README.md
deleted file mode 100644
index f26e46b..0000000
--- a/src/contracts/location-proof-protocol/locations/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Location Proof Protocol v0.1: `locationType`
-
-To ensure location proofs are as versatile as possible, we are giving users / developers the option of creating proofs that adhere to any
-location type.
-
-This requires creating a standardized set of categories for "location types" that include various ways of representing locations such as
-different coordinate systems, H3 strings, geohashes, and more. The purpose of this is to ensure interoperability and clarity in geospatial
-data management, while still offering flexibility for different proof types.
-
-Here is a v0.1 proposed categorization.
-
-### Categories of Location Types
-
-1. **Geographic Coordinates (Lat/Long)**
- - **Decimal Degrees**: Standard longitude and latitude (e.g., `[-122.4194, 37.7749]`).
- - **Degrees, Minutes, Seconds (DMS)**: Latitude and longitude in degrees, minutes, and seconds (e.g., `37Β°46'30" N, 122Β°25'10" W`).
-2. **Projected Coordinates**
- - **Universal Transverse Mercator (UTM)**: Uses a series of zones for global coverage (e.g., `10S 551000 4182000`).
- - **State Plane Coordinate System (SPCS)**: Used in the United States (e.g., `X: 2000000, Y: 500000` in a specific state plane zone).
-3. **Geohashes**
- - **Geohash**: A hierarchical spatial data structure which subdivides space into buckets of grid shape (e.g., `9q8yyz`).
-4. **H3 Hexagons**
- - **H3**: A hierarchical hexagonal grid system used for spatial indexing (e.g., `85283473fffffff`).
-5. **Plus Codes**
- - **Open Location Code (OLC)**: Developed by Google, it's a code that represents an area anywhere on Earth (e.g., `7FG8V4VC+G7`).
-6. **Grid References**
- - **Military Grid Reference System (MGRS)**: Used by NATO militaries for locating points on the Earth (e.g., `33TWN8382558454`).
- - **British National Grid (OSGB)**: Used in Great Britain (e.g., `TQ 298828`).
-7. **Place Names / Addresses**
- - **Postal Address**: Standard mailing address (e.g., `1600 Amphitheatre Parkway, Mountain View, CA`).
- - **Named Locations**: Known place names (e.g., `Eiffel Tower`).
-8. **What3Words References**
- - **W3W**: A geocoding system that encodes geographic coordinates into three dictionary words (e.g., ///filled.count.soap).
-
-Formal specification of the location types and how they are represented is in development, and will be documented here.
diff --git a/src/contracts/location-proof-protocol/media/README.md b/src/contracts/location-proof-protocol/media/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/src/contracts/location-proof-protocol/recipes/CONTRIBUTING.md b/src/contracts/location-proof-protocol/recipes/CONTRIBUTING.md
deleted file mode 100644
index e69de29..0000000
diff --git a/src/contracts/location-proof-protocol/recipes/README.md b/src/contracts/location-proof-protocol/recipes/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/src/contracts/location-proof-protocol/recipes/sample-recipe/README.md b/src/contracts/location-proof-protocol/recipes/sample-recipe/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/src/contracts/location-proof-protocol/recipes/sample-recipe/SampleRecipe.sol b/src/contracts/location-proof-protocol/recipes/sample-recipe/SampleRecipe.sol
deleted file mode 100644
index e69de29..0000000
diff --git a/src/contracts/location-proof-protocol/recipes/sample-recipe/offchain-peripherals/sample-recipe.ts b/src/contracts/location-proof-protocol/recipes/sample-recipe/offchain-peripherals/sample-recipe.ts
deleted file mode 100644
index e69de29..0000000
diff --git a/src/contracts/location-proof-protocol/schema/README.md b/src/contracts/location-proof-protocol/schema/README.md
deleted file mode 100644
index f0877ad..0000000
--- a/src/contracts/location-proof-protocol/schema/README.md
+++ /dev/null
@@ -1,25 +0,0 @@
-# Location Proof Protocol: Core Data Model v0.1
-
-## Core Layer
-
-The core layer of the Location Proof Protocol includes a standard data model. v0.1 of the data model is described in this document. The
-current working schema is deployed on Ethereum Sepolia testnet, UID `0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b`
-([view on EASScan](https://sepolia.easscan.org/schema/view/0xd928da08c10180b639e31c5f46acf4ea011d88ec7ac44bd95f32385e2d66032b)).
-
-| Field | Description | Key | Data Type | Source |
-| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ---------- | ---------------------------------------------------------------------------------------------------------------- |
-| Identifier | Unique ID for the location proof. | `uid` | `bytes32` | EAS provides this |
-| Prover Address | Address of the prover. | `from` | `address` | Sender address, as specified by EAS |
-| Subject Identifier | Unique ID for the subject/event. | `subject` | `address` | EAS provides this, however future iterations may require IDs that are not Ethereum addresses (DIDs, for example) |
-| Timestamp | Time the location proof was created. | `timestamp` | `uint256` | EAS |
-| Event Timestamp | Time of the event referenced by the location proof. | `eventTimestamp` | `uint256` | User input |
-| Spatial Reference System | Coordinate system within which the object is positioned. | `srs` | `string` | in v0.1, hard coded to "EPSG:4326" |
-| Location Type | A string defining how the location field is structured. | `locationType` | `string` | Depends on the `recipe` / strategy, or user input |
-| Location | The location of the object/event. | `location` | `bytes` | Depends on the `recipe` / strategy, or user input |
-| Proof Recipe Identifier | Indicates the proof recipe used. | `recipeType` | `string[]` | Defined from a set of registered recipes, to be stored in the @/recipes directory |
-| Proof Recipe Payload | Encoded data specific to the proof recipe, which could include encrypted location data, a zero-knowledge proof, or references to other verification data. | `recipePayload` | `bytes[]` | Specified in recipe definition |
-| Media Type | A unique string referring to the media to be included in a `bytes` field, Media Data. This pattern is similar to OpenGraph Protocolβs `type` definition. | `mediaType` | `string[]` | Defined from a set of supported media types, to be stored in the @/media directory |
-| Media Data | A `bytes` field allowing the attachment of arbitrary data to a location proof. This data is intended to be irrelevant to the location proof and not required/utilized in the proof recipe verification. | `mediaData` | `bytes[]` | Specified in media type definition |
-| Memo | An arbitrary message | `memo` | `string` | User input |
-
-Note that this design supports location proofs that include multiple recipe types / recipe payloads and media type / media data.
diff --git a/src/contracts/spatial-registry/README.md b/src/contracts/spatial-registry/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/src/contracts/spatial-registry/RegistryFactory.sol b/src/contracts/spatial-registry/RegistryFactory.sol
deleted file mode 100644
index 30afa3d..0000000
--- a/src/contracts/spatial-registry/RegistryFactory.sol
+++ /dev/null
@@ -1,38 +0,0 @@
-// SPDX-FileCopyrightText: Β©οΈ 2024 Astral Protocol
-
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.25;
-
-import { Context } from "@openzeppelin/contracts/utils/Context.sol";
-import { SpatialRegistry } from "@contracts/SpatialRegistry.sol";
-import { IRegistryFactory } from "@interface/IRegistryFactory.sol";
-
-/**
- * @title RegistryFactory
- * @author The Astral Protocol team
- * @notice RegistryFactory contract is used to deploy spatial registries.
- * RegistryFactory contract is operated by AstralProtocol, SpatialRegistries
- * are operated by deployer - data provider - registry owner (organization).
- */
-
-// TODO: Add view functions OPT using ERC721Enumerable by oz.
-contract RegistryFactory is IRegistryFactory, Context {
- // TODO: (OPT) Restrict further, to allowed address list, is order to aviod malicious
- // contract presenting themselves as Astral.
- address[] public deployedRegistries;
- address AstralProtocolOwner;
-
- constructor() {
- // TODO: possibly redundant, can utilize "owner" on erc721 from oz.
- AstralProtocolOwner = _msgSender();
- }
- /**
- * @inheritdoc IRegistryFactory
- * @dev (needed for compiler https://github.com/ethereum/solidity/issues/14397)
- */
-
- function DeployRegistry(address owner) public {
- SpatialRegistry newRegistry = new SpatialRegistry(owner);
- deployedRegistries.push(address(newRegistry));
- }
-}
diff --git a/src/contracts/spatial-registry/SpatialRegistry.sol b/src/contracts/spatial-registry/SpatialRegistry.sol
deleted file mode 100644
index 3ee78c8..0000000
--- a/src/contracts/spatial-registry/SpatialRegistry.sol
+++ /dev/null
@@ -1,69 +0,0 @@
-// SPDX-FileCopyrightText: Β©οΈ 2024 Astral Protocol
-
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.25;
-
-import { ERC721, IERC165 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
-import { ERC721Enumerable } from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
-import { ISpatialRegistry } from "@interface/ISpatialRegistry.sol";
-import { Coordinates } from "@contracts/Coordinates.sol";
-
-/**
- * @title SpatialRegistry
- * @author The Astral Protocol team
- * @notice SpatialRegistry contract is used to manage spatial assets.
- * It is created by the RegistryFactory.sol contract,
- * Restrict state change (adding assets) to the deployer - data provider - registry organization.
- */
-contract SpatialRegistry is ISpatialRegistry, ERC721 {
- address owner;
- uint256 private currentAssetId = 0;
- /* All coords in the registry (of multiple registryAssets) */
- mapping(uint256 => registryAssets) spatialAssets;
-
- // TODO: add reentrancy, pausable, accessControl..
- // TODO: restrict to RegistryFactory contract.
- Coordinates coordinates;
-
- constructor(address _owner) ERC721("AstralRegistry", "AST") {
- owner = _owner;
- coordinates = new Coordinates();
- }
-
- /**
- * @inheritdoc ISpatialRegistry
- * @dev (needed for compiler https://github.com/ethereum/solidity/issues/14397)
- */
- function mintGISPoint(bytes32 lat, bytes32 long) external onlyOwner {
- currentAssetId++;
- uint256 CoordinateId = coordinates.addCoordinate(lat, long);
- spatialAssets[currentAssetId] = registryAssets({ coordinateIdRange: [CoordinateId, CoordinateId] });
- _safeMint(owner, currentAssetId);
- }
-
- /**
- * @inheritdoc ISpatialRegistry
- * @dev (needed for compiler https://github.com/ethereum/solidity/issues/14397)
- */
- function mintGISFeature(bytes32[] calldata coords) external {
- // TODO: Limit number of coords to avoid an unbounded loop.
- currentAssetId++;
- uint256[2] memory _coordinatesIdsRange = _iterateCoords(coords);
- spatialAssets[currentAssetId] = registryAssets({ coordinateIdRange: _coordinatesIdsRange });
- _safeMint(owner, currentAssetId);
- }
-
- function _iterateCoords(bytes32[] calldata _coords) private returns (uint256[2] memory _coordinatesIdsRange) {
- for (uint256 i = 0; i < _coords.length; i += 2) {
- uint256 _coordinateId = coordinates.addCoordinate(_coords[i], _coords[++i]);
- if (i == 0) _coordinatesIdsRange[0] = _coordinateId;
- if (i == _coords.length - 1) _coordinatesIdsRange[1] = _coordinateId;
- }
- return _coordinatesIdsRange;
- }
-
- modifier onlyOwner() {
- require(msg.sender == owner);
- _;
- }
-}
diff --git a/src/contracts/utils/Coordinates.sol b/src/contracts/utils/Coordinates.sol
deleted file mode 100644
index c437537..0000000
--- a/src/contracts/utils/Coordinates.sol
+++ /dev/null
@@ -1,51 +0,0 @@
-// SPDX-FileCopyrightText: Β©οΈ 2024 Astral Protocol
-
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.25;
-
-import { ICoordinate } from "@interface/ICoordinates.sol";
-import { Context } from "@openzeppelin/contracts/utils/Context.sol";
-
-/**
- * @title Coordinate.sol
- * @author The Astral Protocol team
- * @notice Coordinate contract storage, to be used only by the SpatialRegistry(.sol) that is associated to it.
- * // TODO: Replace with SpatialAssets.sol.
- * https://github.com/AstralProtocol/astralprotocol/blob/main/legacy/packages/contracts/contracts/SpatialAssets.sol
- */
-contract Coordinates is ICoordinate, Context {
- address registryAddress;
- uint256 coordinateId = 0;
- mapping(uint256 => Coordiante) public coordinates;
-
- constructor() {
- registryAddress = _msgSender();
- }
-
- function addCoordinate(bytes32 _lat, bytes32 _long) public registryOnly returns (uint256 _coordinateId) {
- coordinateId++;
- coordinates[coordinateId] = Coordiante({ lat: _lat, long: _long, coordinateId: coordinateId });
- return coordinateId;
- }
-
- modifier registryOnly() {
- // TODO: (OPT) Throw custom Error()
- require(
- _msgSender() == registryAddress, "Coordinates.sol: Can only be called by Parent SpatialRegistry contract."
- );
- _;
- }
-}
-
-/**
- * @dev [TBD] coordianteSingleDimension, signed floating point representation of x,y,(z). typycally represents a
- * geojson.Γ
- * TODO: Add represantation format type for additional formats (geoJSON used as default).
- * TODO: Replace with bitwise operations, to be stored the leanest (uint64? [sign, exp, mantissa]
- * OR [sign, precision, value] OR a better solution. )
- */
-// struct coordianteSingleDimension {
-// uint8 sign;
-// uint8 precision;
-// uint8 value;
-// }
diff --git a/src/contracts/utils/README.md b/src/contracts/utils/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/src/interface/ICoordinates.sol b/src/interface/ICoordinates.sol
deleted file mode 100644
index eb1e97e..0000000
--- a/src/interface/ICoordinates.sol
+++ /dev/null
@@ -1,45 +0,0 @@
-// SPDX-FileCopyrightText: Β©οΈ 2024 Astral Protocol
-
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.25;
-
-/**
- * @title Coordinate.sol
- * @author The Astral Protocol team
- * @notice Coordinate contract storage, to be used only by the SpatialRegistry(.sol) that is associated to it.
- * // TODO: Replace with SpatialAssets.sol.
- * https://github.com/AstralProtocol/astralprotocol/blob/main/legacy/packages/contracts/contracts/SpatialAssets.sol
- */
-interface ICoordinate {
- /**
- * @dev Coordinate, used as strings [ATM], signed floating point representation typycally represents a geojson.
- */
- struct Coordiante {
- uint256 coordinateId;
- bytes32 lat;
- bytes32 long;
- }
-
- // TODO: add contractsOnly or a stricter RegistiresOnly modifier.
- // To be used only by the parent registry.
- /**
- *
- * @param lat Latitude coordinate in byte32.
- * @param long Longitude coordinate in bytes32.
- * @return coordinateId to be set on the registry asset
- */
- function addCoordinate(bytes32 lat, bytes32 long) external returns (uint256 coordinateId);
-}
-
-/**
- * @dev [TBD] coordianteSingleDimension, signed floating point representation of x,y,(z). typycally represents a
- * geojson.Γ
- * TODO: Add represantation format type for additional formats (geoJSON used as default).
- * TODO: Replace with bitwise operations, to be stored the leanest (uint64? [sign, exp, mantissa]
- * OR [sign, precision, value] OR a better solution. )
- */
-// struct coordianteSingleDimension {
-// uint8 sign;
-// uint8 precision;
-// uint8 value;
-// }
diff --git a/src/interface/IRegistryFactory.sol b/src/interface/IRegistryFactory.sol
deleted file mode 100644
index 4c76754..0000000
--- a/src/interface/IRegistryFactory.sol
+++ /dev/null
@@ -1,27 +0,0 @@
-// SPDX-FileCopyrightText: Β©οΈ 2024 Astral Protocol
-
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.25;
-
-/**
- * @title RegistryFactory
- * @author The Astral Protocol team
- * @notice RegistryFactory contract is used to deploy spatial registries.
- * RegistryFactory contract is operated by AstralProtocol, SpatialRegistries
- * are operated by deployer - data provider - registry owner (organization).
- */
-interface IRegistryFactory {
- /**
- * @dev DeployRegistry add deploy a new SpatialRegistry.
- * @param owner registry owner.
- */
- function DeployRegistry(address owner) external;
-
- // /**
- // * @dev Emitted when a new spatial registry is created
- // * TODO: optionally, inforce specific contract or interface π
- // * @param associatedContract attestation, dMRV data, custom contract.
- // * @param owner Registry owner - data provider
- // */
- // // event SpatialRegistryDeployed(address associatedContract, address owner);
-}
diff --git a/src/interface/ISpatialRegistry.sol b/src/interface/ISpatialRegistry.sol
deleted file mode 100644
index 9478e6b..0000000
--- a/src/interface/ISpatialRegistry.sol
+++ /dev/null
@@ -1,46 +0,0 @@
-// SPDX-FileCopyrightText: Β©οΈ 2024 Astral Protocol
-
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.25;
-
-import { IERC721 } from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
-import { IERC721Enumerable } from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol";
-
-/**
- * @title SpatialRegistry
- * @author The Astral Protocol team
- * @notice SpatialRegistry contract is used to manage spatial assets.
- * It is created by the RegistryFactory.sol contract,
- * Restrict state change (adding assets) to the deployer - data provider - registry organization.
- */
-interface ISpatialRegistry {
- // // Address of the associated contract to the registry, i.e EAS attestation, zkMaps.
- // address associatedContract;
- // TODO: (OPT) Add multiple associated contracts, or to a specific asset, TBD.
-
- /**
- * @dev GIS asset on the registry (point, line, polygon, etc)
- */
- struct registryAssets {
- uint256[2] coordinateIdRange;
- }
- // TODO: add geoDID, projection format, and whatever needs TBD.
- // TODO: input IPFS hashes, as a light weight alternative to storing on the registry contract.
- // TODO: (OPT) To be replaced with RegistryAsset.sol (legacy).
-
- /**
- * @dev mintGISPoint add a new GIS record to the registry
- * @dev multiple function for different number of coords
- * @dev inherits tokenId from ERC721Enumerable
- * @param lat latitude coordinate
- * @param long longitude coordinate
- * TODO: (opt) Remove method and use only a single coordinate array.
- */
- function mintGISPoint(bytes32 lat, bytes32 long) external;
-
- /**
- * @dev mintGISFeature add a new GIS record to the registry
- * @param coords array
- */
- function mintGISFeature(bytes32[] calldata coords) external;
-}
diff --git a/test/RegistryFactory.t.sol b/test/RegistryFactory.t.sol
deleted file mode 100644
index a91adb5..0000000
--- a/test/RegistryFactory.t.sol
+++ /dev/null
@@ -1,25 +0,0 @@
-// SPDX-License-Identifier: UNLICENSED
-pragma solidity >=0.8.25;
-
-import { RegistryFactory } from "@contracts/RegistryFactory.sol";
-
-interface IERC20 {
- function balanceOf(address account) external view returns (uint256);
-}
-
-/// @dev If this is your first time with Forge, read this tutorial in the Foundry Book:
-/// https://book.getfoundry.sh/forge/writing-tests
-contract RegistryFactoryTest {
- RegistryFactory internal registryFactory;
-
- /// @dev A function invoked before each test case is run.
- function setUp() public virtual {
- // Instantiate the contract-under-test.
- registryFactory = new RegistryFactory();
- }
-
- /// @dev Basic test. Run it with `forge test -vvv` to see the console log.
- function test_Example() external {
- registryFactory.DeployRegistry(address(this));
- }
-}