From e9f82856af5c46bfbdd401f0e59989f98533633d Mon Sep 17 00:00:00 2001 From: gh-actions Date: Mon, 8 Apr 2024 05:50:10 +0000 Subject: [PATCH] Deploy website - based on f14a8bed91156a1013eb95cb12d8cfbb1ef75e50 --- 404.html | 8 ++++---- RFCs/document-syncing.html | 8 ++++---- RFCs/fula-sec.html | 8 ++++---- RFCs/fula-sec/did.html | 8 ++++---- RFCs/fula-sec/encryption.html | 8 ++++---- RFCs/personal-data-reserve.html | 8 ++++---- RFCs/private-network.html | 8 ++++---- RFCs/replication.html | 8 ++++---- RFCs/rfc-process.html | 8 ++++---- api-intro.html | 8 ++++---- api/client-instance.html | 8 ++++---- api/file-api.html | 8 ++++---- api/graph-api.html | 8 ++++---- ...imager-0098395d6b13954a7d9ae647b1ad14dd.png | Bin 0 -> 78747 bytes ...ircuit-bc7eb70b313a56a44664ff935497ed96.jpg | Bin 0 -> 113361 bytes ...eimage-1ac52347426ee09dc487c4ec047d0ce8.jpg | Bin 0 -> 143985 bytes assets/js/1299eea8.f2bb32e3.js | 1 - assets/js/1299eea8.f3cc2b87.js | 1 + assets/js/1c5b444a.5e065227.js | 1 + assets/js/1c5b444a.9d2c2d74.js | 1 - ...9a1b22.1adce6f6.js => 799a1b22.adc1476a.js} | 2 +- assets/js/7e4aa304.3aa51849.js | 1 + ...5f2afb.bb689ed6.js => 935f2afb.329015fb.js} | 2 +- ...8adb27.c169b132.js => a98adb27.34495ab3.js} | 2 +- assets/js/main.a6b3114a.js | 2 ++ ...ICENSE.txt => main.a6b3114a.js.LICENSE.txt} | 0 assets/js/main.c23da155.js | 2 -- assets/js/runtime~main.850c0882.js | 1 + assets/js/runtime~main.d9680df9.js | 1 - blockchain/Recipes/Account.html | 8 ++++---- blockchain/Recipes/Asset.html | 8 ++++---- blockchain/Recipes/Bag.html | 8 ++++---- blockchain/Recipes/Bundle.html | 8 ++++---- blockchain/Recipes/Challenges.html | 8 ++++---- blockchain/Recipes/Claims.html | 8 ++++---- blockchain/Recipes/Manifest.html | 8 ++++---- blockchain/Recipes/Market.html | 8 ++++---- blockchain/Recipes/Pool.html | 8 ++++---- blockchain/Services/BuildNode.html | 8 ++++---- blockchain/Services/Explorer.html | 8 ++++---- blockchain/Services/FulaContractAPI.html | 8 ++++---- blockchain/Services/Node.html | 8 ++++---- blockchain/Services/NodeAPI.html | 8 ++++---- blockchain/Services/ProofEngine.html | 8 ++++---- blockchain/Services/RunNode.html | 8 ++++---- blockchain/Services/Status.html | 8 ++++---- blockchain/blockchain-intro.html | 8 ++++---- blockchain/recipes.html | 8 ++++---- blockchain/services.html | 8 ++++---- blog/archive.html | 8 ++++---- components/WorkInProgress.html | 8 ++++---- design/encryption.html | 8 ++++---- design/test.html | 8 ++++---- functionyard.html | 8 ++++---- functionyard/add-storage.html | 12 ++++++------ functionyard/dapps.html | 8 ++++---- functionyard/fxblox-app.html | 10 +++++----- functionyard/fxfotos.html | 8 ++++---- functionyard/hardware/fxblox-hardware-rk1.html | 8 ++++---- .../hardware/fxblox-hardware-rpi-reimage.html | 17 +++++++++++++++++ functionyard/hardware/fxblox-hardware-rpi.html | 10 +++++----- functionyard/hardware/fxblox-hardware.html | 8 ++++---- functionyard/join.html | 10 +++++----- functionyard/metamask.html | 8 ++++---- getting-started.html | 8 ++++---- getting-started/box-setup.html | 8 ++++---- getting-started/fula-client.html | 8 ++++---- getting-started/rpi-setup.html | 8 ++++---- getting-started/using-samples.html | 8 ++++---- img/fxyard-network/raspberrypi-imager.png | Bin 0 -> 78747 bytes img/fxyard-network/rpi-shortcircuit.jpg | Bin 0 -> 113361 bytes img/fxyard-network/rpi-usbc-reimage.jpg | Bin 0 -> 143985 bytes index.html | 8 ++++---- introduction/bas.html | 8 ++++---- introduction/blox.html | 8 ++++---- introduction/contribute.html | 8 ++++---- .../contribute/contribution-tutorial.html | 8 ++++---- introduction/contribute/styling.html | 8 ++++---- introduction/contribute/writing.html | 8 ++++---- introduction/fula.html | 8 ++++---- mvp.html | 8 ++++---- mvp/admin-reporting.html | 8 ++++---- mvp/box-admin.html | 8 ++++---- mvp/forgot-password.html | 8 ++++---- mvp/fotos.html | 8 ++++---- mvp/fotos/availability.html | 8 ++++---- mvp/fotos/backup.html | 8 ++++---- mvp/fotos/setup.html | 8 ++++---- mvp/fotos/sharing.html | 8 ++++---- mvp/my-account.html | 8 ++++---- mvp/pools.html | 8 ++++---- mvp/pools/storage-provide.html | 8 ++++---- mvp/privacy-dashboard.html | 8 ++++---- mvp/questions.html | 8 ++++---- mvp/technical-questions.html | 8 ++++---- mvp/unboxing.html | 8 ++++---- reference-api.html | 8 ++++---- release/testnet-alpha.html | 8 ++++---- sitemap.xml | 2 +- whitepaper.html | 8 ++++---- work_in_progress.html | 8 ++++---- 101 files changed, 352 insertions(+), 334 deletions(-) create mode 100644 assets/images/raspberrypi-imager-0098395d6b13954a7d9ae647b1ad14dd.png create mode 100644 assets/images/rpi-shortcircuit-bc7eb70b313a56a44664ff935497ed96.jpg create mode 100644 assets/images/rpi-usbc-reimage-1ac52347426ee09dc487c4ec047d0ce8.jpg delete mode 100644 assets/js/1299eea8.f2bb32e3.js create mode 100644 assets/js/1299eea8.f3cc2b87.js create mode 100644 assets/js/1c5b444a.5e065227.js delete mode 100644 assets/js/1c5b444a.9d2c2d74.js rename assets/js/{799a1b22.1adce6f6.js => 799a1b22.adc1476a.js} (88%) create mode 100644 assets/js/7e4aa304.3aa51849.js rename assets/js/{935f2afb.bb689ed6.js => 935f2afb.329015fb.js} (63%) rename assets/js/{a98adb27.c169b132.js => a98adb27.34495ab3.js} (99%) create mode 100644 assets/js/main.a6b3114a.js rename assets/js/{main.c23da155.js.LICENSE.txt => main.a6b3114a.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.c23da155.js create mode 100644 assets/js/runtime~main.850c0882.js delete mode 100644 assets/js/runtime~main.d9680df9.js create mode 100644 functionyard/hardware/fxblox-hardware-rpi-reimage.html create mode 100644 img/fxyard-network/raspberrypi-imager.png create mode 100644 img/fxyard-network/rpi-shortcircuit.jpg create mode 100644 img/fxyard-network/rpi-usbc-reimage.jpg diff --git a/404.html b/404.html index 789f443f..98c51f7f 100644 --- a/404.html +++ b/404.html @@ -5,13 +5,13 @@ Page Not Found | Functionland - - + +
Skip to main content

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/RFCs/document-syncing.html b/RFCs/document-syncing.html index 03c85019..3169907f 100644 --- a/RFCs/document-syncing.html +++ b/RFCs/document-syncing.html @@ -5,13 +5,13 @@ Document Syncing | Functionland - - + +
Skip to main content

Document Syncing

Summary​

This RFC proposes usage of IPFS-Cluster in conjunction with a Correspondant and Newsroom component to sync files and folders across several devices.

Use Case​

A Box owner would like to sync the meeting notes on their desktop with other meeting participants in real time.

They run a command and provide instructions for other participants to download the document.

Each participant is able to download and edit the meeting notes and see updates from others in real time.

Out of Scope​

  • high-frequency updates to documents which might be encountered with multi-tenancy or recording streaming video

  • data persisted by orbit db or any other dbs

Pre-conditions​

  • each participant's device in the meeting is accessible from the others

    EITHER

    * they have a public static IP

    OR

    * NAT hole punching works AND there are relays available to help establish connectivity

Design Considerations​

IPFS-Cluster​

A properly configured ipfs-cluster provides most of the properties required to implement this use case including.

  • a private network of trusted peers

  • conflict resolution

  • notifying peers of changes

  • efficient transmission of data

  • providing peer pinning status

Conflict Resolution​

IPFS Cluster provides two choices for conflict resolution.

CRDT will be used because:

  • it utilizes 'GossipSub' which will probably be useful for future use cases related to replication.

  • it does not require > 50% of peers to be online in order to operate

  • 'follower' peers might be used in the future to provide 'read-only' access

  • 'trusted peers' might be used in the future to provide access control

  • peers will probably come and go frequently (ie/ someone needs to drop from the meeting)

  • since we have full control over the document store, we can ensure the DAG is shallow (based on limitations of number of files in a directory)

  • less stable / tested conflict resolution can be tolerated for this use case

Design​

Box System Architecture​

The following diagram illustrates how various components on the Box will work together to implement data syncing.

There are two new components introduced:

  • correspondant

  • newsroom

Box System Architecture

Box System Architecture

System Properties​

  • peers should not enter a recursive loop with each other by notifying authors of updates that originated from them

  • each program should be reentrant in the sense that they can be aborted at any point during execution then restarted

    • the shared state will be updated to reflect the latest changes to the file system

Correspondant​

The role of the correspondant is to ensure IPFS-Cluster is pinning the latest files created and updated on the author's file system.

When the root CID of the file system changes it should also unpin the old one so that the garbage collector can remove deleted files.

A watch (with debounce) of the filesystem is used instead of an interval timer for the event loop since it will enable changes to be corresponded immediately without consuming resources unnecessarily.

Correspondant Flow State​

Correspondant Flow Chart Implementation

Correspondant Flow Chart Implementation

Newsroom Flow State​

Newsroom FLow Chart Implementation

Newsroom FLow Chart Implementation

Docker-Compose​

In order to access ipfs-cluster-ctl and ipfs from the command line, the correspondant and newsroom will be bundled in the same image as ipfs-cluster-ctl and IPFS.

A separate service will be defined for:

  • newsroom

  • correspondant

  • IPFS

  • ipfs-cluster-ctl

  • ipfs-cluster-service

The docker setup for the IPFS components can be followed from the IPFS-Cluster documentation.

The IPFS components should be listed as a dependency of the correspondant and newsroom.

Future​

Performance Optimizations​

  • a scheduler might be used to prioritize fula-api latency over syncing

  • since the correspondant knows what file/folder changed, it might rebuild the DAG bottom up instead of top down

  • further research needs to be put into how ipfs get works to see if entire contents of the DAG are copied to /fx or only the parts that change

    • if the former is true, since we know the old DAG, we could walk them both ourselves skipping the CIDs that are the same

    • this may be necessary for handling removal of files anyway

Connectivity Research​

The main goal is to remove the connectivity pre-condition from this use case so it will work from any device over the vast majority of network topologies.

The following issues are related to this:

Possibilities​

Data types​

Although this use case is focused on syncing plaintext (eg/ UTF-8 encoded) files it could also cover other documents that IPFS and IPFS-Cluster handles well out of the box such as photos and video.

Person-person Collaboration​

With the addition of an authentication and ACL layer:

  • two different Box owners could share a document with each other and perform real-time edits on it. They might add a third person as reviewer with read-only access

  • a group of people might create a shared album where certain members have the ability to upload photos and others are only allowed to view them (or vice versa)

- - + + \ No newline at end of file diff --git a/RFCs/fula-sec.html b/RFCs/fula-sec.html index b1d48cbf..d7fe205d 100644 --- a/RFCs/fula-sec.html +++ b/RFCs/fula-sec.html @@ -5,13 +5,13 @@ FULA Security Layer | Functionland - - + +
Skip to main content

FULA Security Layer

Overview​

Authentication and encrypted data storage are the main structural elements for decentralized networks and Web3 applications. By default, IPFS does not encrypt the data persisted to it. This means that if someone has a CID, they can access the data without the author's permission. The fula-sec layer aims to solve this, so that data owners can have full control over how their data is accessed.

The fula-sec layer is broken down into the following fundamental building blocks:

What Security Protocols Implemented​

We aim not only to encrypt the data, but also to verify its valid data and use a key exchange mechanism. The key exchange mechanism remains the DID (Decentrilized Identity) mechanism. In the table below, you can see which algorithm was used for what purpose.

KeywordObjectiveDescription
Ed25519Used to obtain user IdentityEdwards-curve Digital Signature Algorithm(EdDSA)
AESUsed by the client side to encrypt each content. The keys are shared only by authorized audience. The keys are not given to audience in a straightforward manner, of course.Advanced Encryption Standard Algorithm (AES)
JWSJWS includes the Signing option. It has two method sign the payload and verify a signed data. A JSON Web Signature (abbreviated JWS) is an IETF-proposed standard (RFC 7515) for signing arbitrary data.
JWEAn encrypted JWE object for one or multiple DIDs.JSON Web Encryption (JWE) is an IETF standard providing a standardised syntax for the exchange of encrypted data, based on JSON and Base64.
RSARSA involves a public key and a private key. The public key can be known by everyone and is used for encrypting messages. The intention is that messages encrypted with the public key can only be decrypted by using the private key.Rivest–Shamir–Adleman.

Unresolved questions​

  • Content Access Revoke
  • Storing DID document in L3 blockchain

Future possibilities​

  • A box owner can associate multiple peer addresses with a DID.
- - + + \ No newline at end of file diff --git a/RFCs/fula-sec/did.html b/RFCs/fula-sec/did.html index 056d045a..6346d212 100644 --- a/RFCs/fula-sec/did.html +++ b/RFCs/fula-sec/did.html @@ -5,14 +5,14 @@ Decentralized Identity (DID) | Functionland - - + +
Skip to main content

Decentralized Identity (DID)

Why DID in FULA?​

DID enables agents to assert their identity so that they can establish trust, privacy and security with other agents in the network without a centralized authority.

What is Required?​

Setting up decentralized identity with providers(blockchain/distributed ledger) usually consists of the following elements:

  1. Identity owner: The user who creates their decentralized identity using the identity wallet.
  2. Issuer/Verifier: An entity that issues and verifies identification information. They sign the transaction with their private key.
  3. Blockchain/Distributed Ledger: A decentralized and distributed ledger that provides the mechanism and functions for DID and operation.
  4. DID (Decentralized Identifier): A unique identifier that contains details such as public key, verification information, documents.

Can we achieve creating DID without any providers?​

Yes, but with some flaws. As long as we do not store all operations with DID on a ledger verified by an acceptable number of other nodes, security of the data will be lost. Moreover, data storage in blockchain/distributed ledger mechanism is immutable and permanent, and hence, modification and deletion are not possible. The decentralized identity systems use this mechanism so that no external entity can tamper or modify the data.

How does it work?​

  1. Create DID identity - With Create DID, we will have a DID identity and two secret keys options for backup.

create-did

Create DID identity flow


  1. Recover DID identity - We need a mnemonic or private key to restore identity.

recover-did

Recover DID identity flow

See here for DID reference implementation.

- - + + \ No newline at end of file diff --git a/RFCs/fula-sec/encryption.html b/RFCs/fula-sec/encryption.html index 57d453ef..5809ab68 100644 --- a/RFCs/fula-sec/encryption.html +++ b/RFCs/fula-sec/encryption.html @@ -5,13 +5,13 @@ Two-way Encryption Mechanism | Functionland - - + +
Skip to main content

Two-way Encryption Mechanism

Summary​

There are two scenarios that require encryption

  1. Tagged DID encryption
  2. Asymmetric Encryption - Encrypt the subscriber/audience's public key.

Tagged Encryption​

Encrypt data by adding a DID.

Tagged encryption works according to the following steps:

  1. Each agent must have a generated DID address.

  2. Alice uses a unique symmetric key (sKn) for encrypting each piece of content and each file while streaming to the Box.

  3. After the file has been successfully stored to the IPFS node, it returns the CID for each encrypted file to Alice.

  4. Alice now gives Bob access to the file by issuing him a JWE Doc with BOB`s DID address, symmetric key (sK1) and CID

  5. Bob decrypts the document using his own DID address and then obtains the symmetric key (sK1) to get the file that belongs to Alice. As a result, BOB gets the CID and sends a request to the Box.

  6. Bob decrypts the data with sK1 while streaming it from the Box.

tagged-encryption

Tagged Encryption Sequence Diagram

See here for tagged encryption sample code.

Asymmetric Encryption​

With assymetric encryption, no one needs to share DID identity with others, they just need to know a PubKey.

Asymmetric Encryption works according to the following steps:

  1. First, each application must have a generated DID address and PublicKey.

  2. Alice uses a unique symmetric key (sKn) for encrypting each piece of content and each file while streaming to the Box.

  3. After the file has been successfully stored to the IPFS node, it returns the CID for each encrypted file to Alice.

  4. Alice now gives Bob access to the file by issuing him a JWE Doc with BOB`s PubKey, symmetric key (sK1) and CID.

  5. Bob decrypts the document using his own PrivateKey and then obtains the symmetric key (sK1) to get the file that belongs to Alice. As a result, BOB gets the CID and sends a request to the Box.

  6. Bob decrypts data with sK1 while streaming it from the Box.

Assymetric Encryption Sequence Diagram

Tagged Encryption Sequence Diagram

See here for assymetric encryption sample code.

References​

- - + + \ No newline at end of file diff --git a/RFCs/personal-data-reserve.html b/RFCs/personal-data-reserve.html index 68106114..cbeb66f9 100644 --- a/RFCs/personal-data-reserve.html +++ b/RFCs/personal-data-reserve.html @@ -5,13 +5,13 @@ Personal Data Reserve | Functionland - - + +
Skip to main content

Personal Data Reserve

Summary​

This RFC covers how a Box customer's data can be replicated across a group of Boxes physically separated from each other to help prevent unwanted loss.

Use Case​

A person owns 3-5 Boxes (eg/ one in their home, one at their office and one at a friend's house).

Their basement floods bricking the one located in their home.

They are still able to access all of the data that was uploaded to their bricked home Box from one of their other Boxes or a brand new Box provisioned with factory settings.

The following scenarios are handled:

  • adding a new Box to the reserve

  • removing a Box from the reserve

  • data becomes corrupted on a Box

Terminology​

NameDefinition
reservea group of keepers collaboratively working together to back up a snapshot
snapshota collection of data that represents the entire file system being backed up at a given moment in time
chunka portion of a data set
keepera Box process responsible for backing up a file system to the reserve
retrievera Box process given the task of rebuilding a usable file system from a snapshot
authorthe Box where the backed up data set was created
peera member of the reserve
replication factorhow many keepers a chunk of data is stored on; a greater replication factor means greater resilience
data seta file, directory, or data from a database
warning time windowhow much time should be given to send an alert before an imminent limitation is encountered and a system failure occurs

Pre-conditions​

  • the owner has already authenticated themselves with each Box

  • the fula-api is persisting data to a disk accessible by the keeper

  • each Box is already provisioned with the necessary configuration info required to operate a reserve

Assumptions​

  • each keeper in a reserve can be trusted to not operate maliciously by performing unwanted delete operations

  • the data being backed up is:

    • multimedia files such as photos and video
    • orbit db metadata
    • plain text files for shared configuration data

Out of Scope​

  • high-frequency updates to data sets which might be encountered with multi-tenancy or recording streaming video

  • syncing of data between Boxes so that it is usable on each Box (eg/ CRUD operations on them in real time)

  • conflicts arising from concurrent updates initiated by a user on several different Boxes

  • heuristics used to minimize bandwidth and improve availability

Limitations​

The following limitations may be encountered while operating a reserve:

  • file size
  • number of files in a directory
  • snapshot size
  • number of keepers in a reserve

Configuration​

Configuration data for each peer can be split into local and shared.

Local Configuration​

  • local Box address

  • local public/private key

Shared Configuration​

  • remote Box addresses of other peers in the reserve

  • shared secret

  • minimum acceptable replication factor

  • 'normal' event dispatching frequency

  • warning time window

    • has a global default as well as an override for each limitation

Conflict Resolution​

Although it can be assumed the snapshot is already free from conflicts caused by concurrent updates initiated from a user, conflicts may still arise from disk corruption or other unforseen keeper errors.

The disputing keepers will take the appropriate steps to resolve the conflict. If an appropriate resolution can not be achieved, an event is raised.

Events​

The following events are dispatched for an administrative UI.

  • limitation imminent

  • limitation encountered

  • keeper health

    • memory
    • disk I/O
    • CPU usage
    • disk corruption
  • unresolved conflict

  • unacceptable replication factor

  • keeper added / removed

  • network disruption

Event Types​

  • normal
  • warning
  • failure

Warnings​

Events dispatched before a failure occurs based on a forecasting heuristic to determine how quickly a limit will be reached.

Event Frequency​

Normal events are dispatched periodically (based on a config param) for historical reporting and warnings|failures are dispatched immediately.

Implementation​

Components​

The components that are needed for this use case are:

  • data set keeper

  • data set retriever

  • event dispatcher

  • file integrity monitor

Event Dispatcher​

A mechanism for dispatching events and queueing them to prevent loss if a peer goes down.

File Integrity Monitoring​

For detecting / handling disk corruption.

A full sweep of the file system is periodically done comparing the contents of chunks on disk with a source of truth.

Network Architecture​

A peer-peer architecture is used over master/slave so that if a single Box goes down the rest of the reserve will still be able to operate normally.

  • any shared config data is stored on each Box

  • any shared state required for the retrieval of a data set is stored on each Box

  • no central servers are used for networking

Drawbacks​

Putting the responsibility of data reliability on Box owners means there is potential for a Box owner to make a mistake and permanently lose their data.

Rationale and alternatives​

An alternative could be to use paid services (cloud storage providers) with their own SLAs to take on the responsibility of data reliability.

If participating in a decentralized storage network (DSN), the Box owner could also purchase a mining component to offset their cost.

There are currently a few drawbacks with this:

  • becoming a storage miner requires a significant upfront investment to cover hardware and staking costs

  • a private reserve will always be more efficient since keepers will not have to worry about the overhead of trusting each other

These options are not mutually exclusive. Offering both options (free and paid) could provide the greatest freedom/flexibility for Box owners.

Dependencies​

  • IPFS Cluster

  • private connections

  • authentication

  • retriever

  • keeper

@TODO - provide links to relevant docs

Unresolved questions​

What is an ideal replication factor?

How can resilience be measured? Markov models?

How can contents of an entire filesystem be efficiently compared with a source of truth?

How can system resources and their limits be calculated?

How can NAT hole punching work in a pnet without any relays?

Should data compression be taken into account?

Future Possibilities​

History​

Storing a history snapshots so an owner can go back in time and recover a data set from a previous state. This could help with data loss due to user errors.

Regions​

A person or group of people may have a large number of Boxes and want to set up geographically grouped regions such that if there is a severe network outage, each region will still be able to recover the entire contents of a snapshot.

- - + + \ No newline at end of file diff --git a/RFCs/private-network.html b/RFCs/private-network.html index 8e4ea8ca..0650a9bf 100644 --- a/RFCs/private-network.html +++ b/RFCs/private-network.html @@ -5,8 +5,8 @@ Private Network | Functionland - - + +
@@ -18,7 +18,7 @@ In the Config we should add to support to load config.json in this format:

{
"nodes": [
"/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
"/dnsaddr/bootstrap.libp2p.io/ipfs/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
"/dnsaddr/bootstrap.libp2p.io/ipfs/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa"
]
}

Which will be used for creating js-libp2p-bootstrap config.

FULA-client​

In fula-client We have to change pkey to fulaSecret so:

createClient(config?: Partial<Libp2pOptions & constructorOptions>, pKey = undefined): Promise<Fula>

to

createClient(config?: Partial<Libp2pOptions & constructorOptions>, fulaSecret = undefined): Promise<Fula>

and change connect interface to get a list of peerId`s from:

connect: (peerId: string) => Connection

to

 connect: (peerId: [string]) => Connection

We need to change Connection in the way that:

Case Study​

For dogfooding of new changes we can use a copy of react-gallery and change the BoxConfig to get list of comma seperated peerIds and App should change to pass the list of peerId's to fula-client.

Note: if example repo would be outside mono-repo we can just use branch for describing every functionality.

Alternative approaches​

VPN​

Using VPN for creating the private network.

Disadvantage:

- - + + \ No newline at end of file diff --git a/RFCs/replication.html b/RFCs/replication.html index d77d451f..a8dc71b6 100644 --- a/RFCs/replication.html +++ b/RFCs/replication.html @@ -5,14 +5,14 @@ Replication | Functionland - - + +
Skip to main content

Replication

Summary

When user set up his box he should join/create a public/private pool. in every pool user will pin their data for High availability and replication. and get fula token for keeping the pinset alive.

Motivation

  • user can mine fula and use app's and other futuers.
  • user can have HA on his/her data.

Guide-level explanation

  • there is node call validator that run's on the box and try to keep the pinset alive.
  • the validator use fula-file-protocol to stream pinned data to functionland/box container which keeping the pools data.
  • the validator can get the proof that the data stored and get to consensus of cluster pinset state.
  • joining to the pool most be base on geolocation.

Reference-level explanation

Drawbacks

Rationale and alternatives

Prior art

Unresolved questions

Future possibilities

- - + + \ No newline at end of file diff --git a/RFCs/rfc-process.html b/RFCs/rfc-process.html index 4f32928f..308baff2 100644 --- a/RFCs/rfc-process.html +++ b/RFCs/rfc-process.html @@ -5,13 +5,13 @@ Requests for comments (RFCs) | Functionland - - + +
Skip to main content

Request for comments

What is the RFC process?​

Many changes, including bug fixes and documentation improvements, can be implemented and reviewed via the normal GitHub pull request workflow.

However, some changes though are "substantial", and we ask that these be put through a bit of design process and produce a consensus among community members.

The "RFC" (Request For Comments) process is intended to provide a consistent, controlled path for new features to enter the project, so that all stakeholders and contributors can be confident about the direction the project is evolving in.

When to follow this process​

You should consider using this process if you intend to make "substantial" changes in any Functionland project or the documentation. Here are some examples of things that would benefit from an RFC:

  • A new feature that requires rethinking of something that has already been developed and shipped.
  • A change in the documentation structure in order to enhance readers experience.
  • The introduction of a new idea, concept or convention that is currently not present in Functionland.

The RFC process will help you attract more attention to your proposal, as well as make sure that everybody gets a chance to participate in shaping and polishing your new idea.

About the process​

In short, to get a major feature added to any of Functionland's projects, you would first get the RFC merged into the RFC repo of that project as a markdown file. At that point the RFC is β€˜active’ and may be implemented with the goal of eventual inclusion.

  • Fork the project repository
  • Copy rfcs/template.md to rfcs/0000-my-feature/README.md (where my-feature is descriptive, don't ask for an RFC number yet)
  • Put any accompanying resources (pictures, etc.) in rfcs/0000-my-feature/. You can refer to these in the text.
  • Fill in the RFC. Details matter! Remember: RFCs that lack convincing motivation, fail to demonstrate understanding of the impact of the design, or are disingenuous about the drawbacks or alternatives tend to be poorly received.
  • Submit a pull request. As a pull request, the RFC will receive design feedback from the broader community. The author should be prepared to revise it in response to their feedback.
  • Build consensus and integrate feedback. RFCs that have broad support are much more likely to make progress than those that don't receive any comments.
  • The community will discuss the RFC pull request in the comment thread of the pull request itself as much as possible. Offline discussion will be summarized on the pull request comment thread.
  • RFCs rarely go through this process unchanged, especially as members of the broader community identify alternatives and drawbacks. You can make edits, big and small, to the RFC to clarify or change the design, but make changes as new commits to the pull request, and leave a comment on the pull request explaining your changes. Specifically, do not squash or rebase commits after they are visible on the pull request.
  • At some point, a member will propose a "motion for final comment period" (FCP), along with a disposition for the RFC (merge, close, or postpone).
    • For RFCs with lengthy discussion, the motion to FCP is usually preceded by a summary comment that attempts to map the current state of the discussion including major tradeoffs and/or points of disagreement.
  • The FCP lasts ten (10) calendar days, guaranteeing it remains open for at least five (5) business days. This allows stakeholders the opportunity to submit any final objections before a decision is reached.
  • In most cases the FCP period is quiet, and the RFC is either merged or closed. However, sometimes substantial new arguments or ideas are raised, the FCP is canceled, and the RFC returns to development mode.
- - + + \ No newline at end of file diff --git a/api-intro.html b/api-intro.html index 0acf40f0..59a6f5ea 100644 --- a/api-intro.html +++ b/api-intro.html @@ -5,13 +5,13 @@ Fula API | Functionland - - + +
Skip to main content

Fula API

We designed Fula API to help you (a third-party, open-source developer) build other rich and compelling user experiences.

Want to get your hands dirty right away? Head over to getting started.

If you're the kind of person who likes to read the entire manual before starting the engine, then visit the Fula Reference API.

- - + + \ No newline at end of file diff --git a/api/client-instance.html b/api/client-instance.html index 88006b2e..a804438b 100644 --- a/api/client-instance.html +++ b/api/client-instance.html @@ -5,13 +5,13 @@ Client Instance | Functionland - - + +
Skip to main content

Client Instance

Fula client package provides a method createClient that returns client instance. You can use this object to call File and Data APIs.

The client instance is basically a wrapper around a libp2p node. It abstracts away the protocol layer and makes it easier to communicate over libp2p with Fula's File and Graph protocols.

In addition to File and Data APIs, the client instance provides access to the underlying libp2p node. It also maintains the connection between client and the Box and provides a reconnecting mechanism.

You can find below basic methods for working with the client instance.

Create a new client instance​

You can use the createClient method to create a new client instance.

async createClient(config?, pKey=undefined)

Arguments are:

  • config?: The configuration object that gets passed directly to the underlying libp2p node. See here for more information
  • pkey: The private key used for securing the connection. Fula client is currently using NOISE as the connection encryptor, if you want to change that in config, make sure you provide appropriate arguments.

The method resolves to a Fula instance.

Example:

import {createClient} from '@functionland/fula'
const client = await createClient()

Connect to Box​

In order to use the different APIs provided by the Fula client, you must connect a client instance to a Box app using the connect method.

async connect(serverId)

Arguments are:

  • serverId: The base58 PeerID string provided by Box app or any other libp2p node supporting File and Graph protocols.

Example:

const serverId = '12D3KooWBFCDpMyEmyAAAAY6PiQw2vaM35ChTZ8ZmVUe8GFRMUrt' // copied from box app
await client.connect(serverId)

Close a connection​

You can disconnect an already connected client instance using the close method. This will close the connection and stops the libp2p node.

async close()

Example:

await client.close()

Access to Libp2p node​

As mentioned earlier, the Fula client is a wrapper around a libp2p node abstracting away the protocol layer and providing APIs to communicate over File and Graph protocols. If you want to do more specific configurations, access the libp2p cache, or access other interfaces, you can use the getNode method.

getNode()

This method returns a Libp2p node.

Example:

const libp2pNode = client.getNode()
console.log(libp2pNode.multiaddrs)
// [ <Multiaddr 047f00000106f9ba - /ip4/127.0.0.1/tcp/63930> ]
WIP Alert

Please note: these instructions remain a work in progress as we continue to evolve, refine and perfect the Fula API. Make sure to check back soon for more details!

- - + + \ No newline at end of file diff --git a/api/file-api.html b/api/file-api.html index 4978bd68..5e2ebf39 100644 --- a/api/file-api.html +++ b/api/file-api.html @@ -5,15 +5,15 @@ File API | Functionland - - + +
Skip to main content

File API (Object Store)

File API provides an interface-like object store for you to upload files and streams (eg. photos, videos or any type of document) and efficiently retrieve them for use in your web/mobile DApp.

File protocol is based on object stores. When you upload something, a CID is created and returned to you and the file gets stored in an IPFS compatible datastore.

Upload​

SendFile​

sendFile(File) => Promise<FileId>

sendFile will take a File as an argument and return a Promise. If the upload completes successfully, a Promise will return a FileId that is a string representing the CID of uploaded content.

Example​

import {Fula, createClient} from '@functionland/fula';

const fulaClient = await createClient();
await fulaClient.connect(serverId);
...
const selectedFile = document.getElementById('input').files[0];
const id = await fulaClient.sendFile(selectedFile);

sendStreamFile​

sendStreamFile(source, meta) => Promise<FileId>

sendStreamFile will take a source and meta as argument and return a Promise. If upload is done successfully, a Promise will return a FileId that is a string representing the CID of uploaded content. (This is useful when you're working with stream or outside the browser.)

  • source: AsyncIterable<Uint8Array>
  • meta: {name,type,lastModified,size}

Example​

import {Fula, createClient} from '@functionland/fula';

const fulaClient = await createClient();
await fulaClient.connect(serverId);
...
export async function* fileToAsyncItrable(file:File) {
const reader = (file.stream()).getReader();
while (true) {
const {value, done} = await reader.read();
if (done) {
break;
}
yield value;
}
}
const selectedFile = document.getElementById('input').files[0];
const id = await fulaClient.sendStreamFile(fileToAsyncItrable(selectedFile),
{
name: selectedFile.name,
type: selectedFile.type,
size: selectedFile.size,
lastModified: selectedFile.lastModified
});

Download​

receiveFile​

(fileId: FileId) => Promise<File>

receiveFile will take FileId and return Promise. if file retrieved successfully Promise return a File

  • fileId: FileId

Example​

import {Fula, createClient} from '@functionland/fula';

const fulaClient = await createClient();
await fulaClient.connect(serverId);
...
const data = await fulaClient.receiveFile(fileId);

receiveMeta​

(fileId: FileId) => Promise<Meta>

receiveMeta will take FileId and return Promise. if meta for the file retrieved successfully Promise return a Meta

  • fileId: FileId

Example​

import {Fula, createClient} from '@functionland/fula';

const fulaClient = await createClient();
await fulaClient.connect(serverId);
...
const {name, type, size, lastModified} = await fulaClient.receiveMeta(fileId);

receiveStreamFile​

(fileId: FileId) => Promise<{ source: AsyncIterable<Uint8Array>, meta: Meta }>

receiveStreamFile will take FileId and return a Promise. If the FileId exists, a Promise will return a { source: AsyncIterable<Uint8Array>, meta: Meta }

That source is a stream of content of the file and Meta is the Meta. (This is useful when you're working with a stream or outside of the browser.)

  • fileId: FileId

Example​

import {Fula, createClient} from '@functionland/fula';

const fulaClient = await createClient();
await fulaClient.connect(serverId);
...
const {source, meta} = await fulaClient.receiveStreamFile(fileId);
const {name, type, size, lastModified} = meta;
const content: Array<Uint8Array> = [];
for await (const chunk of source) {
content.push(Uint8Array.from(chunk));
}
const blob = new Blob(content, {type})


WIP Alert

Please note: these instructions remain a work in progress as we continue to evolve, refine and perfect the Fula API. Make sure to check back soon for more details!

- - + + \ No newline at end of file diff --git a/api/graph-api.html b/api/graph-api.html index da07e454..638dc914 100644 --- a/api/graph-api.html +++ b/api/graph-api.html @@ -5,8 +5,8 @@ Graph API | Functionland - - + +
@@ -27,7 +27,7 @@ takes an array of filters.

Example​

This example demonstrates the filter use:

filter: {
and: [
{name: {nin: ["keyvan", "mahdi"]}},
{
or: [
{age: {gt: 45}},
{age: {lt: 15}}
]
}
]
}

Subscription​

Fula client's Graph API provides subscription for queries. You can subscribe to a query's result and get the new result on each change using the graphqlSubscription method.

async function* graphqlSubscribe(query: string, variableValues?: never, operationName?: string)

The interface is almost identical to the graphql method, except that graphqlSubscribe returns an AsyncIterable.

Arguments are:

The method returns an AsyncIterable that generates a new result based on query filters every time the collection is changed.

Example​

const readQuery = `
query {
read(input:{
collection:"profile",
filter:{
age: {gt: 50}
}
}){
id
name
age
}
}
`;

const resultIterator = client.graphqlSubscribe(readQuery)

for await (const res of resultIterator){
console.log(res)
}

WIP Alert

Please note: these instructions remain a work in progress as we continue to evolve, refine and perfect the Fula API. Make sure to check back soon for more details!

- - + + \ No newline at end of file diff --git a/assets/images/raspberrypi-imager-0098395d6b13954a7d9ae647b1ad14dd.png b/assets/images/raspberrypi-imager-0098395d6b13954a7d9ae647b1ad14dd.png new file mode 100644 index 0000000000000000000000000000000000000000..0af0b4a1e40384545a0b6d20f349ba98885f9544 GIT binary patch literal 78747 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

-=JocE;ELe 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±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�#+!Tk(+HM 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.r(t),a.d(t,{contentTitle:()=>s,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var i=a(7462),n=(a(7294),a(3905)),o=a(2004),r=a.n(o);const l={title:"Add Storage",id:"add-storage"},s=void 0,d={unversionedId:"functionyard/add-storage",id:"functionyard/add-storage",title:"Add Storage",description:"Compatible Storage Drives",source:"@site/docs/functionyard/add-storage.md",sourceDirName:"functionyard",slug:"/functionyard/add-storage",permalink:"/functionyard/add-storage",tags:[],version:"current",frontMatter:{title:"Add Storage",id:"add-storage"},sidebar:"tutorialSidebar",previous:{title:"FxBlox Lite Plus (RK1)",permalink:"/functionyard/hardware/fxblox-hardware-rk1"},next:{title:"FxBlox App Setup",permalink:"/functionyard/fxblox-app"}},p=[{value:"Compatible Storage Drives",id:"compatible-storage-drives",children:[],level:2},{value:"Install Internal Storage",id:"install-internal-storage",children:[{value:"Install M.2 NVMe drive",id:"install-m2-nvme-drive",children:[],level:3},{value:"Install MicroSD Card",id:"install-microsd-card",children:[],level:3}],level:2},{value:"Install External Storage",id:"install-external-storage",children:[],level:2},{value:"Manually Parition and Format",id:"manually-parition-and-format",children:[{value:"Linux (Terminal) (Recommended)",id:"linux-terminal-recommended",children:[{value:"Video Guide",id:"video-guide",children:[],level:4},{value:"Written Guide",id:"written-guide",children:[],level:4}],level:3},{value:"MacOS (Terminal)",id:"macos-terminal",children:[{value:"Video Guide",id:"video-guide-1",children:[],level:4},{value:"Written Guide",id:"written-guide-1",children:[],level:4},{value:"Example Output",id:"example-output",children:[],level:4}],level:3},{value:"Windows (Free Third-Party App)",id:"windows-free-third-party-app",children:[{value:"Video Guide",id:"video-guide-2",children:[],level:4},{value:"Written Guide",id:"written-guide-2",children:[],level:4}],level:3}],level:2},{value:"Troubleshoot",id:"troubleshoot",children:[],level:2}],m={toc:p};function u(e){let{components:t,...o}=e;return(0,n.kt)("wrapper",(0,i.Z)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"compatible-storage-drives"},"Compatible Storage Drives"),(0,n.kt)("p",null,"Almost all types of storage mediums are compatible with the FxBlox. The Blox has internal slots for:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://frame.work/marketplace/expansion-cards"},"Framework Storage Expansion Cards")),(0,n.kt)("li",{parentName:"ul"},"MicroSD"),(0,n.kt)("li",{parentName:"ul"},"M.2 NVMe"),(0,n.kt)("li",{parentName:"ul"},"And any internal/external drives via USB-C (or USB-C adaptor)")),(0,n.kt)("p",null,"For the Blox to recognize and use the drive as storage, it must be formatted to ",(0,n.kt)("strong",{parentName:"p"},"ext4"),". This is automatically done for all drives connected to the Blox during the setup. If you want to add more storage after the fact, then you will have to manually partition and format it."),(0,n.kt)("h2",{id:"install-internal-storage"},"Install Internal Storage"),(0,n.kt)("p",null,"To install an NVMe or MicroSD drive, you'll have to open the Blox to gain access to the Single Board Computer (SBC) inside."),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Remove the four black screws of the 3-port USB-C housing."),(0,n.kt)("li",{parentName:"ol"},"Remove the four silver screws on the bottom of the Blox."),(0,n.kt)("li",{parentName:"ol"},"Slowly slide out the SBC."),(0,n.kt)("li",{parentName:"ol"},"Remove light orange cover on the nvme screw mounting point.")),(0,n.kt)("h3",{id:"install-m2-nvme-drive"},"Install M.2 NVMe drive"),(0,n.kt)("p",null,"With nvme drives, there are a lot of options to choose from. Which ever you choose, M.2 NVMe drives are plenty fast enough to maintain a quality speed for reads, writes, and data transfers."),(0,n.kt)("p",null,"To install your first NVMe drive:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Follow ",(0,n.kt)("a",{parentName:"li",href:"#install-internal-storage"},"steps above to open the case.")),(0,n.kt)("li",{parentName:"ol"},"Insert NVMe drive into M.2 slot at an angle. Make sure no pins are showing."),(0,n.kt)("li",{parentName:"ol"},"Hold drive down, while you screw it into place. (Screw not included with FxBlox)"),(0,n.kt)("li",{parentName:"ol"},"Follow steps in reverse order to put the case back together.")),(0,n.kt)("h3",{id:"install-microsd-card"},"Install MicroSD Card"),(0,n.kt)("p",null,"MicroSD cards have comparitively slow read & write speeds. We don't have enough data to recommend them as a method of storage for Fula net, but it should still be possible to run a high-speed, high-capacity card. The port is located under the wifi card. To access it:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Follow ",(0,n.kt)("a",{parentName:"li",href:"#install-internal-storage"},"steps above to open the case.")),(0,n.kt)("li",{parentName:"ol"},"Wifi card ",(0,n.kt)("strong",{parentName:"li"},"does not")," need to be removed to insert microsd card. Insert microSD card from the side of the board. "),(0,n.kt)("li",{parentName:"ol"},"Follow steps in reverse order to put the case back together.")),(0,n.kt)("h2",{id:"install-external-storage"},"Install External Storage"),(0,n.kt)("p",null,"You can use any type of drive as long as it can be connected via USB-C cable or adapter. Plug it in to any of the three USB-C ports available on the side of the FxBlox. These include, but not limited to:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"SATA drives (2.5-inch internal SSDs or 3.5-inch internal HDDs)"),(0,n.kt)("li",{parentName:"ul"},"External SSD's or HDDs"),(0,n.kt)("li",{parentName:"ul"},"External NVMe drives"),(0,n.kt)("li",{parentName:"ul"},"Docking stations"),(0,n.kt)("li",{parentName:"ul"},"Hardware RAID arrays"),(0,n.kt)("li",{parentName:"ul"},"etc...")),(0,n.kt)("h2",{id:"manually-parition-and-format"},"Manually Parition and Format"),(0,n.kt)("p",null,"If you want to add additional storage at some point after initial setup. You will need to manually parition and format the drive before it can be used by the FxBlox."),(0,n.kt)("p",null,"You will need to ",(0,n.kt)("strong",{parentName:"p"},"parition 100%")," of the drive and ",(0,n.kt)("strong",{parentName:"p"},"format to ext4"),". To do this on Mac and Linux, you will want to be comfortable with the command line. Windows will require a third party tool."),(0,n.kt)("h3",{id:"linux-terminal-recommended"},"Linux (Terminal) (Recommended)"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"You do not need a separate Linux computer to do this.")," Although the drive can not be seen in the FxBlox app yet, we can manually format it through the Blox's desktop interface."),(0,n.kt)("p",null,"At this point, your Blox must already have an internet connection, if not please complete the ",(0,n.kt)("a",{parentName:"p",href:"/functionyard/fxblox-app#app-configuration-steps"},"setting up your FxBlox first"),". If completing set is not an option, you can connect an ethernet cable via usb-c. This will allow you to remotely login from another computer with ",(0,n.kt)("inlineCode",{parentName:"p"},"ssh"),". ",(0,n.kt)("a",{parentName:"p",href:"https://fierrolabs.medium.com/how-to-remote-control-your-fxblox-mac-windows-linux-d0771b1565ca"},"Checkout this article"),", made by a community member, for more information on how to do that."),(0,n.kt)("p",null,"Alternatively, you can connect keyboard, video, & mouse. Bottom port is DisplayPort and HDMI compatible on both the CM4 and RK1."),(0,n.kt)("h4",{id:"video-guide"},"Video Guide"),(0,n.kt)("center",null,(0,n.kt)(r(),{controls:!0,url:"https://youtu.be/jAKz-fTesAg",mdxType:"ReactPlayer"})),(0,n.kt)("h4",{id:"written-guide"},"Written Guide"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Connect your drive to the FxBlox"),(0,n.kt)("li",{parentName:"ol"},"Connect to your FxBlox via ",(0,n.kt)("inlineCode",{parentName:"li"},"ssh")," or keyboard, video, & mouse",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"If you have FxBlox Lite (CM4):",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"ssh pi@fulatower"),", password ",(0,n.kt)("inlineCode",{parentName:"li"},"raspberry")))),(0,n.kt)("li",{parentName:"ul"},"If you have FxBlox Lite Plus (RK1):",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"ssh pi@fxblox-rk1"),", password ",(0,n.kt)("inlineCode",{parentName:"li"},"fxblox")))),(0,n.kt)("li",{parentName:"ul"},"When connecting directly, open up Terminal app with ",(0,n.kt)("inlineCode",{parentName:"li"},"Ctrl + Alt + T")))),(0,n.kt)("li",{parentName:"ol"},"Update current packages with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo apt update && sudo apt upgrade"),". Enter your password.\n:::If it asks to choose between files\nIf it asks to choose (y/n) between two file versions, enter ",(0,n.kt)("inlineCode",{parentName:"li"},"n"),".\n:::"),(0,n.kt)("li",{parentName:"ol"},"Download ",(0,n.kt)("inlineCode",{parentName:"li"},"parted")," app with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo apt install parted")),(0,n.kt)("li",{parentName:"ol"},"Identify new disk(s) with ",(0,n.kt)("inlineCode",{parentName:"li"},"lsblk"),". External drives will show up as ",(0,n.kt)("inlineCode",{parentName:"li"},"sdX"),". Internal drives would show up as the type of device.")),(0,n.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,n.kt)("div",{parentName:"div",className:"admonition-heading"},(0,n.kt)("h5",{parentName:"div"},(0,n.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,n.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,n.kt)("path",{parentName:"svg",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"}))),"info")),(0,n.kt)("div",{parentName:"div",className:"admonition-content"},(0,n.kt)("p",{parentName:"div"},"In the following commands, replace ",(0,n.kt)("inlineCode",{parentName:"p"},"sdx")," with the device name(s) found in the output of the above command. Repeat steps 10-12 for any new drives you have, one at a time."))),(0,n.kt)("ol",{start:6},(0,n.kt)("li",{parentName:"ol"},"Assign your drive the ",(0,n.kt)("inlineCode",{parentName:"li"},"GPT")," partition standard with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo parted /dev/sdx mklabel gpt")),(0,n.kt)("li",{parentName:"ol"},"Partition your drive with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo parted -a opt /dev/sdx mkpart primary ext4 0% 100%")),(0,n.kt)("li",{parentName:"ol"},"Format the newly created partition with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo mkfs.ext4 /dev/sdx1")),(0,n.kt)("li",{parentName:"ol"},"Wait for it to complete. Then restart FxBlox app."),(0,n.kt)("li",{parentName:"ol"},"You should now see that your total maximum storage has increased by the size of the drive you installed. You may also need to hit the refresh button.")),(0,n.kt)("p",null,"If you have any issues, checkout the ",(0,n.kt)("a",{parentName:"p",href:"#troubleshoot"},"Troubleshoot")," section for more information."),(0,n.kt)("h3",{id:"macos-terminal"},"MacOS (Terminal)"),(0,n.kt)("p",null,"Ext4 is a linux standard that MacOS does not support without some third-party help. ",(0,n.kt)("strong",{parentName:"p"},"You will not be able to use the ",(0,n.kt)("inlineCode",{parentName:"strong"},"Disk Utility")," app on Mac, to partition to Ext4"),". We do not need to mount our drive to Mac, we just need to partition and format it. To do so:"),(0,n.kt)("h4",{id:"video-guide-1"},"Video Guide"),(0,n.kt)("center",null,(0,n.kt)(r(),{controls:!0,url:"https://youtu.be/Kmcsxbx4rcY",mdxType:"ReactPlayer"})),(0,n.kt)("h4",{id:"written-guide-1"},"Written Guide"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Start by downloading the ",(0,n.kt)("a",{parentName:"li",href:"https://sourceforge.net/projects/gptfdisk/"},"fdisk command-line tool on sourceforge")),(0,n.kt)("li",{parentName:"ol"},"Install app by double-clicking on the downloaded dpkg file"),(0,n.kt)("li",{parentName:"ol"},"You will not be able to open it, because of Apple security measures. To circumvent them, open ",(0,n.kt)("inlineCode",{parentName:"li"},"Settings")," -> ",(0,n.kt)("inlineCode",{parentName:"li"},"Privacy & Security")," -> ",(0,n.kt)("inlineCode",{parentName:"li"},"Security")),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Allow Anyways")),(0,n.kt)("li",{parentName:"ol"},"Connect drive to Mac, if not already done. Click ",(0,n.kt)("inlineCode",{parentName:"li"},"Allow")," to allow access to drive and now click ",(0,n.kt)("inlineCode",{parentName:"li"},"Ignore")," to keep it discoverable"),(0,n.kt)("li",{parentName:"ol"},"Open up your Terminal app by searching your Applications or search with Spotlight by pressing ",(0,n.kt)("inlineCode",{parentName:"li"},"CMD")," + ",(0,n.kt)("inlineCode",{parentName:"li"},"SPACEBAR"),", then type ",(0,n.kt)("inlineCode",{parentName:"li"},"Terminal")),(0,n.kt)("li",{parentName:"ol"},"Identify disk location with ",(0,n.kt)("inlineCode",{parentName:"li"},"diskutil list"),". You'll want to keep note of the path, it should be something like ",(0,n.kt)("inlineCode",{parentName:"li"},"/dev/disk#")),(0,n.kt)("li",{parentName:"ol"},"Now start command-line utility with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo gdisk"),". ",(0,n.kt)("strong",{parentName:"li"},"See ",(0,n.kt)("a",{parentName:"strong",href:"#example-output"},"Example Output")," and ",(0,n.kt)("a",{parentName:"strong",href:"#troubleshoot"},"Troubleshoot")," for more information"),"."),(0,n.kt)("li",{parentName:"ol"},"Enter device path found in step 7."),(0,n.kt)("li",{parentName:"ol"},"Hit ",(0,n.kt)("inlineCode",{parentName:"li"},"n"),", to create a new GPT partition",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"If partition already exists, press ",(0,n.kt)("inlineCode",{parentName:"li"},"d")," to delete it."),(0,n.kt)("li",{parentName:"ul"},"if multiple partitions exist, checkout ",(0,n.kt)("a",{parentName:"li",href:"#troubleshoot"},"Troubleshoot")," section."))),(0,n.kt)("li",{parentName:"ol"},"Accept the default partition number by just pressing ",(0,n.kt)("inlineCode",{parentName:"li"},"return/Enter"),"."),(0,n.kt)("li",{parentName:"ol"},"Accept the default starting and ending sectors (creates a partition that spans 100% of the drive) by just pressing ",(0,n.kt)("inlineCode",{parentName:"li"},"return/Enter")),(0,n.kt)("li",{parentName:"ol"},"Enter ",(0,n.kt)("inlineCode",{parentName:"li"},"8300")," for the Hex-code/GUID. This is shortform to select the 'Linux Filesystem'"),(0,n.kt)("li",{parentName:"ol"},"Enter ",(0,n.kt)("inlineCode",{parentName:"li"},"w")," to write table to disk and exit tool"),(0,n.kt)("li",{parentName:"ol"},"Hit ",(0,n.kt)("inlineCode",{parentName:"li"},"y")," to proceed, wait for it to complete, and safely eject and reinsert drive.")),(0,n.kt)("h4",{id:"example-output"},"Example Output"),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/gdisk-output.jpg",style:{width:700}})),(0,n.kt)("p",null,"After partitioning is complete. Now we can format using the ",(0,n.kt)("inlineCode",{parentName:"p"},"e2fsprogs")," command."),(0,n.kt)("ol",{start:16},(0,n.kt)("li",{parentName:"ol"},"Download with ",(0,n.kt)("inlineCode",{parentName:"li"},"brew install e2fsprogs"),". This might take a while if Brew is not up-to-date."),(0,n.kt)("li",{parentName:"ol"},"Now verify disk path again with ",(0,n.kt)("inlineCode",{parentName:"li"},"diskutil list"),"."),(0,n.kt)("li",{parentName:"ol"},"Run ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo `brew --prefix e2fsprogs`/sbin/mkfs.ext4 /dev/diskXs1"))),(0,n.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,n.kt)("div",{parentName:"div",className:"admonition-heading"},(0,n.kt)("h5",{parentName:"div"},(0,n.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,n.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,n.kt)("path",{parentName:"svg",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"}))),"replace the ",(0,n.kt)("inlineCode",{parentName:"h5"},"X")," in ",(0,n.kt)("inlineCode",{parentName:"h5"},"/dev/diskXs1")," with the path found in step 18!")),(0,n.kt)("div",{parentName:"div",className:"admonition-content"})),(0,n.kt)("ol",{start:19},(0,n.kt)("li",{parentName:"ol"},"Wait for it to complete and safely eject drive."),(0,n.kt)("li",{parentName:"ol"},"Connect your drive to the FxBlox."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Close FxBlox app"),". Now open your Fxblox app now and see your total maximum storage increase in the FxBlox app. ")),(0,n.kt)("p",null,"If the drive does not show within the next 5 minutes there maybe a variety of issues occurring. ",(0,n.kt)("strong",{parentName:"p"},"Checkout the ",(0,n.kt)("a",{parentName:"strong",href:"#troubleshoot"},"Troubleshooting")," section for more details.")),(0,n.kt)("h3",{id:"windows-free-third-party-app"},"Windows (Free Third-Party App)"),(0,n.kt)("p",null,"Ext4 is a linux standard that Windows does not support without some third-party help. There are various paid and free options out there, but we recommend ",(0,n.kt)("a",{parentName:"p",href:"https://www.easeus.com/partition-manager/epm-free.html"},"Parition Master Free by EaseUS"),"."),(0,n.kt)("h4",{id:"video-guide-2"},"Video Guide"),(0,n.kt)("center",null,(0,n.kt)(r(),{controls:!0,url:"https://youtu.be/lVuTGof1pGI",mdxType:"ReactPlayer"})),(0,n.kt)("h4",{id:"written-guide-2"},"Written Guide"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Install ",(0,n.kt)("a",{parentName:"p",href:"https://www.easeus.com/partition-manager/epm-free.html"},"Parition Master Free by EaseUS")," if not already done")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Plug in storage device to your Windows computer, if not already done")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Open the app. Select ",(0,n.kt)("inlineCode",{parentName:"p"},"Parition Manager")," from the left sidebar"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"It may immediately recognize the drive and push you to use the Parition Wizard. The partition wizard is a paid service, so if you exit out of that window you can continue to use the app normally (as described below)."))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Select the new drive"))),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"blank drive",src:a(7998).Z,width:"766",height:"96"})),(0,n.kt)("ol",{start:5},(0,n.kt)("li",{parentName:"ol"},"Ensure drive partition type is listed as ",(0,n.kt)("inlineCode",{parentName:"li"},"GPT")," instead of ",(0,n.kt)("inlineCode",{parentName:"li"},"MBR"),".",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"If it is ",(0,n.kt)("strong",{parentName:"li"},"not"),", select drive. Then, in right sidebar, select ",(0,n.kt)("inlineCode",{parentName:"li"},"Initialize to GPT")," to add it to task list queue."),(0,n.kt)("li",{parentName:"ul"},"Optionally, execute task.")))),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/init-gpt.png"})),(0,n.kt)("ol",{start:6},(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Select unallocated drive, and on the right sidebar, click ",(0,n.kt)("inlineCode",{parentName:"p"},"Create")),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/r-sidebar.png"}))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Make sure ",(0,n.kt)("inlineCode",{parentName:"p"},"EXT4")," is selected under ",(0,n.kt)("inlineCode",{parentName:"p"},"File system")),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/partition-config-screen.jpeg",style:{width:700}}))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Click ",(0,n.kt)("inlineCode",{parentName:"p"},"OK"))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Click ",(0,n.kt)("inlineCode",{parentName:"p"},"Execute # Task(s)")," at the bottom of the right sidebar of the main window"))),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/queue-2.png"})),(0,n.kt)("ol",{start:10},(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Wait for task(s) to complete, then close app and eject drive")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Connect your drive to the FxBlox")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Close FxBlox app if its currently opened, otherwise open your Fxblox app now and see your total maximum storage increase in the FxBlox app."))),(0,n.kt)("h2",{id:"troubleshoot"},"Troubleshoot"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Drive not recognized in Windows.")," If your windows computer doesn't see the connected drive, try restarting your computer first. Then look into potentially installing drivers for the storage device."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Storage capacity not updating")," This could be for a variety of issues:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Try closing/opening your app a couple of times, but also press the ",(0,n.kt)("inlineCode",{parentName:"li"},"retry")," buttons a once or twice in between."),(0,n.kt)("li",{parentName:"ul"},"Restart the FxBlox by unplug-plugging it back in."),(0,n.kt)("li",{parentName:"ul"},"The usb3 drive is connected to a usb2 port. On a ",(0,n.kt)("strong",{parentName:"li"},"FxBlox Lite"),", the top two ports are USB2.0 and the bottom is USB3.0. On a ",(0,n.kt)("strong",{parentName:"li"},"FxBlox Lite Plus"),", the top port is USB2.0 and the bottom two are USB3.0."))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Additional storage devices not showing up under ",(0,n.kt)("inlineCode",{parentName:"strong"},"Device")," Tab.")," This is a known bug, as of app version 1.6.2. Currently, newly added storage gets added to the total instead of as a separate device."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Parition Exists already (MacOS).")," If a partition exists already, then you will want to delete it first, write to drive, and rerun the command:",(0,n.kt)("ol",{parentName:"li"},(0,n.kt)("li",{parentName:"ol"},"Get to step 9 in the ",(0,n.kt)("em",{parentName:"li"},(0,n.kt)("a",{parentName:"em",href:"#macos-terminal"},"Manually Parition and Format for Mac"))," instructions"),(0,n.kt)("li",{parentName:"ol"},"Hit ",(0,n.kt)("inlineCode",{parentName:"li"},"d"),", to delete partition(s)."),(0,n.kt)("li",{parentName:"ol"},"Hit ",(0,n.kt)("inlineCode",{parentName:"li"},"w"),", confirm by hitting ",(0,n.kt)("inlineCode",{parentName:"li"},"y")," and saving state."),(0,n.kt)("li",{parentName:"ol"},"Continue ",(0,n.kt)("em",{parentName:"li"},(0,n.kt)("a",{parentName:"em",href:"#macos-terminal"},"Manually Parition and Format for Mac"))," instructions, from step 7.")))),(0,n.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,n.kt)("div",{parentName:"div",className:"admonition-heading"},(0,n.kt)("h5",{parentName:"div"},(0,n.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,n.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,n.kt)("path",{parentName:"svg",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"}))),"info")),(0,n.kt)("div",{parentName:"div",className:"admonition-content"},(0,n.kt)("p",{parentName:"div"},(0,n.kt)("strong",{parentName:"p"},"Our apps are open-source and built in React Native for cross-platform support. So if you would like to ",(0,n.kt)("a",{parentName:"strong",href:"https://github.com/functionland/fx-components"},"contribute to the project"),", that would be greatly appreciated!")))))}u.isMDXComponent=!0},7998:(e,t,a)=>{a.d(t,{Z:()=>i});const i="data:image/jpeg;base64,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"}}]); \ No newline at end of file diff --git a/assets/js/1299eea8.f3cc2b87.js b/assets/js/1299eea8.f3cc2b87.js new file mode 100644 index 00000000..fec4590e --- /dev/null +++ b/assets/js/1299eea8.f3cc2b87.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2217],{3399:(e,t,a)=>{a.r(t),a.d(t,{contentTitle:()=>s,default:()=>u,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var i=a(7462),n=(a(7294),a(3905)),o=a(2004),r=a.n(o);const l={title:"Add Storage",id:"add-storage"},s=void 0,d={unversionedId:"functionyard/add-storage",id:"functionyard/add-storage",title:"Add Storage",description:"Compatible Storage Drives",source:"@site/docs/functionyard/add-storage.md",sourceDirName:"functionyard",slug:"/functionyard/add-storage",permalink:"/functionyard/add-storage",tags:[],version:"current",frontMatter:{title:"Add Storage",id:"add-storage"},sidebar:"tutorialSidebar",previous:{title:"FxBlox Lite Plus (RK1)",permalink:"/functionyard/hardware/fxblox-hardware-rk1"},next:{title:"FxBlox App Setup",permalink:"/functionyard/fxblox-app"}},p=[{value:"Compatible Storage Drives",id:"compatible-storage-drives",children:[],level:2},{value:"Install Internal Storage",id:"install-internal-storage",children:[{value:"Install M.2 NVMe drive",id:"install-m2-nvme-drive",children:[],level:3},{value:"Install MicroSD Card",id:"install-microsd-card",children:[],level:3}],level:2},{value:"Install External Storage",id:"install-external-storage",children:[],level:2},{value:"Manually Partition and Format",id:"manually-partition-and-format",children:[{value:"Linux (Terminal) (Recommended)",id:"linux-terminal-recommended",children:[{value:"Video Guide",id:"video-guide",children:[],level:4},{value:"Written Guide",id:"written-guide",children:[],level:4}],level:3},{value:"MacOS (Terminal)",id:"macos-terminal",children:[{value:"Video Guide",id:"video-guide-1",children:[],level:4},{value:"Written Guide",id:"written-guide-1",children:[],level:4},{value:"Example Output",id:"example-output",children:[],level:4}],level:3},{value:"Windows (Free Third-Party App)",id:"windows-free-third-party-app",children:[{value:"Video Guide",id:"video-guide-2",children:[],level:4},{value:"Written Guide",id:"written-guide-2",children:[],level:4}],level:3}],level:2},{value:"Troubleshoot",id:"troubleshoot",children:[],level:2}],m={toc:p};function u(e){let{components:t,...o}=e;return(0,n.kt)("wrapper",(0,i.Z)({},m,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"compatible-storage-drives"},"Compatible Storage Drives"),(0,n.kt)("p",null,"Almost all types of storage mediums are compatible with the FxBlox. The Blox has internal slots for:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("a",{parentName:"li",href:"https://frame.work/marketplace/expansion-cards"},"Framework Storage Expansion Cards")),(0,n.kt)("li",{parentName:"ul"},"MicroSD"),(0,n.kt)("li",{parentName:"ul"},"M.2 NVMe"),(0,n.kt)("li",{parentName:"ul"},"And any internal/external drives via USB-C (or USB-C adaptor)")),(0,n.kt)("p",null,"For the Blox to recognize and use the drive as storage, it must be formatted to ",(0,n.kt)("strong",{parentName:"p"},"ext4"),". This is automatically done for all drives connected to the Blox during the setup. If you want to add more storage after the fact, then you will have to manually partition and format it."),(0,n.kt)("h2",{id:"install-internal-storage"},"Install Internal Storage"),(0,n.kt)("p",null,"To install an NVMe or MicroSD drive, you'll have to open the Blox to gain access to the Single Board Computer (SBC) inside."),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Remove the four black screws of the 3-port USB-C housing."),(0,n.kt)("li",{parentName:"ol"},"Remove the four silver screws on the bottom of the Blox."),(0,n.kt)("li",{parentName:"ol"},"Slowly slide out the SBC."),(0,n.kt)("li",{parentName:"ol"},"Remove light orange cover on the nvme screw mounting point.")),(0,n.kt)("h3",{id:"install-m2-nvme-drive"},"Install M.2 NVMe drive"),(0,n.kt)("p",null,"With nvme drives, there are a lot of options to choose from. Which ever you choose, M.2 NVMe drives are plenty fast enough to maintain a quality speed for reads, writes, and data transfers."),(0,n.kt)("p",null,"To install your first NVMe drive:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Follow ",(0,n.kt)("a",{parentName:"li",href:"#install-internal-storage"},"steps above to open the case.")),(0,n.kt)("li",{parentName:"ol"},"Insert NVMe drive into M.2 slot at an angle. Make sure no pins are showing."),(0,n.kt)("li",{parentName:"ol"},"Hold drive down, while you screw it into place. (Screw not included with FxBlox)"),(0,n.kt)("li",{parentName:"ol"},"Follow steps in reverse order to put the case back together.")),(0,n.kt)("h3",{id:"install-microsd-card"},"Install MicroSD Card"),(0,n.kt)("p",null,"MicroSD cards have comparatively slow read & write speeds. We don't have enough data to recommend them as a method of storage for Fula net, but it should still be possible to run a high-speed, high-capacity card. The port is located under the wifi card. To access it:"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Follow ",(0,n.kt)("a",{parentName:"li",href:"#install-internal-storage"},"steps above to open the case.")),(0,n.kt)("li",{parentName:"ol"},"Wifi card ",(0,n.kt)("strong",{parentName:"li"},"does not")," need to be removed to insert microSD card. Insert microSD card from the side of the board. "),(0,n.kt)("li",{parentName:"ol"},"Follow steps in reverse order to put the case back together.")),(0,n.kt)("h2",{id:"install-external-storage"},"Install External Storage"),(0,n.kt)("p",null,"You can use any type of drive as long as it can be connected via USB-C cable or adapter. Plug it in to any of the three USB-C ports available on the side of the FxBlox. These include, but not limited to:"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},"SATA drives (2.5-inch internal SSDs or 3.5-inch internal HDDs)"),(0,n.kt)("li",{parentName:"ul"},"External SSD's or HDDs"),(0,n.kt)("li",{parentName:"ul"},"External NVMe drives"),(0,n.kt)("li",{parentName:"ul"},"Docking stations"),(0,n.kt)("li",{parentName:"ul"},"Hardware RAID arrays"),(0,n.kt)("li",{parentName:"ul"},"etc...")),(0,n.kt)("h2",{id:"manually-partition-and-format"},"Manually Partition and Format"),(0,n.kt)("p",null,"If you want to add additional storage at some point after initial setup. You will need to manually partition and format the drive before it can be used by the FxBlox."),(0,n.kt)("p",null,"You will need to ",(0,n.kt)("strong",{parentName:"p"},"partition 100%")," of the drive and ",(0,n.kt)("strong",{parentName:"p"},"format to ext4"),". To do this on Mac and Linux, you will want to be comfortable with the command line. Windows will require a third party tool."),(0,n.kt)("h3",{id:"linux-terminal-recommended"},"Linux (Terminal) (Recommended)"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"You do not need a separate Linux computer to do this.")," Although the drive can not be seen in the FxBlox app yet, we can manually format it through the Blox's desktop interface."),(0,n.kt)("p",null,"At this point, your Blox must already have an internet connection, if not please complete the ",(0,n.kt)("a",{parentName:"p",href:"/functionyard/fxblox-app#app-configuration-steps"},"setting up your FxBlox first"),". If completing set is not an option, you can connect an ethernet cable via usb-c. This will allow you to remotely login from another computer with ",(0,n.kt)("inlineCode",{parentName:"p"},"ssh"),". ",(0,n.kt)("a",{parentName:"p",href:"https://fierrolabs.medium.com/how-to-remote-control-your-fxblox-mac-windows-linux-d0771b1565ca"},"Checkout this article"),", made by a community member, for more information on how to do that."),(0,n.kt)("p",null,"Alternatively, you can connect keyboard, video, & mouse. Bottom port is DisplayPort and HDMI compatible on both the CM4 and RK1."),(0,n.kt)("h4",{id:"video-guide"},"Video Guide"),(0,n.kt)("center",null,(0,n.kt)(r(),{controls:!0,url:"https://youtu.be/jAKz-fTesAg",mdxType:"ReactPlayer"})),(0,n.kt)("h4",{id:"written-guide"},"Written Guide"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Connect your drive to the FxBlox"),(0,n.kt)("li",{parentName:"ol"},"Connect to your FxBlox via ",(0,n.kt)("inlineCode",{parentName:"li"},"ssh")," or keyboard, video, & mouse",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"If you have FxBlox Lite (CM4):",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"ssh pi@fulatower"),", password ",(0,n.kt)("inlineCode",{parentName:"li"},"raspberry")))),(0,n.kt)("li",{parentName:"ul"},"If you have FxBlox Lite Plus (RK1):",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"ssh pi@fxblox-rk1"),", password ",(0,n.kt)("inlineCode",{parentName:"li"},"fxblox")))),(0,n.kt)("li",{parentName:"ul"},"When connecting directly, open up Terminal app with ",(0,n.kt)("inlineCode",{parentName:"li"},"Ctrl + Alt + T")))),(0,n.kt)("li",{parentName:"ol"},"Update current packages with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo apt update && sudo apt upgrade"),". Enter your password.\n:::If it asks to choose between files\nIf it asks to choose (y/n) between two file versions, enter ",(0,n.kt)("inlineCode",{parentName:"li"},"n"),".\n:::"),(0,n.kt)("li",{parentName:"ol"},"Download ",(0,n.kt)("inlineCode",{parentName:"li"},"parted")," app with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo apt install parted")),(0,n.kt)("li",{parentName:"ol"},"Identify new disk(s) with ",(0,n.kt)("inlineCode",{parentName:"li"},"lsblk"),". External drives will show up as ",(0,n.kt)("inlineCode",{parentName:"li"},"sdX"),". Internal drives would show up as the type of device.")),(0,n.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,n.kt)("div",{parentName:"div",className:"admonition-heading"},(0,n.kt)("h5",{parentName:"div"},(0,n.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,n.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,n.kt)("path",{parentName:"svg",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"}))),"info")),(0,n.kt)("div",{parentName:"div",className:"admonition-content"},(0,n.kt)("p",{parentName:"div"},"In the following commands, replace ",(0,n.kt)("inlineCode",{parentName:"p"},"sdx")," with the device name(s) found in the output of the above command. Repeat steps 10-12 for any new drives you have, one at a time."))),(0,n.kt)("ol",{start:6},(0,n.kt)("li",{parentName:"ol"},"Assign your drive the ",(0,n.kt)("inlineCode",{parentName:"li"},"GPT")," partition standard with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo parted /dev/sdx mklabel gpt")),(0,n.kt)("li",{parentName:"ol"},"Partition your drive with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo parted -a opt /dev/sdx mkpart primary ext4 0% 100%")),(0,n.kt)("li",{parentName:"ol"},"Format the newly created partition with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo mkfs.ext4 /dev/sdx1")),(0,n.kt)("li",{parentName:"ol"},"Wait for it to complete. Then restart FxBlox app."),(0,n.kt)("li",{parentName:"ol"},"You should now see that your total maximum storage has increased by the size of the drive you installed. You may also need to hit the refresh button.")),(0,n.kt)("p",null,"If you have any issues, checkout the ",(0,n.kt)("a",{parentName:"p",href:"#troubleshoot"},"Troubleshoot")," section for more information."),(0,n.kt)("h3",{id:"macos-terminal"},"MacOS (Terminal)"),(0,n.kt)("p",null,"Ext4 is a linux standard that MacOS does not support without some third-party help. ",(0,n.kt)("strong",{parentName:"p"},"You will not be able to use the ",(0,n.kt)("inlineCode",{parentName:"strong"},"Disk Utility")," app on Mac, to partition to Ext4"),". We do not need to mount our drive to Mac, we just need to partition and format it. To do so:"),(0,n.kt)("h4",{id:"video-guide-1"},"Video Guide"),(0,n.kt)("center",null,(0,n.kt)(r(),{controls:!0,url:"https://youtu.be/Kmcsxbx4rcY",mdxType:"ReactPlayer"})),(0,n.kt)("h4",{id:"written-guide-1"},"Written Guide"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},"Start by downloading the ",(0,n.kt)("a",{parentName:"li",href:"https://sourceforge.net/projects/gptfdisk/"},"fdisk command-line tool on sourceforge")),(0,n.kt)("li",{parentName:"ol"},"Install app by double-clicking on the downloaded dpkg file"),(0,n.kt)("li",{parentName:"ol"},"You will not be able to open it, because of Apple security measures. To circumvent them, open ",(0,n.kt)("inlineCode",{parentName:"li"},"Settings")," -> ",(0,n.kt)("inlineCode",{parentName:"li"},"Privacy & Security")," -> ",(0,n.kt)("inlineCode",{parentName:"li"},"Security")),(0,n.kt)("li",{parentName:"ol"},"Click on ",(0,n.kt)("inlineCode",{parentName:"li"},"Allow Anyways")),(0,n.kt)("li",{parentName:"ol"},"Connect drive to Mac, if not already done. Click ",(0,n.kt)("inlineCode",{parentName:"li"},"Allow")," to allow access to drive and now click ",(0,n.kt)("inlineCode",{parentName:"li"},"Ignore")," to keep it discoverable"),(0,n.kt)("li",{parentName:"ol"},"Open up your Terminal app by searching your Applications or search with Spotlight by pressing ",(0,n.kt)("inlineCode",{parentName:"li"},"CMD")," + ",(0,n.kt)("inlineCode",{parentName:"li"},"SPACEBAR"),", then type ",(0,n.kt)("inlineCode",{parentName:"li"},"Terminal")),(0,n.kt)("li",{parentName:"ol"},"Identify disk location with ",(0,n.kt)("inlineCode",{parentName:"li"},"diskutil list"),". You'll want to keep note of the path, it should be something like ",(0,n.kt)("inlineCode",{parentName:"li"},"/dev/disk#")),(0,n.kt)("li",{parentName:"ol"},"Now start command-line utility with ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo gdisk"),". ",(0,n.kt)("strong",{parentName:"li"},"See ",(0,n.kt)("a",{parentName:"strong",href:"#example-output"},"Example Output")," and ",(0,n.kt)("a",{parentName:"strong",href:"#troubleshoot"},"Troubleshoot")," for more information"),"."),(0,n.kt)("li",{parentName:"ol"},"Enter device path found in step 7."),(0,n.kt)("li",{parentName:"ol"},"Hit ",(0,n.kt)("inlineCode",{parentName:"li"},"n"),", to create a new GPT partition",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"If partition already exists, press ",(0,n.kt)("inlineCode",{parentName:"li"},"d")," to delete it."),(0,n.kt)("li",{parentName:"ul"},"if multiple partitions exist, checkout ",(0,n.kt)("a",{parentName:"li",href:"#troubleshoot"},"Troubleshoot")," section."))),(0,n.kt)("li",{parentName:"ol"},"Accept the default partition number by just pressing ",(0,n.kt)("inlineCode",{parentName:"li"},"return/Enter"),"."),(0,n.kt)("li",{parentName:"ol"},"Accept the default starting and ending sectors (creates a partition that spans 100% of the drive) by just pressing ",(0,n.kt)("inlineCode",{parentName:"li"},"return/Enter")),(0,n.kt)("li",{parentName:"ol"},"Enter ",(0,n.kt)("inlineCode",{parentName:"li"},"8300")," for the Hex-code/GUID. This is short form to select the 'Linux Filesystem'"),(0,n.kt)("li",{parentName:"ol"},"Enter ",(0,n.kt)("inlineCode",{parentName:"li"},"w")," to write table to disk and exit tool"),(0,n.kt)("li",{parentName:"ol"},"Hit ",(0,n.kt)("inlineCode",{parentName:"li"},"y")," to proceed, wait for it to complete, and safely eject and reinsert drive.")),(0,n.kt)("h4",{id:"example-output"},"Example Output"),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/gdisk-output.jpg",style:{width:700}})),(0,n.kt)("p",null,"After partitioning is complete. Now we can format using the ",(0,n.kt)("inlineCode",{parentName:"p"},"e2fsprogs")," command."),(0,n.kt)("ol",{start:16},(0,n.kt)("li",{parentName:"ol"},"Download with ",(0,n.kt)("inlineCode",{parentName:"li"},"brew install e2fsprogs"),". This might take a while if Brew is not up-to-date."),(0,n.kt)("li",{parentName:"ol"},"Now verify disk path again with ",(0,n.kt)("inlineCode",{parentName:"li"},"diskutil list"),"."),(0,n.kt)("li",{parentName:"ol"},"Run ",(0,n.kt)("inlineCode",{parentName:"li"},"sudo `brew --prefix e2fsprogs`/sbin/mkfs.ext4 /dev/diskXs1"))),(0,n.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,n.kt)("div",{parentName:"div",className:"admonition-heading"},(0,n.kt)("h5",{parentName:"div"},(0,n.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,n.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,n.kt)("path",{parentName:"svg",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"}))),"replace the ",(0,n.kt)("inlineCode",{parentName:"h5"},"X")," in ",(0,n.kt)("inlineCode",{parentName:"h5"},"/dev/diskXs1")," with the path found in step 18!")),(0,n.kt)("div",{parentName:"div",className:"admonition-content"})),(0,n.kt)("ol",{start:19},(0,n.kt)("li",{parentName:"ol"},"Wait for it to complete and safely eject drive."),(0,n.kt)("li",{parentName:"ol"},"Connect your drive to the FxBlox."),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("strong",{parentName:"li"},"Close FxBlox app"),". Now open your Fxblox app now and see your total maximum storage increase in the FxBlox app. ")),(0,n.kt)("p",null,"If the drive does not show within the next 5 minutes there maybe a variety of issues occurring. ",(0,n.kt)("strong",{parentName:"p"},"Checkout the ",(0,n.kt)("a",{parentName:"strong",href:"#troubleshoot"},"Troubleshooting")," section for more details.")),(0,n.kt)("h3",{id:"windows-free-third-party-app"},"Windows (Free Third-Party App)"),(0,n.kt)("p",null,"Ext4 is a linux standard that Windows does not support without some third-party help. There are various paid and free options out there, but we recommend ",(0,n.kt)("a",{parentName:"p",href:"https://www.easeus.com/partition-manager/epm-free.html"},"Parition Master Free by EaseUS"),"."),(0,n.kt)("h4",{id:"video-guide-2"},"Video Guide"),(0,n.kt)("center",null,(0,n.kt)(r(),{controls:!0,url:"https://youtu.be/lVuTGof1pGI",mdxType:"ReactPlayer"})),(0,n.kt)("h4",{id:"written-guide-2"},"Written Guide"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Install ",(0,n.kt)("a",{parentName:"p",href:"https://www.easeus.com/partition-manager/epm-free.html"},"Partition Master Free by EaseUS")," if not already done")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Plug in storage device to your Windows computer, if not already done")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Open the app. Select ",(0,n.kt)("inlineCode",{parentName:"p"},"Partition Manager")," from the left sidebar"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"It may immediately recognize the drive and push you to use the Partition Wizard. The partition wizard is a paid service, so if you exit out of that window you can continue to use the app normally (as described below)."))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Select the new drive"))),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"blank drive",src:a(7998).Z,width:"766",height:"96"})),(0,n.kt)("ol",{start:5},(0,n.kt)("li",{parentName:"ol"},"Ensure drive partition type is listed as ",(0,n.kt)("inlineCode",{parentName:"li"},"GPT")," instead of ",(0,n.kt)("inlineCode",{parentName:"li"},"MBR"),".",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"If it is ",(0,n.kt)("strong",{parentName:"li"},"not"),", select drive. Then, in right sidebar, select ",(0,n.kt)("inlineCode",{parentName:"li"},"Initialize to GPT")," to add it to task list queue."),(0,n.kt)("li",{parentName:"ul"},"Optionally, execute task.")))),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/init-gpt.png"})),(0,n.kt)("ol",{start:6},(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Select unallocated drive, and on the right sidebar, click ",(0,n.kt)("inlineCode",{parentName:"p"},"Create")),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/r-sidebar.png"}))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Make sure ",(0,n.kt)("inlineCode",{parentName:"p"},"EXT4")," is selected under ",(0,n.kt)("inlineCode",{parentName:"p"},"File system")),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/partition-config-screen.jpeg",style:{width:700}}))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Click ",(0,n.kt)("inlineCode",{parentName:"p"},"OK"))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Click ",(0,n.kt)("inlineCode",{parentName:"p"},"Execute # Task(s)")," at the bottom of the right sidebar of the main window"))),(0,n.kt)("div",{class:"text--center"},(0,n.kt)("img",{src:"/img/fxyard-network/queue-2.png"})),(0,n.kt)("ol",{start:10},(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Wait for task(s) to complete, then close app and eject drive")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Connect your drive to the FxBlox")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},"Close FxBlox app if its currently opened, otherwise open your Fxblox app now and see your total maximum storage increase in the FxBlox app."))),(0,n.kt)("h2",{id:"troubleshoot"},"Troubleshoot"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Drive not recognized in Windows.")," If your windows computer doesn't see the connected drive, try restarting your computer first. Then look into potentially installing drivers for the storage device."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Storage capacity not updating")," This could be for a variety of issues:",(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Try closing/opening your app a couple of times, but also press the ",(0,n.kt)("inlineCode",{parentName:"li"},"retry")," buttons a once or twice in between."),(0,n.kt)("li",{parentName:"ul"},"Restart the FxBlox by unplug-plugging it back in."),(0,n.kt)("li",{parentName:"ul"},"The usb3 drive is connected to a usb2 port. On a ",(0,n.kt)("strong",{parentName:"li"},"FxBlox Lite"),", the top two ports are USB2.0 and the bottom is USB3.0. On a ",(0,n.kt)("strong",{parentName:"li"},"FxBlox Lite Plus"),", the top port is USB2.0 and the bottom two are USB3.0."))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Additional storage devices not showing up under ",(0,n.kt)("inlineCode",{parentName:"strong"},"Device")," Tab.")," This is a known bug, as of app version 1.6.2. Currently, newly added storage gets added to the total instead of as a separate device."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Partition Exists already (MacOS).")," If a partition exists already, then you will want to delete it first, write to drive, and rerun the command:",(0,n.kt)("ol",{parentName:"li"},(0,n.kt)("li",{parentName:"ol"},"Get to step 9 in the ",(0,n.kt)("em",{parentName:"li"},(0,n.kt)("a",{parentName:"em",href:"#macos-terminal"},"Manually Partition and Format for Mac"))," instructions"),(0,n.kt)("li",{parentName:"ol"},"Hit ",(0,n.kt)("inlineCode",{parentName:"li"},"d"),", to delete partition(s)."),(0,n.kt)("li",{parentName:"ol"},"Hit ",(0,n.kt)("inlineCode",{parentName:"li"},"w"),", confirm by hitting ",(0,n.kt)("inlineCode",{parentName:"li"},"y")," and saving state."),(0,n.kt)("li",{parentName:"ol"},"Continue ",(0,n.kt)("em",{parentName:"li"},(0,n.kt)("a",{parentName:"em",href:"#macos-terminal"},"Manually Partition and Format for Mac"))," instructions, from step 7.")))),(0,n.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,n.kt)("div",{parentName:"div",className:"admonition-heading"},(0,n.kt)("h5",{parentName:"div"},(0,n.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,n.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,n.kt)("path",{parentName:"svg",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"}))),"info")),(0,n.kt)("div",{parentName:"div",className:"admonition-content"},(0,n.kt)("p",{parentName:"div"},(0,n.kt)("strong",{parentName:"p"},"Our apps are open-source and built in React Native for cross-platform support. So if you would like to ",(0,n.kt)("a",{parentName:"strong",href:"https://github.com/functionland/fx-components"},"contribute to the project"),", that would be greatly appreciated!")))))}u.isMDXComponent=!0},7998:(e,t,a)=>{a.d(t,{Z:()=>i});const i="data:image/jpeg;base64,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"}}]); \ No newline at end of file diff --git a/assets/js/1c5b444a.5e065227.js b/assets/js/1c5b444a.5e065227.js new file mode 100644 index 00000000..2ccd4cd3 --- /dev/null +++ b/assets/js/1c5b444a.5e065227.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3693],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(a),h=r,c=u["".concat(s,".").concat(h)]||u[h]||m[h]||i;return a?n.createElement(c,o(o({ref:t},d),{},{components:a})):n.createElement(c,o({ref:t},d))}));function h(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var p=2;p{a.r(t),a.d(t,{contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var n=a(7462),r=(a(7294),a(3905));const i={title:"FxBlox Lite (CM4)",id:"fxblox-hardware-rpi"},o=void 0,l={unversionedId:"functionyard/hardware/fxblox-hardware-rpi",id:"functionyard/hardware/fxblox-hardware-rpi",title:"FxBlox Lite (CM4)",description:"Updating Your FxBlox Lite (RPI)",source:"@site/docs/functionyard/hardware/fxblox-hardware-rpi.md",sourceDirName:"functionyard/hardware",slug:"/functionyard/hardware/fxblox-hardware-rpi",permalink:"/functionyard/hardware/fxblox-hardware-rpi",tags:[],version:"current",frontMatter:{title:"FxBlox Lite (CM4)",id:"fxblox-hardware-rpi"},sidebar:"tutorialSidebar",previous:{title:"FxBlox Hardware",permalink:"/functionyard/hardware/fxblox-hardware"},next:{title:"FxBlox Lite Plus (RK1)",permalink:"/functionyard/hardware/fxblox-hardware-rk1"}},s=[{value:"Updating Your FxBlox Lite (RPI)",id:"updating-your-fxblox-lite-rpi",children:[{value:"Step 1: Download the firmware",id:"step-1-download-the-firmware",children:[],level:3},{value:"Step 2: Unzip and Write image to USB",id:"step-2-unzip-and-write-image-to-usb",children:[],level:3},{value:"Step 3: Updating FxBlox",id:"step-3-updating-fxblox",children:[],level:3},{value:"Step 4: Post-Update",id:"step-4-post-update",children:[],level:3}],level:2},{value:"First Time Setup",id:"first-time-setup",children:[{value:"Troubleshoot",id:"troubleshoot",children:[],level:3}],level:2}],p={toc:s};function d(e){let{components:t,...i}=e;return(0,r.kt)("wrapper",(0,n.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"updating-your-fxblox-lite-rpi"},"Updating Your FxBlox Lite (RPI)"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",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"}))),"warning")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"If you were helping test nightly firmware releases ",(0,r.kt)("strong",{parentName:"p"},"before")," official testnet launch, you will be required to format drive to clear out old/incompatible chain data. ",(0,r.kt)("strong",{parentName:"p"},"See more ",(0,r.kt)("a",{parentName:"strong",href:"/functionyard/fxblox-app/#format-drive"},"details here."))))),(0,r.kt)("h3",{id:"step-1-download-the-firmware"},"Step 1: Download the firmware"),(0,r.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",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"}))),"info")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"If this is your very first time setting up your FxBlox Lite, see these ",(0,r.kt)("a",{parentName:"p",href:"#first-time-setup"},"instructions first")))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Download"),": Find ",(0,r.kt)("inlineCode",{parentName:"p"},"rpi_update.zip")," in the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/functionland/rk1-image/releases/latest"},"latest release")," under the Assets section on GitHub.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"Download: Download ",(0,r.kt)("inlineCode",{parentName:"p"},"Win32 Disk Imager")," for writing update firmware to USB.\n",(0,r.kt)("a",{parentName:"p",href:"https://win32diskimager.org/"},"https://win32diskimager.org/"),"\n"))),(0,r.kt)("h3",{id:"step-2-unzip-and-write-image-to-usb"},"Step 2: Unzip and Write image to USB"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Unzipping"),": Unzip ",(0,r.kt)("inlineCode",{parentName:"p"},"rpi_update.zip")," on your computer. After unzipping there must be a .img file.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Writing Image to USB"),": "),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"In Image File section select ",(0,r.kt)("inlineCode",{parentName:"li"},"rpi_update.img")," file."),(0,r.kt)("li",{parentName:"ul"},"In Device section select USB Disk Partion letter."),(0,r.kt)("li",{parentName:"ul"},"Click Write to start flashing USB Disk.")),(0,r.kt)("p",{parentName:"li"},(0,r.kt)("img",{alt:"Win32 Disk Imager",src:a(4558).Z,width:"501",height:"353"})))),(0,r.kt)("h3",{id:"step-3-updating-fxblox"},"Step 3: Updating FxBlox"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("strong",{parentName:"li"},"Turn Off"),": Ensure your FxBlox (RPI) Lite is turned off."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("strong",{parentName:"li"},"USB Connection"),": Connect the USB drive to the BOTTOM USB port of the FxBlox Lite (RPI)."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("strong",{parentName:"li"},"Power On"),": Turn on your FxBlox Lite (RPI). After about 30 sec, the LED will blink yellow 5 times that indicating the update process started.",(0,r.kt)("div",{parentName:"li",className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",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"}))),"warning")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"In update process the LED blinks red and green. This phase is very critical, and any mistake in this phase cause breaking FxBlox Lite (RPI). ")))),(0,r.kt)("li",{parentName:"ol"},"After about 10 minutes, the LED blinks red only. Remove the USB drive."),(0,r.kt)("li",{parentName:"ol"},"Restart the FxBlox Lite (RPI) by unplugging and plugging back the power (Make sure an external storage, without the img files, is plugged to the bottom port of blox before powering it back on or the sequence of lighting you would see might defer from this documentation). The best partitioning format for storage devices is ",(0,r.kt)("inlineCode",{parentName:"li"},"ext4")," but ",(0,r.kt)("inlineCode",{parentName:"li"},"vfat")," is also acceptable.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Note")," If the blox stays in blue/white color, or does not connect to wifi and neither shows FxBlox hotspot or you rebooted during hte update and think it is broken, you need to do a full re-image by following the ",(0,r.kt)("a",{parentName:"p",href:"/functionyard/hardware/fxblox-hardware-rpi-reimage"},"instructions here"),"."),(0,r.kt)("h3",{id:"step-4-post-update"},"Step 4: Post-Update"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Be patient on the first boot, post-update!")," The FxBlox automatically reboots 3 times, and will go through a series of lights. This ",(0,r.kt)("strong",{parentName:"p"},"full process")," should take about ",(0,r.kt)("strong",{parentName:"p"},"30 minutes")," to fully process the update and show the ",(0,r.kt)("inlineCode",{parentName:"p"},"FxBlox")," WiFi."),(0,r.kt)("p",null,"Please wait for ",(0,r.kt)("inlineCode",{parentName:"p"},"10-30 minutes")," before doing anything. You may think it is done or stuck or it is turned off, but be sure that it is processing the update for ",(0,r.kt)("inlineCode",{parentName:"p"},"10-30 minutes")," after the first boot. At the end of process the LED starts blinking light blue (cyan) consistently if an external storage is plugged to the blox. If no external storage is plugged, then you cannot see this sequence."),(0,r.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",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"}))),"info")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("strong",{parentName:"p"},"Future firmware updates will be automatic, eliminating the need for manual updates.")))),(0,r.kt)("h2",{id:"first-time-setup"},"First Time Setup"),(0,r.kt)("p",null,'If this is your very first time setting up your FxBlox Lite (RPI), you will not be able to install the latest usb update. The reason for that is because "updating via usb" feature was not added in until a later firmware version. '),(0,r.kt)("p",null,"To automatically get that version, you need to connect the Blox to the wifi first. You can do so by following these steps:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Download the latest iOS/Android app."),(0,r.kt)("li",{parentName:"ol"},"Follow prompts to create password and connect Metamask."),(0,r.kt)("li",{parentName:"ol"},'On the authorize blox screen wait for 15 seconds and a "skip" button appears in the bottom left. click that to skip the authorization and then click yes to confirm. ',(0,r.kt)("a",{parentName:"li",href:"#troubleshoot"},(0,r.kt)("strong",{parentName:"a"}," * "))),(0,r.kt)("li",{parentName:"ol"},"Connect Blox to wifi. ",(0,r.kt)("a",{parentName:"li",href:"#troubleshoot"},(0,r.kt)("strong",{parentName:"a"}," * "))),(0,r.kt)("li",{parentName:"ol"},"Now, wait 24 hours for the update to install. ",(0,r.kt)("a",{parentName:"li",href:"#troubleshoot"},(0,r.kt)("strong",{parentName:"a"}," * "))),(0,r.kt)("li",{parentName:"ol"},"With new version installed, you can proceed with the ",(0,r.kt)("a",{parentName:"li",href:"#step-1-download-the-firmware"},"normal upgrading process."))),(0,r.kt)("h3",{id:"troubleshoot"},"Troubleshoot"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"You may need to wait somewhere between 20-30 seconds for the button to appear."),(0,r.kt)("li",{parentName:"ul"},"You may not get a ",(0,r.kt)("inlineCode",{parentName:"li"},"setup complete")," message after connecting to wifi, because you don't have the latest firmware version. Check your router settings to see if it connected properly."),(0,r.kt)("li",{parentName:"ul"},"We recommend waiting 24 hours, because there are no indicators for when it is completed."),(0,r.kt)("li",{parentName:"ul"},"If the blox stays in blue/white color for a long time after reboot, or does not connect to wifi and neither shows FxBlox hotspot or you rebooted during hte update and think it is broken, you need to do a full re-image by following the ",(0,r.kt)("a",{parentName:"li",href:"/functionyard/hardware/fxblox-hardware-rpi-reimage"},"instructions here"))))}d.isMDXComponent=!0},4558:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/win32DiskImager-470a740c8f557a1dd4e6e0d0ced281eb.png"}}]); \ No newline at end of file diff --git a/assets/js/1c5b444a.9d2c2d74.js b/assets/js/1c5b444a.9d2c2d74.js deleted file mode 100644 index 50d761b5..00000000 --- a/assets/js/1c5b444a.9d2c2d74.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3693],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var n=a(7294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(i[a]=e[a]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(i[a]=e[a])}return i}var s=n.createContext({}),p=function(e){var t=n.useContext(s),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var a=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(a),c=i,h=u["".concat(s,".").concat(c)]||u[c]||m[c]||r;return a?n.createElement(h,o(o({ref:t},d),{},{components:a})):n.createElement(h,o({ref:t},d))}));function c(e,t){var a=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=a.length,o=new Array(r);o[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var p=2;p{a.r(t),a.d(t,{contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>l,toc:()=>s});var n=a(7462),i=(a(7294),a(3905));const r={title:"FxBlox Lite (CM4)",id:"fxblox-hardware-rpi"},o=void 0,l={unversionedId:"functionyard/hardware/fxblox-hardware-rpi",id:"functionyard/hardware/fxblox-hardware-rpi",title:"FxBlox Lite (CM4)",description:"Updating Your FxBlox Lite (RPI)",source:"@site/docs/functionyard/hardware/fxblox-hardware-rpi.md",sourceDirName:"functionyard/hardware",slug:"/functionyard/hardware/fxblox-hardware-rpi",permalink:"/functionyard/hardware/fxblox-hardware-rpi",tags:[],version:"current",frontMatter:{title:"FxBlox Lite (CM4)",id:"fxblox-hardware-rpi"},sidebar:"tutorialSidebar",previous:{title:"FxBlox Hardware",permalink:"/functionyard/hardware/fxblox-hardware"},next:{title:"FxBlox Lite Plus (RK1)",permalink:"/functionyard/hardware/fxblox-hardware-rk1"}},s=[{value:"Updating Your FxBlox Lite (RPI)",id:"updating-your-fxblox-lite-rpi",children:[{value:"Step 1: Download the firmware",id:"step-1-download-the-firmware",children:[],level:3},{value:"Step 2: Unzip and Write image to USB",id:"step-2-unzip-and-write-image-to-usb",children:[],level:3},{value:"Step 3: Updating FxBlox",id:"step-3-updating-fxblox",children:[],level:3},{value:"Step 4: Post-Update",id:"step-4-post-update",children:[],level:3}],level:2},{value:"First Time Setup",id:"first-time-setup",children:[{value:"Troubleshoot",id:"troubleshoot",children:[],level:3}],level:2}],p={toc:s};function d(e){let{components:t,...r}=e;return(0,i.kt)("wrapper",(0,n.Z)({},p,r,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"updating-your-fxblox-lite-rpi"},"Updating Your FxBlox Lite (RPI)"),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",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"}))),"warning")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"If you were helping test nightly firmware releases ",(0,i.kt)("strong",{parentName:"p"},"before")," official testnet launch, you will be required to format drive to clear out old/incompatible chain data. ",(0,i.kt)("strong",{parentName:"p"},"See more ",(0,i.kt)("a",{parentName:"strong",href:"/functionyard/fxblox-app/#format-drive"},"details here."))))),(0,i.kt)("h3",{id:"step-1-download-the-firmware"},"Step 1: Download the firmware"),(0,i.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",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"}))),"info")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"If this is your very first time setting up your FxBlox Lite, see these ",(0,i.kt)("a",{parentName:"p",href:"#first-time-setup"},"instructions first")))),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Download"),": Find ",(0,i.kt)("inlineCode",{parentName:"p"},"rpi_update.zip")," in the ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/functionland/rk1-image/releases/latest"},"latest release")," under the Assets section on GitHub.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"Download: Download ",(0,i.kt)("inlineCode",{parentName:"p"},"Win32 Disk Imager")," for writing update firmware to USB.\n",(0,i.kt)("a",{parentName:"p",href:"https://win32diskimager.org/"},"https://win32diskimager.org/"),"\n"))),(0,i.kt)("h3",{id:"step-2-unzip-and-write-image-to-usb"},"Step 2: Unzip and Write image to USB"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Unzipping"),": Unzip ",(0,i.kt)("inlineCode",{parentName:"p"},"rpi_update.zip")," on your computer. After unzipping there must be a .img file.")),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("strong",{parentName:"p"},"Writing Image to USB"),": "),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},"In Image File section select ",(0,i.kt)("inlineCode",{parentName:"li"},"rpi_update.img")," file."),(0,i.kt)("li",{parentName:"ul"},"In Device section select USB Disk Partion letter."),(0,i.kt)("li",{parentName:"ul"},"Click Write to start flashing USB Disk.")),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("img",{alt:"Win32 Disk Imager",src:a(4558).Z,width:"501",height:"353"})))),(0,i.kt)("h3",{id:"step-3-updating-fxblox"},"Step 3: Updating FxBlox"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Turn Off"),": Ensure your FxBlox (RPI) Lite is turned off."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"USB Connection"),": Connect the USB drive to the BOTTOM USB port of the FxBlox Lite (RPI)."),(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Power On"),": Turn on your FxBlox Lite (RPI). After about 30 sec, the LED will blink yellow 5 times that indicating the update process started.",(0,i.kt)("div",{parentName:"li",className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",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"}))),"warning")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"In update process the LED blinks red and green. This phase is very critical, and any mistake in this phase cause breaking FxBlox Lite (RPI). ")))),(0,i.kt)("li",{parentName:"ol"},"After about 10 minutes, the LED blinks red only. Remove the USB drive."),(0,i.kt)("li",{parentName:"ol"},"Restart the FxBlox Lite (RPI) by unplugging and plugging back the power (Make sure an external storage, without the img files, is plugged to the bottom port of blox before powering it back on or the sequence of lighting you would see might defer from this documentation). The best partitioning format for storage devices is ",(0,i.kt)("inlineCode",{parentName:"li"},"ext4")," but ",(0,i.kt)("inlineCode",{parentName:"li"},"vfat")," is also acceptable.")),(0,i.kt)("h3",{id:"step-4-post-update"},"Step 4: Post-Update"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Be patient on the first boot, post-update!")," The FxBlox automatically reboots 3 times, and will go through a series of lights. This ",(0,i.kt)("strong",{parentName:"p"},"full process")," should take about ",(0,i.kt)("strong",{parentName:"p"},"30 minutes")," to fully process the update and show the ",(0,i.kt)("inlineCode",{parentName:"p"},"FxBlox")," WiFi."),(0,i.kt)("p",null,"Please wait for ",(0,i.kt)("inlineCode",{parentName:"p"},"10-30 minutes")," before doing anything. You may think it is done or stuck or it is turned off, but be sure that it is processing the update for ",(0,i.kt)("inlineCode",{parentName:"p"},"10-30 minutes")," after the frist boot. At the end of process the LED starts blinking light blue (cyan) consistently if an external storage is plugged to the blox. If no external storage is plugged, then you cannot see this sequence."),(0,i.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",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"}))),"info")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("strong",{parentName:"p"},"Future firmware updates will be automatic, eliminating the need for manual updates.")))),(0,i.kt)("h2",{id:"first-time-setup"},"First Time Setup"),(0,i.kt)("p",null,'If this is your very first time setting up your FxBlox Lite (RPI), you will not be able to install the latest usb update. The reason for that is because "updating via usb" feature was not added in until a later firmware version. '),(0,i.kt)("p",null,"To automatically get that version, you need to connect the Blox to the wifi first. You can do so by following these steps:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Download the latest iOS/Android app."),(0,i.kt)("li",{parentName:"ol"},"Follow prompts to create password and connect Metamask."),(0,i.kt)("li",{parentName:"ol"},'On the authorize blox screen wait for 15 seconds and a "skip" button apperas. click that to skip the authorization and then click yes to confirm. ',(0,i.kt)("a",{parentName:"li",href:"#troubleshoot"},(0,i.kt)("strong",{parentName:"a"}," * "))),(0,i.kt)("li",{parentName:"ol"},"Connect Blox to wifi. ",(0,i.kt)("a",{parentName:"li",href:"#troubleshoot"},(0,i.kt)("strong",{parentName:"a"}," * "))),(0,i.kt)("li",{parentName:"ol"},"Now, wait 24 hours for the update to install. ",(0,i.kt)("a",{parentName:"li",href:"#troubleshoot"},(0,i.kt)("strong",{parentName:"a"}," * "))),(0,i.kt)("li",{parentName:"ol"},"With new version installed, you can proceed with the ",(0,i.kt)("a",{parentName:"li",href:"#step-1-download-the-firmware"},"normal upgrading process."))),(0,i.kt)("h3",{id:"troubleshoot"},"Troubleshoot"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"You may need to wait somewhere between 20-30 seconds for the button to appear."),(0,i.kt)("li",{parentName:"ul"},"You may not get a ",(0,i.kt)("inlineCode",{parentName:"li"},"setup complete")," message afer connecting to wifi, because you don't have the latest firmware version. Check your router settings to see if it connected properly."),(0,i.kt)("li",{parentName:"ul"},"We recommend waiting 24 hours, because there are no indicators for when it is completed.")))}d.isMDXComponent=!0},4558:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/win32DiskImager-470a740c8f557a1dd4e6e0d0ced281eb.png"}}]); \ No newline at end of file diff --git a/assets/js/799a1b22.1adce6f6.js b/assets/js/799a1b22.adc1476a.js similarity index 88% rename from assets/js/799a1b22.1adce6f6.js rename to assets/js/799a1b22.adc1476a.js index f1e0affa..42ee8e2a 100644 --- a/assets/js/799a1b22.1adce6f6.js +++ b/assets/js/799a1b22.adc1476a.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7878],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>u});var a=n(7294);function o(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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=s(n),u=o,h=c["".concat(p,".").concat(u)]||c[u]||m[u]||i;return n?a.createElement(h,r(r({ref:t},d),{},{components:n})):a.createElement(h,r({ref:t},d))}));function u(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:o,r[1]=l;for(var s=2;s{n.r(t),n.d(t,{contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var a=n(7462),o=(n(7294),n(3905));const i={title:"FxBlox App Setup",id:"fxblox-app"},r=void 0,l={unversionedId:"functionyard/fxblox-app",id:"functionyard/fxblox-app",title:"FxBlox App Setup",description:"Installing the FxBlox App",source:"@site/docs/functionyard/fxblox-app.md",sourceDirName:"functionyard",slug:"/functionyard/fxblox-app",permalink:"/functionyard/fxblox-app",tags:[],version:"current",frontMatter:{title:"FxBlox App Setup",id:"fxblox-app"},sidebar:"tutorialSidebar",previous:{title:"Add Storage",permalink:"/functionyard/add-storage"},next:{title:"Joining Testnet",permalink:"/functionyard/join"}},p=[{value:"Installing the FxBlox App",id:"installing-the-fxblox-app",children:[{value:"Initial Setup",id:"initial-setup",children:[],level:3},{value:"App Configuration Steps",id:"app-configuration-steps",children:[],level:3},{value:"Troubleshoot",id:"troubleshoot",children:[],level:3}],level:2},{value:"Add Multiple FxBloxes",id:"add-multiple-fxbloxes",children:[],level:2},{value:"Format Drive",id:"format-drive",children:[],level:2}],s={toc:p};function d(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"installing-the-fxblox-app"},"Installing the FxBlox App"),(0,o.kt)("h3",{id:"initial-setup"},"Initial Setup"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Download the App"),": ",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"For Android: ",(0,o.kt)("a",{parentName:"li",href:"https://play.google.com/store/apps/details?id=land.fx.blox"},"FxBlox on Google Play (v1.6.11+)"),"."),(0,o.kt)("li",{parentName:"ul"},"For iOS: ",(0,o.kt)("a",{parentName:"li",href:"https://apps.apple.com/ca/app/fxblox/id6444862171"},"FxBlox on AppStore (v1.6.11+)"),"."))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Metamask Wallet"),": Ensure you have a ",(0,o.kt)("a",{parentName:"li",href:"https://play.google.com/store/apps/details?id=io.metamask"},"Metamask wallet")," for setting up your identity.")),(0,o.kt)("h3",{id:"app-configuration-steps"},"App Configuration Steps"),(0,o.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"info")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"If adding more than one FxBlox to your app, get familiar with ",(0,o.kt)("a",{parentName:"p",href:"#add-multiple-fxbloxs"},"these instructions first.")))),(0,o.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"info")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"For a successful setup you should either have the Blox with internal storage, or attach an external storage to it."))),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},'Open Metamask Wallet. We recommend having the opening network set to "Ethereum Mainnet" for a smoother setup process.'),(0,o.kt)("li",{parentName:"ol"},"Minimize Metamask (not close) and open the FxBlox app."),(0,o.kt)("li",{parentName:"ol"},"Read the ",(0,o.kt)("a",{parentName:"li",href:"https://fx.land/terms"},"Terms and Condition")," and if you agree, then select ",(0,o.kt)("inlineCode",{parentName:"li"},"Agree and Setup Blox")," in the app."),(0,o.kt)("li",{parentName:"ol"},"Enter a memorable password for data encryption and click ",(0,o.kt)("inlineCode",{parentName:"li"},"Sign")," (Note: This is not your Metamask password)."),(0,o.kt)("li",{parentName:"ol"},"Complete the connection in the Metamask app, then return to the FxBlox app.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"You may need to click back to manually return to the app if it does not open Blox automatically after you sign in Metamask"),(0,o.kt)("li",{parentName:"ul"},"It does not matter which chain (Ethereum, Mumbai, etc) you are on in your Metamask wallet."))),(0,o.kt)("li",{parentName:"ol"},"Tap ",(0,o.kt)("inlineCode",{parentName:"li"},"Connect to new blox"),"."),(0,o.kt)("li",{parentName:"ol"},'Manually connect your phone to the "FxBlox" WiFi/Hotspot, and turn off "mobile data", then continue in the app.')),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"warning")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},'Everyone should format their storage in step 8. If you have Blox with internal storage, disconnect any external disk. If you have Blox with no internal storage, attach your external storage. At the "set Authorizer" page, wait for 10 seconds and a green button named "Format Disk" appears. click on it and blox turns ',(0,o.kt)("font",{color:"purple"}," purple")," and reboots after a few minutes. You should wait for the light to turn flashing ",(0,o.kt)("font",{color:"cyan"}," light blue")," again and then reconnect your phone to FxBlox again to continue the process"))),(0,o.kt)("ol",{start:8},(0,o.kt)("li",{parentName:"ol"},"Make sure you have attached at least 300GB of external storage to your FxBlox. Proceed by clicking ",(0,o.kt)("inlineCode",{parentName:"li"},"Next")," once the app recognizes the storage.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"If the storage is not recognized ensure that is it correctly formatted by clicking on the ",(0,o.kt)("inlineCode",{parentName:"li"},"Format")," button.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"The light will turn ",(0,o.kt)("font",{color:"purple"}," purple"),", to indicate it is formatting. ",(0,o.kt)("strong",{parentName:"li"},"Formatting times depend on storage medium and capacity"),", so be patient during this time. Device will reboot automatically and eventually start flashing ",(0,o.kt)("font",{color:"cyan"}," light blue")," again when it is ready to proceed."))),(0,o.kt)("li",{parentName:"ul"},"If you have an FxBlox version with internal storage, there is no need to attach external storage."))),(0,o.kt)("li",{parentName:"ol"},"Select your desired WiFi network for the FxBlox and enter the password.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"If you entered the wrong password, double check you're connected to FxBlox Wifi and just go back to the wifi selection screen to choose and re-enter your password."))),(0,o.kt)("li",{parentName:"ol"},"Finally, on the last screen reconnect your mobile device to your home WiFi and you can turn on the mobile data again if you want to. The app will confirm the successful setup. Please note the app does not continue if you do not have an active internet connection. When Blox is connected to the internet, the LEDs turn ",(0,o.kt)("inlineCode",{parentName:"li"},"green")," for 30 seconds and then turn off."),(0,o.kt)("li",{parentName:"ol"},"We recommend unplugging and replugging the Blox after the initial setup once for a hard reboot and ensuring that everything is set. After you re-plug the power and it boots, it may reboot automatically once as well.")),(0,o.kt)("h3",{id:"troubleshoot"},"Troubleshoot"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Final step connection issues"),": Connect to mobile or home wifi, restart the FxBlox app, select ",(0,o.kt)("inlineCode",{parentName:"li"},"Connect to Existing Blox"),". If that doesn't work, restart the FxBlox device. Close app and reopen to proceed with ",(0,o.kt)("inlineCode",{parentName:"li"},"Connect to new Blox"),"."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"If Metamask doesn't redirect after signing transaction"),": Manually go back to the FxBlox app."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"App issues with Metamask"),': On some phones, if you cannot get the "Connect" and "sign" prompts in Metamask, you may need to put both the Metamask app and Blox app in Unrestricted mode from the "Battery Optimization". Go to: ',(0,o.kt)("inlineCode",{parentName:"li"},"Settings")," > ",(0,o.kt)("inlineCode",{parentName:"li"},"Apps")," > ",(0,o.kt)("inlineCode",{parentName:"li"},"FxBlox")," > ",(0,o.kt)("inlineCode",{parentName:"li"},"Battery")," / ",(0,o.kt)("inlineCode",{parentName:"li"},"App Battery")," > Choose ",(0,o.kt)("inlineCode",{parentName:"li"},"Unrestricted"),". Do the same for the Metamask app. After the setup, you can return it back to the default of ",(0,o.kt)("inlineCode",{parentName:"li"},"Optimized"))),(0,o.kt)("h2",{id:"add-multiple-fxbloxes"},"Add Multiple FxBloxes"),(0,o.kt)("p",null,"As of Android/iOS app version 1.6.7, there is not an easy way to add more than one blox to your account. Follow these additional steps if you would like to connect more than one blox:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"If not already done, complete setup of your first Blox."),(0,o.kt)("li",{parentName:"ol"},"Verify Blox is listed as ",(0,o.kt)("inlineCode",{parentName:"li"},"Authorized")," under ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings"),"->",(0,o.kt)("inlineCode",{parentName:"li"},"Blox Discovery"),". If not, restart your Blox by unplug/plug-ing it back in."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"Log Out")," of your account by going to ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings")," -> ",(0,o.kt)("inlineCode",{parentName:"li"},"Log Out"),"."),(0,o.kt)("li",{parentName:"ol"},"Proceed and complete set-up of your next FxBlox."),(0,o.kt)("li",{parentName:"ol"},"Repeat steps 2-4 for all the FxBloxes you have, except for the last one.",(0,o.kt)("div",{parentName:"li",className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"info")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"If you're using the default naming scheme ",(0,o.kt)("inlineCode",{parentName:"p"},"Blox unit #X"),", then name your last Blox ",(0,o.kt)("inlineCode",{parentName:"p"},"Blox unit #1"),". The reason for this is because the app will auto-number the rest of your Bloxes when you add them back in.")))),(0,o.kt)("li",{parentName:"ol"},"When you've finally added the last FxBlox, go to ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings")," -> ",(0,o.kt)("inlineCode",{parentName:"li"},"Blox Discovery"),"."),(0,o.kt)("li",{parentName:"ol"},"All FxBloxes should say ",(0,o.kt)("inlineCode",{parentName:"li"},"Authorized"),", so select them and click ",(0,o.kt)("inlineCode",{parentName:"li"},"Add selected blox(s)"),"."),(0,o.kt)("li",{parentName:"ol"},"Verify you can see all of them by going to ",(0,o.kt)("inlineCode",{parentName:"li"},"Blox")," tab and swiping left/right between them.")),(0,o.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"info")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"As you can see the functionality is there, but priotization of an easier way to add them is scheduled for after testnet launch."),(0,o.kt)("p",{parentName:"div"},(0,o.kt)("strong",{parentName:"p"},"Our apps are open-source and built in React Native for cross-platform support. So if you would like to ",(0,o.kt)("a",{parentName:"strong",href:"https://github.com/functionland/fx-components"},"contribute to the project"),", that would be greatly appreciated!")))),(0,o.kt)("h2",{id:"format-drive"},"Format Drive"),(0,o.kt)("p",null,"If you were eager to test out nightly releases on your own, you may have trouble joining the official launch of the testnet. This is because the blocks from the temporary chains are incompatible with the official testnet blocks. To fix this, you need to erase all previous blocks, easiest way is to format the drive."),(0,o.kt)("p",null,"To format your drive: "),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Tap on the ",(0,o.kt)("inlineCode",{parentName:"li"},"Blox")," tab to see this screen",(0,o.kt)("center",null,(0,o.kt)("img",{src:"/img/fxyard-network/blox-page.png",style:{width:450}}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Tap and hold")," the ",(0,o.kt)("inlineCode",{parentName:"li"},"Hard Disk")," you want to format"),(0,o.kt)("li",{parentName:"ol"},"When the pop-up shows, click the ",(0,o.kt)("inlineCode",{parentName:"li"},"Format")," button",(0,o.kt)("center",null,(0,o.kt)("img",{src:"/img/fxyard-network/format-button.png",style:{width:400}}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Now wait!")," The light will turn purple. This process may take more or less than 5 minutes, dependent on the speed of your drive."),(0,o.kt)("li",{parentName:"ol"},"The FxBlox will auto-reboot, after it is done the lights will turn off.")),(0,o.kt)("p",null,"FxBlox will automatically connect to testnet and save chain history. You should be able to join testnet now."))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7878],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>u});var a=n(7294);function o(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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=s(n),u=o,h=c["".concat(p,".").concat(u)]||c[u]||m[u]||i;return n?a.createElement(h,r(r({ref:t},d),{},{components:n})):a.createElement(h,r({ref:t},d))}));function u(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,r=new Array(i);r[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:o,r[1]=l;for(var s=2;s{n.r(t),n.d(t,{contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>p});var a=n(7462),o=(n(7294),n(3905));const i={title:"FxBlox App Setup",id:"fxblox-app"},r=void 0,l={unversionedId:"functionyard/fxblox-app",id:"functionyard/fxblox-app",title:"FxBlox App Setup",description:"Installing the FxBlox App",source:"@site/docs/functionyard/fxblox-app.md",sourceDirName:"functionyard",slug:"/functionyard/fxblox-app",permalink:"/functionyard/fxblox-app",tags:[],version:"current",frontMatter:{title:"FxBlox App Setup",id:"fxblox-app"},sidebar:"tutorialSidebar",previous:{title:"Add Storage",permalink:"/functionyard/add-storage"},next:{title:"Joining Testnet",permalink:"/functionyard/join"}},p=[{value:"Installing the FxBlox App",id:"installing-the-fxblox-app",children:[{value:"Initial Setup",id:"initial-setup",children:[],level:3},{value:"App Configuration Steps",id:"app-configuration-steps",children:[],level:3},{value:"Troubleshoot",id:"troubleshoot",children:[],level:3}],level:2},{value:"Add Multiple FxBloxes",id:"add-multiple-fxbloxes",children:[],level:2},{value:"Format Drive",id:"format-drive",children:[],level:2}],s={toc:p};function d(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"installing-the-fxblox-app"},"Installing the FxBlox App"),(0,o.kt)("h3",{id:"initial-setup"},"Initial Setup"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Download the App"),": ",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"For Android: ",(0,o.kt)("a",{parentName:"li",href:"https://play.google.com/store/apps/details?id=land.fx.blox"},"FxBlox on Google Play (v1.6.11+)"),"."),(0,o.kt)("li",{parentName:"ul"},"For iOS: ",(0,o.kt)("a",{parentName:"li",href:"https://apps.apple.com/ca/app/fxblox/id6444862171"},"FxBlox on AppStore (v1.6.11+)"),"."))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Metamask Wallet"),": Ensure you have a ",(0,o.kt)("a",{parentName:"li",href:"https://play.google.com/store/apps/details?id=io.metamask"},"Metamask wallet")," for setting up your identity.")),(0,o.kt)("h3",{id:"app-configuration-steps"},"App Configuration Steps"),(0,o.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"info")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"If adding more than one FxBlox to your app, get familiar with ",(0,o.kt)("a",{parentName:"p",href:"#add-multiple-fxbloxs"},"these instructions first.")))),(0,o.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"info")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"For a successful setup you should either have the Blox with internal storage, or attach an external storage to it."))),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},'Open Metamask Wallet. We recommend having the opening network set to "Ethereum Mainnet" for a smoother setup process.'),(0,o.kt)("li",{parentName:"ol"},"Minimize Metamask (not close) and open the FxBlox app."),(0,o.kt)("li",{parentName:"ol"},"Read the ",(0,o.kt)("a",{parentName:"li",href:"https://fx.land/terms"},"Terms and Condition")," and if you agree, then select ",(0,o.kt)("inlineCode",{parentName:"li"},"Agree and Setup Blox")," in the app."),(0,o.kt)("li",{parentName:"ol"},"Enter a memorable password for data encryption and click ",(0,o.kt)("inlineCode",{parentName:"li"},"Sign")," (Note: This is not your Metamask password)."),(0,o.kt)("li",{parentName:"ol"},"Complete the connection in the Metamask app, then return to the FxBlox app.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"You may need to click back to manually return to the app if it does not open Blox automatically after you sign in Metamask"),(0,o.kt)("li",{parentName:"ul"},"It does not matter which chain (Ethereum, Mumbai, etc) you are on in your Metamask wallet."))),(0,o.kt)("li",{parentName:"ol"},"Tap ",(0,o.kt)("inlineCode",{parentName:"li"},"Connect to new blox"),"."),(0,o.kt)("li",{parentName:"ol"},'Manually connect your phone to the "FxBlox" WiFi/Hotspot, and turn off "mobile data", then continue in the app.')),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"warning")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},'Everyone should format their storage in step 8. If you have Blox with internal storage, disconnect any external disk. If you have Blox with no internal storage, attach your external storage. At the "set Authorizer" page, wait for 10 seconds and a green button named "Format Disk" appears. click on it and blox turns ',(0,o.kt)("font",{color:"purple"}," purple")," and reboots after a few minutes. You should wait for the light to turn flashing ",(0,o.kt)("font",{color:"cyan"}," light blue")," again and then reconnect your phone to FxBlox again to continue the process"))),(0,o.kt)("ol",{start:8},(0,o.kt)("li",{parentName:"ol"},"Make sure you have attached at least 300GB of external storage to your FxBlox. Proceed by clicking ",(0,o.kt)("inlineCode",{parentName:"li"},"Next")," once the app recognizes the storage.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"If the storage is not recognized ensure that is it correctly formatted by clicking on the ",(0,o.kt)("inlineCode",{parentName:"li"},"Format")," button.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"The light will turn ",(0,o.kt)("font",{color:"purple"}," purple"),", to indicate it is formatting. ",(0,o.kt)("strong",{parentName:"li"},"Formatting times depend on storage medium and capacity"),", so be patient during this time. Device will reboot automatically and eventually start flashing ",(0,o.kt)("font",{color:"cyan"}," light blue")," again when it is ready to proceed."))),(0,o.kt)("li",{parentName:"ul"},"If you have an FxBlox version with internal storage, there is no need to attach external storage."))),(0,o.kt)("li",{parentName:"ol"},"Select your desired WiFi network for the FxBlox and enter the password.",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"If you entered the wrong password, double check you're connected to FxBlox Wifi and just go back to the wifi selection screen to choose and re-enter your password."))),(0,o.kt)("li",{parentName:"ol"},"Finally, on the last screen reconnect your mobile device to your home WiFi and you can turn on the mobile data again if you want to. The app will confirm the successful setup. Please note the app does not continue if you do not have an active internet connection. When Blox is connected to the internet, the LEDs turn ",(0,o.kt)("inlineCode",{parentName:"li"},"green")," for 30 seconds and then turn off."),(0,o.kt)("li",{parentName:"ol"},"We recommend unplugging and replugging the Blox after the initial setup once for a hard reboot and ensuring that everything is set. After you re-plug the power and it boots, it may reboot automatically once as well.")),(0,o.kt)("h3",{id:"troubleshoot"},"Troubleshoot"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Final step connection issues"),": Connect to mobile or home wifi, restart the FxBlox app, select ",(0,o.kt)("inlineCode",{parentName:"li"},"Connect to Existing Blox"),". If that doesn't work, restart the FxBlox device. Close app and reopen to proceed with ",(0,o.kt)("inlineCode",{parentName:"li"},"Connect to new Blox"),"."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"If Metamask doesn't redirect after signing transaction"),": Manually go back to the FxBlox app."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"App issues with Metamask"),': On some phones, if you cannot get the "Connect" and "sign" prompts in Metamask, you may need to put both the Metamask app and Blox app in Unrestricted mode from the "Battery Optimization". Go to: ',(0,o.kt)("inlineCode",{parentName:"li"},"Settings")," > ",(0,o.kt)("inlineCode",{parentName:"li"},"Apps")," > ",(0,o.kt)("inlineCode",{parentName:"li"},"FxBlox")," > ",(0,o.kt)("inlineCode",{parentName:"li"},"Battery")," / ",(0,o.kt)("inlineCode",{parentName:"li"},"App Battery")," > Choose ",(0,o.kt)("inlineCode",{parentName:"li"},"Unrestricted"),". Do the same for the Metamask app. After the setup, you can return it back to the default of ",(0,o.kt)("inlineCode",{parentName:"li"},"Optimized"))),(0,o.kt)("h2",{id:"add-multiple-fxbloxes"},"Add Multiple FxBloxes"),(0,o.kt)("p",null,"As of Android/iOS app version 1.6.7, there is not an easy way to add more than one blox to your account. Follow these additional steps if you would like to connect more than one blox:"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"If not already done, complete setup of your first Blox."),(0,o.kt)("li",{parentName:"ol"},"Verify Blox is listed as ",(0,o.kt)("inlineCode",{parentName:"li"},"Authorized")," under ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings"),"->",(0,o.kt)("inlineCode",{parentName:"li"},"Blox Discovery"),". If not, restart your Blox by unplug/plug-ing it back in."),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("inlineCode",{parentName:"li"},"Log Out")," of your account by going to ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings")," -> ",(0,o.kt)("inlineCode",{parentName:"li"},"Log Out"),"."),(0,o.kt)("li",{parentName:"ol"},"Proceed and complete set-up of your next FxBlox."),(0,o.kt)("li",{parentName:"ol"},"Repeat steps 2-4 for all the FxBloxes you have, except for the last one.",(0,o.kt)("div",{parentName:"li",className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"info")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"If you're using the default naming scheme ",(0,o.kt)("inlineCode",{parentName:"p"},"Blox unit #X"),", then name your last Blox ",(0,o.kt)("inlineCode",{parentName:"p"},"Blox unit #1"),". The reason for this is because the app will auto-number the rest of your Bloxes when you add them back in.")))),(0,o.kt)("li",{parentName:"ol"},"When you've finally added the last FxBlox, go to ",(0,o.kt)("inlineCode",{parentName:"li"},"Settings")," -> ",(0,o.kt)("inlineCode",{parentName:"li"},"Blox Discovery"),"."),(0,o.kt)("li",{parentName:"ol"},"All FxBloxes should say ",(0,o.kt)("inlineCode",{parentName:"li"},"Authorized"),", so select them and click ",(0,o.kt)("inlineCode",{parentName:"li"},"Add selected blox(s)"),"."),(0,o.kt)("li",{parentName:"ol"},"Verify you can see all of them by going to ",(0,o.kt)("inlineCode",{parentName:"li"},"Blox")," tab and swiping left/right between them.")),(0,o.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",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"}))),"info")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"As you can see the functionality is there, but prioritization of an easier way to add them is scheduled for after testnet launch."),(0,o.kt)("p",{parentName:"div"},(0,o.kt)("strong",{parentName:"p"},"Our apps are open-source and built in React Native for cross-platform support. So if you would like to ",(0,o.kt)("a",{parentName:"strong",href:"https://github.com/functionland/fx-components"},"contribute to the project"),", that would be greatly appreciated!")))),(0,o.kt)("h2",{id:"format-drive"},"Format Drive"),(0,o.kt)("p",null,"If you were eager to test out nightly releases on your own, you may have trouble joining the official launch of the testnet. This is because the blocks from the temporary chains are incompatible with the official testnet blocks. To fix this, you need to erase all previous blocks, easiest way is to format the drive."),(0,o.kt)("p",null,"To format your drive: "),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Tap on the ",(0,o.kt)("inlineCode",{parentName:"li"},"Blox")," tab to see this screen",(0,o.kt)("center",null,(0,o.kt)("img",{src:"/img/fxyard-network/blox-page.png",style:{width:450}}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Tap and hold")," the ",(0,o.kt)("inlineCode",{parentName:"li"},"Hard Disk")," you want to format"),(0,o.kt)("li",{parentName:"ol"},"When the pop-up shows, click the ",(0,o.kt)("inlineCode",{parentName:"li"},"Format")," button",(0,o.kt)("center",null,(0,o.kt)("img",{src:"/img/fxyard-network/format-button.png",style:{width:400}}))),(0,o.kt)("li",{parentName:"ol"},(0,o.kt)("strong",{parentName:"li"},"Now wait!")," The light will turn purple. This process may take more or less than 5 minutes, dependent on the speed of your drive."),(0,o.kt)("li",{parentName:"ol"},"The FxBlox will auto-reboot, after it is done the lights will turn off.")),(0,o.kt)("p",null,"FxBlox will automatically connect to testnet and save chain history. You should be able to join testnet now."))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/7e4aa304.3aa51849.js b/assets/js/7e4aa304.3aa51849.js new file mode 100644 index 00000000..6465addc --- /dev/null +++ b/assets/js/7e4aa304.3aa51849.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8899],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>h});var a=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),s=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},m=function(e){var t=s(e.components);return a.createElement(l.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,m=p(e,["components","mdxType","originalType","parentName"]),u=s(r),h=n,g=u["".concat(l,".").concat(h)]||u[h]||c[h]||o;return r?a.createElement(g,i(i({ref:t},m),{},{components:r})):a.createElement(g,i({ref:t},m))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,i=new Array(o);i[0]=u;var p={};for(var l in t)hasOwnProperty.call(t,l)&&(p[l]=t[l]);p.originalType=e,p.mdxType="string"==typeof e?e:n,i[1]=p;for(var s=2;s{r.r(t),r.d(t,{contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>p,toc:()=>l});var a=r(7462),n=(r(7294),r(3905));const o={title:"Re-imaging CM4"},i=void 0,p={unversionedId:"functionyard/hardware/fxblox-hardware-rpi-reimage",id:"functionyard/hardware/fxblox-hardware-rpi-reimage",title:"Re-imaging CM4",description:"Re-imaging CM4",source:"@site/docs/functionyard/hardware/fxblox-hardware-rpi-reimage.md",sourceDirName:"functionyard/hardware",slug:"/functionyard/hardware/fxblox-hardware-rpi-reimage",permalink:"/functionyard/hardware/fxblox-hardware-rpi-reimage",tags:[],version:"current",frontMatter:{title:"Re-imaging CM4"}},l=[{value:"Re-imaging CM4",id:"re-imaging-cm4",children:[{value:"Steps for Re-imaging",id:"steps-for-re-imaging",children:[],level:3}],level:2}],s={toc:l};function m(e){let{components:t,...o}=e;return(0,n.kt)("wrapper",(0,a.Z)({},s,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h2",{id:"re-imaging-cm4"},"Re-imaging CM4"),(0,n.kt)("p",null,"If for any reason the CM4 fulatower gets stuck in a blue/white light without going through the whole boot process, or it is not connected to the Wi-Fi or propagating the FxBlox hotspot, you need to perform a full re-image. This process requires you to first open the tower, which involves unscrewing parts of it. The process of opening the tower is shown in the video below:"),(0,n.kt)("p",null,(0,n.kt)("a",{parentName:"p",href:"https://youtu.be/feBov6U_kJs?t=246"},(0,n.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/feBov6U_kJs/0.jpg",alt:"How to open the tower"}))),(0,n.kt)("h3",{id:"steps-for-re-imaging"},"Steps for Re-imaging"),(0,n.kt)("ol",null,(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Unplug the Tower from Power")),(0,n.kt)("p",{parentName:"li"},"Ensure the tower is not connected to any power source before proceeding.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Opening the Tower")),(0,n.kt)("p",{parentName:"li"},"Follow the instructions in the video linked above to open the tower safely.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Connect the USB-C Port")),(0,n.kt)("p",{parentName:"li"},"Connect the USB-C port on the side of the tower to your laptop or PC."),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("img",{alt:"Placeholder for USB-C connection image",src:r(7033).Z,width:"960",height:"1280"}))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Short Circuit the Two Pins")),(0,n.kt)("p",{parentName:"li"},"Short circuit the two pins located on the bottom left side of the Raspberry Pi module. You can use anything to short circuit them, like putting hte head of a USC-C cable between them. but make sure hte material you are using is conductive nad not Aluminum for example (key rings for example are usually aluminum)"),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("img",{alt:"Placeholder for short circuit pins image",src:r(808).Z,width:"602",height:"800"}))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Power On the Tower")),(0,n.kt)("p",{parentName:"li"},"Plug the tower back into power. It should display a blue/white light and remain like that, indicating it is in image mode. You can remove the short circuit from step 4 at this stage.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Installing and Running rpiboot")),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"For Windows:")),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},"Download and install rpiboot from ",(0,n.kt)("a",{parentName:"li",href:"https://github.com/raspberrypi/usbboot/raw/master/win32/rpiboot_setup.exe"},"here"),"."),(0,n.kt)("li",{parentName:"ul"},"Type ",(0,n.kt)("inlineCode",{parentName:"li"},"rpiboot")," in your search bar and run it. After a few seconds it starts printing some stuff and automatically closes after 15 seconds or so. Wait for the terminal to close before proceeding."))),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"For Mac:")),(0,n.kt)("pre",{parentName:"li"},(0,n.kt)("code",{parentName:"pre"},"git clone --recurse-submodules --shallow-submodules --depth=1 https://github.com/raspberrypi/usbboot\ncd usbboot\nbrew install libusb\nbrew install pkg-config\nmake\nsudo ./rpiboot\n")),(0,n.kt)("p",{parentName:"li"},"After a few seconds it starts printing some stuff and automatically closes after 15 seconds or so. Wait for the terminal to close before proceeding.")))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Download the Latest Image")),(0,n.kt)("p",{parentName:"li"},"Download the latest image for your CM4, from ",(0,n.kt)("a",{parentName:"p",href:"https://github.com/functionland/rk1-image/latest/release"},"the official GitHub repository"),". Download all the files that start with CM4_update into one folder on your computer.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Unzip the Image Content")),(0,n.kt)("p",{parentName:"li"},"Right click on the one that ends with .zip and click Extract All. Extract the contents of the downloaded image to a known location on your computer. you can also use a software like 7zip to unzip but both Windows and Mac should natively support the unzip.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Install and Run Raspberry Pi Imager")),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"For Windows:")," Download from ",(0,n.kt)("a",{parentName:"li",href:"https://downloads.raspberrypi.org/imager/imager_latest.exe"},"here"),"."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"For Mac:")," Download from ",(0,n.kt)("a",{parentName:"li",href:"https://downloads.raspberrypi.org/imager/imager_latest.dmg"},"here"),"."))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Configure Raspberry Pi Imager")),(0,n.kt)("p",{parentName:"li"},"Open Raspberry Pi Imager and select the following:"),(0,n.kt)("ul",{parentName:"li"},(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Raspberry Pi Device:")," RASPBERRY PI 4"),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Operating System:"),' Scroll down and choose "custom image," then select the ',(0,n.kt)("inlineCode",{parentName:"li"},".img")," file inside the folder you unzipped in the previous step."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("strong",{parentName:"li"},"Storage:"),' Click on "Choose storage" and select the newly added storage, which should be around 30GB and named RPi-Msd.')),(0,n.kt)("p",{parentName:"li"},(0,n.kt)("img",{alt:"Placeholder for Raspberry Pi Imager configuration image",src:r(2556).Z,width:"1357",height:"951"}))),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Start the Imaging Process")),(0,n.kt)("p",{parentName:"li"},'Click "Next." Choose "No" for the first popup asking if you want custom configs, and "Yes" for the second one asking for confirmation.')),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Wait for Completion")),(0,n.kt)("p",{parentName:"li"},"The imaging process might take about 3 hours. Please be patient.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Final Steps")),(0,n.kt)("p",{parentName:"li"},"After completion, remove the short circuit from the pins, disconnect the USB-C cable connecting the tower to the computer, and then unplug and re-plug the tower to power.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Set Up Using FxBlox App")),(0,n.kt)("p",{parentName:"li"},"Now that you have the updated fulatower, use the FxBlox app to set it up. There's no need for any other manual updates.")),(0,n.kt)("li",{parentName:"ol"},(0,n.kt)("p",{parentName:"li"},(0,n.kt)("strong",{parentName:"p"},"Closing the Tower")),(0,n.kt)("p",{parentName:"li"},"Once you've confirmed a successful setup through the FxBlox app, close up the tower again to protect it from damage."))))}m.isMDXComponent=!0},2556:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/raspberrypi-imager-0098395d6b13954a7d9ae647b1ad14dd.png"},808:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/rpi-shortcircuit-bc7eb70b313a56a44664ff935497ed96.jpg"},7033:(e,t,r)=>{r.d(t,{Z:()=>a});const a=r.p+"assets/images/rpi-usbc-reimage-1ac52347426ee09dc487c4ec047d0ce8.jpg"}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.bb689ed6.js b/assets/js/935f2afb.329015fb.js similarity index 63% rename from assets/js/935f2afb.bb689ed6.js rename to assets/js/935f2afb.329015fb.js index 44bbfb4d..90a8fc78 100644 --- a/assets/js/935f2afb.bb689ed6.js +++ b/assets/js/935f2afb.329015fb.js @@ -1 +1 @@ -"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Introduction","items":[{"type":"link","label":"Fula Network","href":"/introduction/fula","docId":"introduction/fula"},{"type":"link","label":"Blockchain Attached Storage","href":"/introduction/bas","docId":"introduction/bas"},{"type":"link","label":"Blox as a Service","href":"/introduction/blox","docId":"introduction/blox"},{"type":"category","label":"How to Contribute","items":[{"type":"link","label":"Style Guide","href":"/introduction/contribute/styling","docId":"introduction/contribute/styling"},{"type":"link","label":"Writing Guide","href":"/introduction/contribute/writing","docId":"introduction/contribute/writing"},{"type":"link","label":"Contribution Tutorial","href":"/introduction/contribute/contribution-tutorial","docId":"introduction/contribute/contribution-tutorial"}],"collapsible":true,"collapsed":true,"href":"/introduction/contribute/"}],"collapsible":true,"collapsed":true,"href":"/"},{"type":"category","label":"Functionyard Testnet","items":[{"type":"category","label":"Hardware","items":[{"type":"link","label":"FxBlox Lite (CM4)","href":"/functionyard/hardware/fxblox-hardware-rpi","docId":"functionyard/hardware/fxblox-hardware-rpi"},{"type":"link","label":"FxBlox Lite Plus (RK1)","href":"/functionyard/hardware/fxblox-hardware-rk1","docId":"functionyard/hardware/fxblox-hardware-rk1"}],"collapsible":true,"collapsed":true,"href":"/functionyard/hardware/fxblox-hardware"},{"type":"link","label":"Add Storage","href":"/functionyard/add-storage","docId":"functionyard/add-storage"},{"type":"link","label":"FxBlox App Setup","href":"/functionyard/fxblox-app","docId":"functionyard/fxblox-app"},{"type":"link","label":"Joining Testnet","href":"/functionyard/join","docId":"functionyard/join"},{"type":"link","label":"Token in Metamask","href":"/functionyard/metamask","docId":"functionyard/metamask"},{"type":"link","label":"Decentralized Apps","href":"/functionyard/dapps","docId":"functionyard/dapps"},{"type":"link","label":"FxFotos Apps","href":"/functionyard/fxfotos","docId":"functionyard/fxfotos"}],"collapsible":true,"collapsed":true,"href":"/functionyard/"},{"type":"category","label":"Fula API","items":[{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Running a Box locally","href":"/getting-started/box-setup","docId":"getting-started/box-setup"},{"type":"link","label":"Using Fula Samples","href":"/getting-started/using-samples","docId":"getting-started/using-samples"}],"collapsible":true,"collapsed":true,"href":"/getting-started"},{"type":"category","label":"Reference","items":[{"type":"link","label":"Client Instance","href":"/api/client-instance","docId":"api/client-instance"},{"type":"link","label":"Graph API","href":"/api/graph-api","docId":"api/graph-api"},{"type":"link","label":"File API","href":"/api/file-api","docId":"api/file-api"}],"collapsible":true,"collapsed":true,"href":"/reference-api"}],"collapsible":true,"collapsed":true,"href":"/api-intro"},{"type":"link","label":"Whitepaper","href":"/whitepaper/","docId":"whitepaper/whitepaper"},{"type":"category","label":"RFCs","items":[{"type":"category","label":"Security","items":[{"type":"link","label":"Decentralized Identity (DID)","href":"/RFCs/fula-sec/did","docId":"RFCs/fula-sec/did"},{"type":"link","label":"Two-way Encryption Mechanism","href":"/RFCs/fula-sec/encryption","docId":"RFCs/fula-sec/encryption"}],"collapsible":true,"collapsed":true,"href":"/RFCs/fula-sec"},{"type":"link","label":"Private Network","href":"/RFCs/private-network","docId":"RFCs/private-network"},{"type":"link","label":"Document Syncing","href":"/RFCs/document-syncing","docId":"RFCs/document-syncing"},{"type":"link","label":"Personal Data Reserve","href":"/RFCs/personal-data-reserve","docId":"RFCs/personal-data-reserve"}],"collapsible":true,"collapsed":true,"href":"/RFCs/rfc-process"},{"type":"category","label":"Blockchain","items":[{"type":"category","label":"Services","items":[{"type":"link","label":"Explorer","href":"/blockchain/Services/Explorer","docId":"blockchain/Services/Explorer"},{"type":"link","label":"Test Node","href":"/blockchain/Services/Node","docId":"blockchain/Services/Node"},{"type":"link","label":"Build Node","href":"/blockchain/Services/BuildNode","docId":"blockchain/Services/BuildNode"},{"type":"link","label":"Run Node","href":"/blockchain/Services/RunNode","docId":"blockchain/Services/RunNode"},{"type":"link","label":"Node API","href":"/blockchain/Services/NodeAPI","docId":"blockchain/Services/NodeAPI"},{"type":"link","label":"Proof Engine","href":"/blockchain/Services/ProofEngine","docId":"blockchain/Services/ProofEngine"},{"type":"link","label":"Status","href":"/blockchain/Services/Status","docId":"blockchain/Services/Status"},{"type":"link","label":"Fula Contract API","href":"/blockchain/Services/FulaContractAPI","docId":"blockchain/Services/FulaContractAPI"}],"collapsible":true,"collapsed":true,"href":"/blockchain/services"},{"type":"category","label":"Recipes","items":[{"type":"link","label":"Account","href":"/blockchain/Recipes/Account","docId":"blockchain/Recipes/Account"},{"type":"link","label":"Asset","href":"/blockchain/Recipes/Asset","docId":"blockchain/Recipes/Asset"},{"type":"link","label":"Bag","href":"/blockchain/Recipes/Bag","docId":"blockchain/Recipes/Bag"},{"type":"link","label":"Bundle","href":"/blockchain/Recipes/Bundle","docId":"blockchain/Recipes/Bundle"},{"type":"link","label":"Challenges","href":"/blockchain/Recipes/Challenges","docId":"blockchain/Recipes/Challenges"},{"type":"link","label":"Claims","href":"/blockchain/Recipes/Claims","docId":"blockchain/Recipes/Claims"},{"type":"link","label":"Manifest","href":"/blockchain/Recipes/Manifest","docId":"blockchain/Recipes/Manifest"},{"type":"link","label":"Market","href":"/blockchain/Recipes/Market","docId":"blockchain/Recipes/Market"},{"type":"link","label":"Pool","href":"/blockchain/Recipes/Pool","docId":"blockchain/Recipes/Pool"}],"collapsible":true,"collapsed":true,"href":"/blockchain/recipes"}],"collapsible":true,"collapsed":true,"href":"/blockchain/blockchain-intro"}],"mvpSidebar":[{"type":"category","label":"MVP","items":[{"type":"category","label":"Fotos","items":[{"type":"link","label":"setup","href":"/mvp/fotos/setup","docId":"mvp/fotos/setup"},{"type":"link","label":"backup","href":"/mvp/fotos/backup","docId":"mvp/fotos/backup"},{"type":"link","label":"sharing","href":"/mvp/fotos/sharing","docId":"mvp/fotos/sharing"}],"collapsible":true,"collapsed":true,"href":"/mvp/fotos"},{"type":"category","label":"Pools","items":[{"type":"link","label":"provide storage","href":"/mvp/pools/storage-provide","docId":"mvp/pools/storage-provide"}],"collapsible":true,"collapsed":true,"href":"/mvp/pools"}],"collapsible":true,"collapsed":true,"href":"/mvp"}]},"docs":{"api-intro":{"id":"api-intro","title":"Fula API","description":"We designed Fula API to help you (a third-party, open-source developer) build other rich and compelling user experiences.","sidebar":"tutorialSidebar"},"api/client-instance":{"id":"api/client-instance","title":"Client Instance","description":"Fula client package provides a method createClient that returns client instance. You can use this object to call File and Data APIs.","sidebar":"tutorialSidebar"},"api/file-api":{"id":"api/file-api","title":"File API","description":"File API provides an interface-like object store for you to upload files and streams (eg. photos, videos or any type of document) and efficiently retrieve them for use in your web/mobile DApp.","sidebar":"tutorialSidebar"},"api/graph-api":{"id":"api/graph-api","title":"Graph API","description":"Graph API provides a graphql based interface for storing and querying structured graph. Decentralized application","sidebar":"tutorialSidebar"},"blockchain/blockchain-intro":{"id":"blockchain/blockchain-intro","title":"Blockchain Documentation","description":"Here you can find the documenation on blockchain API and Services.","sidebar":"tutorialSidebar"},"blockchain/recipes":{"id":"blockchain/recipes","title":"Blockchain APIs","description":"Once you have the API up and running, these are the calls you can perform to interact with the Fula nodes.","sidebar":"tutorialSidebar"},"blockchain/Recipes/Account":{"id":"blockchain/Recipes/Account","title":"Account","description":"Create","sidebar":"tutorialSidebar"},"blockchain/Recipes/Asset":{"id":"blockchain/Recipes/Asset","title":"Asset","description":"Create Class","sidebar":"tutorialSidebar"},"blockchain/Recipes/Bag":{"id":"blockchain/Recipes/Bag","title":"Bag","description":"Register","sidebar":"tutorialSidebar"},"blockchain/Recipes/Bundle":{"id":"blockchain/Recipes/Bundle","title":"Bundle","description":"Register","sidebar":"tutorialSidebar"},"blockchain/Recipes/Challenges":{"id":"blockchain/Recipes/Challenges","title":"Challenges","description":"The Challenges were implemented to improve the security of the proof-engine and the claim of the Fula Tokens. The challenges consist of a series of random proof of storage of a manifest and they are made each cycle in the proof-engine, here:","sidebar":"tutorialSidebar"},"blockchain/Recipes/Claims":{"id":"blockchain/Recipes/Claims","title":"Claims","description":"Claim tokens","sidebar":"tutorialSidebar"},"blockchain/Recipes/Manifest":{"id":"blockchain/Recipes/Manifest","title":"Manifest","description":"Upload Manifest","sidebar":"tutorialSidebar"},"blockchain/Recipes/Market":{"id":"blockchain/Recipes/Market","title":"Market","description":"Create","sidebar":"tutorialSidebar"},"blockchain/Recipes/Pool":{"id":"blockchain/Recipes/Pool","title":"Pool","description":"Create","sidebar":"tutorialSidebar"},"blockchain/services":{"id":"blockchain/services","title":"Blockchain Services","description":"Node","sidebar":"tutorialSidebar"},"blockchain/Services/BuildNode":{"id":"blockchain/Services/BuildNode","title":"Build Node","description":"1- Install Rust","sidebar":"tutorialSidebar"},"blockchain/Services/Explorer":{"id":"blockchain/Services/Explorer","title":"Explorer","description":"Install NodeJS","sidebar":"tutorialSidebar"},"blockchain/Services/FulaContractAPI":{"id":"blockchain/Services/FulaContractAPI","title":"Fula Contract API","description":"This is the end point that interacts with Fula blockchain contract","sidebar":"tutorialSidebar"},"blockchain/Services/Node":{"id":"blockchain/Services/Node","title":"Test Node","description":"This document explains how to run sample nodes. However, for an actual node with custom keys please refer to Run Node","sidebar":"tutorialSidebar"},"blockchain/Services/NodeAPI":{"id":"blockchain/Services/NodeAPI","title":"Node API","description":"Install OS dependencies and Rust","sidebar":"tutorialSidebar"},"blockchain/Services/ProofEngine":{"id":"blockchain/Services/ProofEngine","title":"Proof Engine","description":"Install OS dependencies and Rust","sidebar":"tutorialSidebar"},"blockchain/Services/RunNode":{"id":"blockchain/Services/RunNode","title":"Run Node","description":"This docuemnt explains how to run Fula nodes","sidebar":"tutorialSidebar"},"blockchain/Services/Status":{"id":"blockchain/Services/Status","title":"Status","description":"Install NodeJS","sidebar":"tutorialSidebar"},"components/WorkInProgress":{"id":"components/WorkInProgress","title":"WorkInProgress","description":"Please note: these instructions remain a work in progress as we continue to evolve, refine and perfect the Fula API. Make sure to check back soon for more details!"},"design/encryption":{"id":"design/encryption","title":"encryption","description":"Current Process:"},"design/test":{"id":"design/test","title":"test","description":"this is a test"},"functionyard/add-storage":{"id":"functionyard/add-storage","title":"Add Storage","description":"Compatible Storage Drives","sidebar":"tutorialSidebar"},"functionyard/dapps":{"id":"functionyard/dapps","title":"Decentralized Apps","description":"Download FxFotos App","sidebar":"tutorialSidebar"},"functionyard/fxblox-app":{"id":"functionyard/fxblox-app","title":"FxBlox App Setup","description":"Installing the FxBlox App","sidebar":"tutorialSidebar"},"functionyard/fxfotos":{"id":"functionyard/fxfotos","title":"FxFotos Apps","description":"Use case","sidebar":"tutorialSidebar"},"functionyard/hardware/fxblox-hardware":{"id":"functionyard/hardware/fxblox-hardware","title":"FxBlox Hardware","description":"The Difference Between Lite and Lite Plus","sidebar":"tutorialSidebar"},"functionyard/hardware/fxblox-hardware-rk1":{"id":"functionyard/hardware/fxblox-hardware-rk1","title":"FxBlox Lite Plus (RK1)","description":"Updating Your FxBlox Lite Plus (RK1)","sidebar":"tutorialSidebar"},"functionyard/hardware/fxblox-hardware-rpi":{"id":"functionyard/hardware/fxblox-hardware-rpi","title":"FxBlox Lite (CM4)","description":"Updating Your FxBlox Lite (RPI)","sidebar":"tutorialSidebar"},"functionyard/index":{"id":"functionyard/index","title":"Functionyard","description":"This comprehensive guide is designed to assist in preparing a FxBlox owner for the testnet launch. The testnet is called \\"Functionyard\\" and the token is \\"BORG\\".","sidebar":"tutorialSidebar"},"functionyard/join":{"id":"functionyard/join","title":"Joining Testnet","description":"Joining the Testnet","sidebar":"tutorialSidebar"},"functionyard/metamask":{"id":"functionyard/metamask","title":"Token in Metamask","description":"Adding BORG Token to MetaMask on Mumbai Chain","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"In order to start developing your own DApps on Fula, complete these two steps:","sidebar":"tutorialSidebar"},"getting-started/box-setup":{"id":"getting-started/box-setup","title":"Running a Box locally","description":"The easiest way to get your Box server running locally is to clone our repo and use docker.","sidebar":"tutorialSidebar"},"getting-started/fula-client":{"id":"getting-started/fula-client","title":"The Fula Client Library","description":"Fula client lets you connect your web application to the Box using libp2p. It helps DApp developers to use a Box as the back-end for their applications. You can use the File and Graph APIs to store and retrieve your data."},"getting-started/rpi-setup":{"id":"getting-started/rpi-setup","title":"Installing Box on Raspberry Pi OS","description":"Pre-requisites"},"getting-started/using-samples":{"id":"getting-started/using-samples","title":"Using Fula Samples","description":"All the Fula samples can be found in the Fula GitHub repo under examples.","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"Welcome","description":"Functionland was founded on a core set of Web3 principles. At the heart of these principles is a simple premise: We each have an inalienable right to own our own data.","sidebar":"tutorialSidebar"},"introduction/bas":{"id":"introduction/bas","title":"Blockchain Attached Storage","description":"You\'ve heard of a network attached storage (NAS), but you haven\'t heard of a blockchain attached storage (BAS).","sidebar":"tutorialSidebar"},"introduction/blox":{"id":"introduction/blox","title":"Blox as a Service","description":"What we are missing in the web2 (and web3) space is a freemium option for consumers to compute on and store larger sets of data.","sidebar":"tutorialSidebar"},"introduction/contribute/contribute":{"id":"introduction/contribute/contribute","title":"How to Contribute","description":"Thank you for your interest in contributing to our open source repositories on GitHub! Your contributions help us improve the services and make everyone\'s experience even better. Here\'s how you can get involved:","sidebar":"tutorialSidebar"},"introduction/contribute/contribution-tutorial":{"id":"introduction/contribute/contribution-tutorial","title":"Contribution Tutorial","description":"This style guide is adapted from IPFS\'s \\"Contribution Tutorial\\" article.","sidebar":"tutorialSidebar"},"introduction/contribute/styling":{"id":"introduction/contribute/styling","title":"Style Guide","description":"This style guide is adapted from IPFS\'s \\"Grammer, formatting, and style\\" rules.","sidebar":"tutorialSidebar"},"introduction/contribute/writing":{"id":"introduction/contribute/writing","title":"Writing Guide","description":"This writing guide is adapted from IPFS\'s \\"writing guide\\" rules.","sidebar":"tutorialSidebar"},"introduction/fula":{"id":"introduction/fula","title":"Fula Network","description":"Fula Network Architecture","sidebar":"tutorialSidebar"},"mvp":{"id":"mvp","title":"Minimum Valuable Product","description":"The following describes how the Fula network software will work from the network participant\'s perspective.","sidebar":"mvpSidebar"},"mvp/admin-reporting":{"id":"mvp/admin-reporting","title":"Admin Reporting & Alerts","description":""},"mvp/box-admin":{"id":"mvp/box-admin","title":"Box Admin","description":"After loading the Box Admin DApp."},"mvp/forgot-password":{"id":"mvp/forgot-password","title":"Forgot Password","description":"If I ever lose or forget my password."},"mvp/fotos":{"id":"mvp/fotos","title":"Fotos","description":"* setup","sidebar":"mvpSidebar"},"mvp/fotos/availability":{"id":"mvp/fotos/availability","title":"Fotos Availability","description":"Acceptance Criteria"},"mvp/fotos/backup":{"id":"mvp/fotos/backup","title":"Fotos Backup to Fula environment","description":"Acceptance Criteria","sidebar":"mvpSidebar"},"mvp/fotos/setup":{"id":"mvp/fotos/setup","title":"Fotos Setup","description":"Acceptance Criteria","sidebar":"mvpSidebar"},"mvp/fotos/sharing":{"id":"mvp/fotos/sharing","title":"Fotos Sharing","description":"Story","sidebar":"mvpSidebar"},"mvp/my-account":{"id":"mvp/my-account","title":"My Account","description":"On my account page."},"mvp/pools":{"id":"mvp/pools","title":"Pools","description":"* storage provide","sidebar":"mvpSidebar"},"mvp/pools/storage-provide":{"id":"mvp/pools/storage-provide","title":"Providing Storage","description":"Acceptance Criteria","sidebar":"mvpSidebar"},"mvp/privacy-dashboard":{"id":"mvp/privacy-dashboard","title":"privacy-dashboard","description":"* I can see all of my data and what DApps are creating/encrypting content."},"mvp/questions":{"id":"mvp/questions","title":"questions","description":"New Questions"},"mvp/technical-questions":{"id":"mvp/technical-questions","title":"technical questions","description":"Local Pools"},"mvp/unboxing":{"id":"mvp/unboxing","title":"Unboxing","description":"As a Box owner."},"reference-api":{"id":"reference-api","title":"Reference","description":"The Fula API includes the following:","sidebar":"tutorialSidebar"},"release/testnet-alpha":{"id":"release/testnet-alpha","title":"Protocol Testnet Alpha Pre-release","description":"Last updated: July 29, 2022"},"RFCs/document-syncing":{"id":"RFCs/document-syncing","title":"Document Syncing","description":"- Start Date: 2022-03-24","sidebar":"tutorialSidebar"},"RFCs/fula-sec":{"id":"RFCs/fula-sec","title":"FULA Security Layer","description":"- Start Date: 2022-02-27","sidebar":"tutorialSidebar"},"RFCs/fula-sec/did":{"id":"RFCs/fula-sec/did","title":"Decentralized Identity (DID)","description":"- Start Date: 2022-02-27","sidebar":"tutorialSidebar"},"RFCs/fula-sec/encryption":{"id":"RFCs/fula-sec/encryption","title":"Two-way Encryption Mechanism","description":"- Start Date: 2022-02-27","sidebar":"tutorialSidebar"},"RFCs/personal-data-reserve":{"id":"RFCs/personal-data-reserve","title":"Personal Data Reserve","description":"- Start Date: 2022-03-18","sidebar":"tutorialSidebar"},"RFCs/private-network":{"id":"RFCs/private-network","title":"Private Network","description":"- Start Date: 2022-02-01","sidebar":"tutorialSidebar"},"RFCs/replication":{"id":"RFCs/replication","title":"Replication","description":"- Start Date: 2022-02-01"},"RFCs/rfc-process":{"id":"RFCs/rfc-process","title":"Requests for comments (RFCs)","description":"What is the RFC process?","sidebar":"tutorialSidebar"},"whitepaper/whitepaper":{"id":"whitepaper/whitepaper","title":"Whitepaper","description":"Functionland Whitepaper","sidebar":"tutorialSidebar"},"work_in_progress":{"id":"work_in_progress","title":"work_in_progress","description":"{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Introduction","items":[{"type":"link","label":"Fula Network","href":"/introduction/fula","docId":"introduction/fula"},{"type":"link","label":"Blockchain Attached Storage","href":"/introduction/bas","docId":"introduction/bas"},{"type":"link","label":"Blox as a Service","href":"/introduction/blox","docId":"introduction/blox"},{"type":"category","label":"How to Contribute","items":[{"type":"link","label":"Style Guide","href":"/introduction/contribute/styling","docId":"introduction/contribute/styling"},{"type":"link","label":"Writing Guide","href":"/introduction/contribute/writing","docId":"introduction/contribute/writing"},{"type":"link","label":"Contribution Tutorial","href":"/introduction/contribute/contribution-tutorial","docId":"introduction/contribute/contribution-tutorial"}],"collapsible":true,"collapsed":true,"href":"/introduction/contribute/"}],"collapsible":true,"collapsed":true,"href":"/"},{"type":"category","label":"Functionyard Testnet","items":[{"type":"category","label":"Hardware","items":[{"type":"link","label":"FxBlox Lite (CM4)","href":"/functionyard/hardware/fxblox-hardware-rpi","docId":"functionyard/hardware/fxblox-hardware-rpi"},{"type":"link","label":"FxBlox Lite Plus (RK1)","href":"/functionyard/hardware/fxblox-hardware-rk1","docId":"functionyard/hardware/fxblox-hardware-rk1"}],"collapsible":true,"collapsed":true,"href":"/functionyard/hardware/fxblox-hardware"},{"type":"link","label":"Add Storage","href":"/functionyard/add-storage","docId":"functionyard/add-storage"},{"type":"link","label":"FxBlox App Setup","href":"/functionyard/fxblox-app","docId":"functionyard/fxblox-app"},{"type":"link","label":"Joining Testnet","href":"/functionyard/join","docId":"functionyard/join"},{"type":"link","label":"Token in Metamask","href":"/functionyard/metamask","docId":"functionyard/metamask"},{"type":"link","label":"Decentralized Apps","href":"/functionyard/dapps","docId":"functionyard/dapps"},{"type":"link","label":"FxFotos Apps","href":"/functionyard/fxfotos","docId":"functionyard/fxfotos"}],"collapsible":true,"collapsed":true,"href":"/functionyard/"},{"type":"category","label":"Fula API","items":[{"type":"category","label":"Getting Started","items":[{"type":"link","label":"Running a Box locally","href":"/getting-started/box-setup","docId":"getting-started/box-setup"},{"type":"link","label":"Using Fula Samples","href":"/getting-started/using-samples","docId":"getting-started/using-samples"}],"collapsible":true,"collapsed":true,"href":"/getting-started"},{"type":"category","label":"Reference","items":[{"type":"link","label":"Client Instance","href":"/api/client-instance","docId":"api/client-instance"},{"type":"link","label":"Graph API","href":"/api/graph-api","docId":"api/graph-api"},{"type":"link","label":"File API","href":"/api/file-api","docId":"api/file-api"}],"collapsible":true,"collapsed":true,"href":"/reference-api"}],"collapsible":true,"collapsed":true,"href":"/api-intro"},{"type":"link","label":"Whitepaper","href":"/whitepaper/","docId":"whitepaper/whitepaper"},{"type":"category","label":"RFCs","items":[{"type":"category","label":"Security","items":[{"type":"link","label":"Decentralized Identity (DID)","href":"/RFCs/fula-sec/did","docId":"RFCs/fula-sec/did"},{"type":"link","label":"Two-way Encryption Mechanism","href":"/RFCs/fula-sec/encryption","docId":"RFCs/fula-sec/encryption"}],"collapsible":true,"collapsed":true,"href":"/RFCs/fula-sec"},{"type":"link","label":"Private Network","href":"/RFCs/private-network","docId":"RFCs/private-network"},{"type":"link","label":"Document Syncing","href":"/RFCs/document-syncing","docId":"RFCs/document-syncing"},{"type":"link","label":"Personal Data Reserve","href":"/RFCs/personal-data-reserve","docId":"RFCs/personal-data-reserve"}],"collapsible":true,"collapsed":true,"href":"/RFCs/rfc-process"},{"type":"category","label":"Blockchain","items":[{"type":"category","label":"Services","items":[{"type":"link","label":"Explorer","href":"/blockchain/Services/Explorer","docId":"blockchain/Services/Explorer"},{"type":"link","label":"Test Node","href":"/blockchain/Services/Node","docId":"blockchain/Services/Node"},{"type":"link","label":"Build Node","href":"/blockchain/Services/BuildNode","docId":"blockchain/Services/BuildNode"},{"type":"link","label":"Run Node","href":"/blockchain/Services/RunNode","docId":"blockchain/Services/RunNode"},{"type":"link","label":"Node API","href":"/blockchain/Services/NodeAPI","docId":"blockchain/Services/NodeAPI"},{"type":"link","label":"Proof Engine","href":"/blockchain/Services/ProofEngine","docId":"blockchain/Services/ProofEngine"},{"type":"link","label":"Status","href":"/blockchain/Services/Status","docId":"blockchain/Services/Status"},{"type":"link","label":"Fula Contract API","href":"/blockchain/Services/FulaContractAPI","docId":"blockchain/Services/FulaContractAPI"}],"collapsible":true,"collapsed":true,"href":"/blockchain/services"},{"type":"category","label":"Recipes","items":[{"type":"link","label":"Account","href":"/blockchain/Recipes/Account","docId":"blockchain/Recipes/Account"},{"type":"link","label":"Asset","href":"/blockchain/Recipes/Asset","docId":"blockchain/Recipes/Asset"},{"type":"link","label":"Bag","href":"/blockchain/Recipes/Bag","docId":"blockchain/Recipes/Bag"},{"type":"link","label":"Bundle","href":"/blockchain/Recipes/Bundle","docId":"blockchain/Recipes/Bundle"},{"type":"link","label":"Challenges","href":"/blockchain/Recipes/Challenges","docId":"blockchain/Recipes/Challenges"},{"type":"link","label":"Claims","href":"/blockchain/Recipes/Claims","docId":"blockchain/Recipes/Claims"},{"type":"link","label":"Manifest","href":"/blockchain/Recipes/Manifest","docId":"blockchain/Recipes/Manifest"},{"type":"link","label":"Market","href":"/blockchain/Recipes/Market","docId":"blockchain/Recipes/Market"},{"type":"link","label":"Pool","href":"/blockchain/Recipes/Pool","docId":"blockchain/Recipes/Pool"}],"collapsible":true,"collapsed":true,"href":"/blockchain/recipes"}],"collapsible":true,"collapsed":true,"href":"/blockchain/blockchain-intro"}],"mvpSidebar":[{"type":"category","label":"MVP","items":[{"type":"category","label":"Fotos","items":[{"type":"link","label":"setup","href":"/mvp/fotos/setup","docId":"mvp/fotos/setup"},{"type":"link","label":"backup","href":"/mvp/fotos/backup","docId":"mvp/fotos/backup"},{"type":"link","label":"sharing","href":"/mvp/fotos/sharing","docId":"mvp/fotos/sharing"}],"collapsible":true,"collapsed":true,"href":"/mvp/fotos"},{"type":"category","label":"Pools","items":[{"type":"link","label":"provide storage","href":"/mvp/pools/storage-provide","docId":"mvp/pools/storage-provide"}],"collapsible":true,"collapsed":true,"href":"/mvp/pools"}],"collapsible":true,"collapsed":true,"href":"/mvp"}]},"docs":{"api-intro":{"id":"api-intro","title":"Fula API","description":"We designed Fula API to help you (a third-party, open-source developer) build other rich and compelling user experiences.","sidebar":"tutorialSidebar"},"api/client-instance":{"id":"api/client-instance","title":"Client Instance","description":"Fula client package provides a method createClient that returns client instance. You can use this object to call File and Data APIs.","sidebar":"tutorialSidebar"},"api/file-api":{"id":"api/file-api","title":"File API","description":"File API provides an interface-like object store for you to upload files and streams (eg. photos, videos or any type of document) and efficiently retrieve them for use in your web/mobile DApp.","sidebar":"tutorialSidebar"},"api/graph-api":{"id":"api/graph-api","title":"Graph API","description":"Graph API provides a graphql based interface for storing and querying structured graph. Decentralized application","sidebar":"tutorialSidebar"},"blockchain/blockchain-intro":{"id":"blockchain/blockchain-intro","title":"Blockchain Documentation","description":"Here you can find the documenation on blockchain API and Services.","sidebar":"tutorialSidebar"},"blockchain/recipes":{"id":"blockchain/recipes","title":"Blockchain APIs","description":"Once you have the API up and running, these are the calls you can perform to interact with the Fula nodes.","sidebar":"tutorialSidebar"},"blockchain/Recipes/Account":{"id":"blockchain/Recipes/Account","title":"Account","description":"Create","sidebar":"tutorialSidebar"},"blockchain/Recipes/Asset":{"id":"blockchain/Recipes/Asset","title":"Asset","description":"Create Class","sidebar":"tutorialSidebar"},"blockchain/Recipes/Bag":{"id":"blockchain/Recipes/Bag","title":"Bag","description":"Register","sidebar":"tutorialSidebar"},"blockchain/Recipes/Bundle":{"id":"blockchain/Recipes/Bundle","title":"Bundle","description":"Register","sidebar":"tutorialSidebar"},"blockchain/Recipes/Challenges":{"id":"blockchain/Recipes/Challenges","title":"Challenges","description":"The Challenges were implemented to improve the security of the proof-engine and the claim of the Fula Tokens. The challenges consist of a series of random proof of storage of a manifest and they are made each cycle in the proof-engine, here:","sidebar":"tutorialSidebar"},"blockchain/Recipes/Claims":{"id":"blockchain/Recipes/Claims","title":"Claims","description":"Claim tokens","sidebar":"tutorialSidebar"},"blockchain/Recipes/Manifest":{"id":"blockchain/Recipes/Manifest","title":"Manifest","description":"Upload Manifest","sidebar":"tutorialSidebar"},"blockchain/Recipes/Market":{"id":"blockchain/Recipes/Market","title":"Market","description":"Create","sidebar":"tutorialSidebar"},"blockchain/Recipes/Pool":{"id":"blockchain/Recipes/Pool","title":"Pool","description":"Create","sidebar":"tutorialSidebar"},"blockchain/services":{"id":"blockchain/services","title":"Blockchain Services","description":"Node","sidebar":"tutorialSidebar"},"blockchain/Services/BuildNode":{"id":"blockchain/Services/BuildNode","title":"Build Node","description":"1- Install Rust","sidebar":"tutorialSidebar"},"blockchain/Services/Explorer":{"id":"blockchain/Services/Explorer","title":"Explorer","description":"Install NodeJS","sidebar":"tutorialSidebar"},"blockchain/Services/FulaContractAPI":{"id":"blockchain/Services/FulaContractAPI","title":"Fula Contract API","description":"This is the end point that interacts with Fula blockchain contract","sidebar":"tutorialSidebar"},"blockchain/Services/Node":{"id":"blockchain/Services/Node","title":"Test Node","description":"This document explains how to run sample nodes. However, for an actual node with custom keys please refer to Run Node","sidebar":"tutorialSidebar"},"blockchain/Services/NodeAPI":{"id":"blockchain/Services/NodeAPI","title":"Node API","description":"Install OS dependencies and Rust","sidebar":"tutorialSidebar"},"blockchain/Services/ProofEngine":{"id":"blockchain/Services/ProofEngine","title":"Proof Engine","description":"Install OS dependencies and Rust","sidebar":"tutorialSidebar"},"blockchain/Services/RunNode":{"id":"blockchain/Services/RunNode","title":"Run Node","description":"This docuemnt explains how to run Fula nodes","sidebar":"tutorialSidebar"},"blockchain/Services/Status":{"id":"blockchain/Services/Status","title":"Status","description":"Install NodeJS","sidebar":"tutorialSidebar"},"components/WorkInProgress":{"id":"components/WorkInProgress","title":"WorkInProgress","description":"Please note: these instructions remain a work in progress as we continue to evolve, refine and perfect the Fula API. Make sure to check back soon for more details!"},"design/encryption":{"id":"design/encryption","title":"encryption","description":"Current Process:"},"design/test":{"id":"design/test","title":"test","description":"this is a test"},"functionyard/add-storage":{"id":"functionyard/add-storage","title":"Add Storage","description":"Compatible Storage Drives","sidebar":"tutorialSidebar"},"functionyard/dapps":{"id":"functionyard/dapps","title":"Decentralized Apps","description":"Download FxFotos App","sidebar":"tutorialSidebar"},"functionyard/fxblox-app":{"id":"functionyard/fxblox-app","title":"FxBlox App Setup","description":"Installing the FxBlox App","sidebar":"tutorialSidebar"},"functionyard/fxfotos":{"id":"functionyard/fxfotos","title":"FxFotos Apps","description":"Use case","sidebar":"tutorialSidebar"},"functionyard/hardware/fxblox-hardware":{"id":"functionyard/hardware/fxblox-hardware","title":"FxBlox Hardware","description":"The Difference Between Lite and Lite Plus","sidebar":"tutorialSidebar"},"functionyard/hardware/fxblox-hardware-rk1":{"id":"functionyard/hardware/fxblox-hardware-rk1","title":"FxBlox Lite Plus (RK1)","description":"Updating Your FxBlox Lite Plus (RK1)","sidebar":"tutorialSidebar"},"functionyard/hardware/fxblox-hardware-rpi":{"id":"functionyard/hardware/fxblox-hardware-rpi","title":"FxBlox Lite (CM4)","description":"Updating Your FxBlox Lite (RPI)","sidebar":"tutorialSidebar"},"functionyard/hardware/fxblox-hardware-rpi-reimage":{"id":"functionyard/hardware/fxblox-hardware-rpi-reimage","title":"Re-imaging CM4","description":"Re-imaging CM4"},"functionyard/index":{"id":"functionyard/index","title":"Functionyard","description":"This comprehensive guide is designed to assist in preparing a FxBlox owner for the testnet launch. The testnet is called \\"Functionyard\\" and the token is \\"BORG\\".","sidebar":"tutorialSidebar"},"functionyard/join":{"id":"functionyard/join","title":"Joining Testnet","description":"Joining the Testnet","sidebar":"tutorialSidebar"},"functionyard/metamask":{"id":"functionyard/metamask","title":"Token in Metamask","description":"Adding BORG Token to MetaMask on Mumbai Chain","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"In order to start developing your own DApps on Fula, complete these two steps:","sidebar":"tutorialSidebar"},"getting-started/box-setup":{"id":"getting-started/box-setup","title":"Running a Box locally","description":"The easiest way to get your Box server running locally is to clone our repo and use docker.","sidebar":"tutorialSidebar"},"getting-started/fula-client":{"id":"getting-started/fula-client","title":"The Fula Client Library","description":"Fula client lets you connect your web application to the Box using libp2p. It helps DApp developers to use a Box as the back-end for their applications. You can use the File and Graph APIs to store and retrieve your data."},"getting-started/rpi-setup":{"id":"getting-started/rpi-setup","title":"Installing Box on Raspberry Pi OS","description":"Pre-requisites"},"getting-started/using-samples":{"id":"getting-started/using-samples","title":"Using Fula Samples","description":"All the Fula samples can be found in the Fula GitHub repo under examples.","sidebar":"tutorialSidebar"},"index":{"id":"index","title":"Welcome","description":"Functionland was founded on a core set of Web3 principles. At the heart of these principles is a simple premise: We each have an inalienable right to own our own data.","sidebar":"tutorialSidebar"},"introduction/bas":{"id":"introduction/bas","title":"Blockchain Attached Storage","description":"You\'ve heard of a network attached storage (NAS), but you haven\'t heard of a blockchain attached storage (BAS).","sidebar":"tutorialSidebar"},"introduction/blox":{"id":"introduction/blox","title":"Blox as a Service","description":"What we are missing in the web2 (and web3) space is a freemium option for consumers to compute on and store larger sets of data.","sidebar":"tutorialSidebar"},"introduction/contribute/contribute":{"id":"introduction/contribute/contribute","title":"How to Contribute","description":"Thank you for your interest in contributing to our open source repositories on GitHub! Your contributions help us improve the services and make everyone\'s experience even better. Here\'s how you can get involved:","sidebar":"tutorialSidebar"},"introduction/contribute/contribution-tutorial":{"id":"introduction/contribute/contribution-tutorial","title":"Contribution Tutorial","description":"This style guide is adapted from IPFS\'s \\"Contribution Tutorial\\" article.","sidebar":"tutorialSidebar"},"introduction/contribute/styling":{"id":"introduction/contribute/styling","title":"Style Guide","description":"This style guide is adapted from IPFS\'s \\"Grammer, formatting, and style\\" rules.","sidebar":"tutorialSidebar"},"introduction/contribute/writing":{"id":"introduction/contribute/writing","title":"Writing Guide","description":"This writing guide is adapted from IPFS\'s \\"writing guide\\" rules.","sidebar":"tutorialSidebar"},"introduction/fula":{"id":"introduction/fula","title":"Fula Network","description":"Fula Network Architecture","sidebar":"tutorialSidebar"},"mvp":{"id":"mvp","title":"Minimum Valuable Product","description":"The following describes how the Fula network software will work from the network participant\'s perspective.","sidebar":"mvpSidebar"},"mvp/admin-reporting":{"id":"mvp/admin-reporting","title":"Admin Reporting & Alerts","description":""},"mvp/box-admin":{"id":"mvp/box-admin","title":"Box Admin","description":"After loading the Box Admin DApp."},"mvp/forgot-password":{"id":"mvp/forgot-password","title":"Forgot Password","description":"If I ever lose or forget my password."},"mvp/fotos":{"id":"mvp/fotos","title":"Fotos","description":"* setup","sidebar":"mvpSidebar"},"mvp/fotos/availability":{"id":"mvp/fotos/availability","title":"Fotos Availability","description":"Acceptance Criteria"},"mvp/fotos/backup":{"id":"mvp/fotos/backup","title":"Fotos Backup to Fula environment","description":"Acceptance Criteria","sidebar":"mvpSidebar"},"mvp/fotos/setup":{"id":"mvp/fotos/setup","title":"Fotos Setup","description":"Acceptance Criteria","sidebar":"mvpSidebar"},"mvp/fotos/sharing":{"id":"mvp/fotos/sharing","title":"Fotos Sharing","description":"Story","sidebar":"mvpSidebar"},"mvp/my-account":{"id":"mvp/my-account","title":"My Account","description":"On my account page."},"mvp/pools":{"id":"mvp/pools","title":"Pools","description":"* storage provide","sidebar":"mvpSidebar"},"mvp/pools/storage-provide":{"id":"mvp/pools/storage-provide","title":"Providing Storage","description":"Acceptance Criteria","sidebar":"mvpSidebar"},"mvp/privacy-dashboard":{"id":"mvp/privacy-dashboard","title":"privacy-dashboard","description":"* I can see all of my data and what DApps are creating/encrypting content."},"mvp/questions":{"id":"mvp/questions","title":"questions","description":"New Questions"},"mvp/technical-questions":{"id":"mvp/technical-questions","title":"technical questions","description":"Local Pools"},"mvp/unboxing":{"id":"mvp/unboxing","title":"Unboxing","description":"As a Box owner."},"reference-api":{"id":"reference-api","title":"Reference","description":"The Fula API includes the following:","sidebar":"tutorialSidebar"},"release/testnet-alpha":{"id":"release/testnet-alpha","title":"Protocol Testnet Alpha Pre-release","description":"Last updated: July 29, 2022"},"RFCs/document-syncing":{"id":"RFCs/document-syncing","title":"Document Syncing","description":"- Start Date: 2022-03-24","sidebar":"tutorialSidebar"},"RFCs/fula-sec":{"id":"RFCs/fula-sec","title":"FULA Security Layer","description":"- Start Date: 2022-02-27","sidebar":"tutorialSidebar"},"RFCs/fula-sec/did":{"id":"RFCs/fula-sec/did","title":"Decentralized Identity (DID)","description":"- Start Date: 2022-02-27","sidebar":"tutorialSidebar"},"RFCs/fula-sec/encryption":{"id":"RFCs/fula-sec/encryption","title":"Two-way Encryption Mechanism","description":"- Start Date: 2022-02-27","sidebar":"tutorialSidebar"},"RFCs/personal-data-reserve":{"id":"RFCs/personal-data-reserve","title":"Personal Data Reserve","description":"- Start Date: 2022-03-18","sidebar":"tutorialSidebar"},"RFCs/private-network":{"id":"RFCs/private-network","title":"Private Network","description":"- Start Date: 2022-02-01","sidebar":"tutorialSidebar"},"RFCs/replication":{"id":"RFCs/replication","title":"Replication","description":"- Start Date: 2022-02-01"},"RFCs/rfc-process":{"id":"RFCs/rfc-process","title":"Requests for comments (RFCs)","description":"What is the RFC process?","sidebar":"tutorialSidebar"},"whitepaper/whitepaper":{"id":"whitepaper/whitepaper","title":"Whitepaper","description":"Functionland Whitepaper","sidebar":"tutorialSidebar"},"work_in_progress":{"id":"work_in_progress","title":"work_in_progress","description":"{n.d(t,{Zo:()=>p,kt:()=>m});var o=n(7294);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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=o.createContext({}),d=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=d(e.components);return o.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=d(n),m=a,h=u["".concat(s,".").concat(m)]||u[m]||c[m]||i;return n?o.createElement(h,r(r({ref:t},p),{},{components:n})):o.createElement(h,r({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,r=new Array(i);r[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:a,r[1]=l;for(var d=2;d{n.r(t),n.d(t,{contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var o=n(7462),a=(n(7294),n(3905));const i={title:"Joining Testnet",id:"join"},r=void 0,l={unversionedId:"functionyard/join",id:"functionyard/join",title:"Joining Testnet",description:"Joining the Testnet",source:"@site/docs/functionyard/join.md",sourceDirName:"functionyard",slug:"/functionyard/join",permalink:"/functionyard/join",tags:[],version:"current",frontMatter:{title:"Joining Testnet",id:"join"},sidebar:"tutorialSidebar",previous:{title:"FxBlox App Setup",permalink:"/functionyard/fxblox-app"},next:{title:"Token in Metamask",permalink:"/functionyard/metamask"}},s=[{value:"Joining the Testnet",id:"joining-the-testnet",children:[],level:2},{value:"Add Multiple FxBloxes",id:"add-multiple-fxbloxes",children:[{value:"Bought during Indiegogo campaign",id:"bought-during-indiegogo-campaign",children:[],level:3},{value:"Bought Blox outside of campaign",id:"bought-blox-outside-of-campaign",children:[],level:3}],level:2}],d={toc:s};function p(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,o.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"joining-the-testnet"},"Joining the Testnet"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"In the ",(0,a.kt)("inlineCode",{parentName:"li"},"FxBlox")," App, go to the ",(0,a.kt)("inlineCode",{parentName:"li"},"Users")," Page and click ",(0,a.kt)("inlineCode",{parentName:"li"},"Join Testnet"),(0,a.kt)("div",{class:"text--center"},(0,a.kt)("img",{src:"/img/fxyard-network/join-testnet.png",style:{width:400}})))),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Or you can manually visit the testnet page at ",(0,a.kt)("a",{parentName:"li",href:"https://fund.functionyard.fula.network"},"Functionyard Testnet")," and enter your Indiegogo campaign order details and account id from the Blox app."),(0,a.kt)("li",{parentName:"ul"},"If the ",(0,a.kt)("inlineCode",{parentName:"li"},"Account")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"Join")," buttons are greyed out, it means the blox is still syncing the chain data. You can check the progress of sync in the ",(0,a.kt)("inlineCode",{parentName:"li"},"Settings -> Pools")," page.")),(0,a.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",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"}))),"info")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},'If after the sync is over you get any errors, you can tap on the tower icon in the home page and click "Reset Chain Data"'))),(0,a.kt)("ol",{start:2},(0,a.kt)("li",{parentName:"ol"},"In the FxBlox app, go to ",(0,a.kt)("inlineCode",{parentName:"li"},"Settings > Pools"),". Join a pool nearest to your city. Choose the one closest to you from the list. Please note, that if you choose a pool that is far from you, the request will automatically rejected by the system.")),(0,a.kt)("div",{class:"text--center"},(0,a.kt)("img",{src:"/img/fxyard-network/join-btn.png",style:{width:400}})),(0,a.kt)("ol",{start:3},(0,a.kt)("li",{parentName:"ol"},"Wait for approval from 5 pool members (may take up to 2 hours right now).")),(0,a.kt)("div",{class:"text--center"},(0,a.kt)("img",{src:"/img/fxyard-network/cancel-btn.png",style:{width:400}})),(0,a.kt)("ol",{start:4},(0,a.kt)("li",{parentName:"ol"},'Once approved, the pool button changes to "Leave". You can now start storing and earning. You should start using FxFotos app to maximize earnings.')),(0,a.kt)("div",{class:"text--center"},(0,a.kt)("img",{src:"/img/fxyard-network/leave-btn.png",style:{width:400}})),(0,a.kt)("h2",{id:"add-multiple-fxbloxes"},"Add Multiple FxBloxes"),(0,a.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",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"}))),"info")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"If you do not already have all Bloxes added in your app, then checkout ",(0,a.kt)("a",{parentName:"p",href:"/functionyard/fxblox-app#add-multiple-fxbloxes"},"this guide")," on how to add them."))),(0,a.kt)("p",null,"Every FxBlox is not automatically enrolled in the testnet. The Blox that is showing in the ",(0,a.kt)("inlineCode",{parentName:"p"},"Blox"),' tab, is the "Active" Blox which populates the rest of the settings. There are two scenarios that you may fall under.'),(0,a.kt)("h3",{id:"bought-during-indiegogo-campaign"},"Bought during Indiegogo campaign"),(0,a.kt)("p",null,"To add any extra Bloxes to the testnet, you need to:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Make sure you have already followed ",(0,a.kt)("a",{parentName:"li",href:"#joining-the-testnet"},"the steps above")," to add your first Blox to the testnet. "),(0,a.kt)("li",{parentName:"ol"},"Swipe left/right to display the next Blox you want to add."),(0,a.kt)("li",{parentName:"ol"},"Go to ",(0,a.kt)("inlineCode",{parentName:"li"},"Settings")," -> ",(0,a.kt)("inlineCode",{parentName:"li"},"Pool"),", select the testnet pool closest to you."),(0,a.kt)("li",{parentName:"ol"},"Repeat steps 2-3 for any following Blox.")),(0,a.kt)("h3",{id:"bought-blox-outside-of-campaign"},"Bought Blox outside of campaign"),(0,a.kt)("p",null,"If you bought a Blox from the available units on the ",(0,a.kt)("a",{parentName:"p",href:"https://shop.fx.land/"},"shop.fx.land")," or a second-hand resellers site. Then you will need to send a message to ",(0,a.kt)("a",{parentName:"p",href:"mailto:sales@fx.land"},"sales@fx.land")," to have your ",(0,a.kt)("inlineCode",{parentName:"p"},"Blox Account ID")," added to testnet backend. You ",(0,a.kt)("inlineCode",{parentName:"p"},"Blox Account ID")," is shown under the ",(0,a.kt)("inlineCode",{parentName:"p"},"User")," Tab after completing setup."),(0,a.kt)("p",null,"After this has been completed, you will have to wait a couple hours for the testnet to sync and then yo uwill be able to join."))}p.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[815],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var o=n(7294);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(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=o.createContext({}),d=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},p=function(e){var t=d(e.components);return o.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=d(n),m=a,h=u["".concat(s,".").concat(m)]||u[m]||c[m]||i;return n?o.createElement(h,r(r({ref:t},p),{},{components:n})):o.createElement(h,r({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,r=new Array(i);r[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:a,r[1]=l;for(var d=2;d{n.r(t),n.d(t,{contentTitle:()=>r,default:()=>p,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var o=n(7462),a=(n(7294),n(3905));const i={title:"Joining Testnet",id:"join"},r=void 0,l={unversionedId:"functionyard/join",id:"functionyard/join",title:"Joining Testnet",description:"Joining the Testnet",source:"@site/docs/functionyard/join.md",sourceDirName:"functionyard",slug:"/functionyard/join",permalink:"/functionyard/join",tags:[],version:"current",frontMatter:{title:"Joining Testnet",id:"join"},sidebar:"tutorialSidebar",previous:{title:"FxBlox App Setup",permalink:"/functionyard/fxblox-app"},next:{title:"Token in Metamask",permalink:"/functionyard/metamask"}},s=[{value:"Joining the Testnet",id:"joining-the-testnet",children:[],level:2},{value:"Add Multiple FxBloxes",id:"add-multiple-fxbloxes",children:[{value:"Bought during Indiegogo campaign",id:"bought-during-indiegogo-campaign",children:[],level:3},{value:"Bought Blox outside of campaign",id:"bought-blox-outside-of-campaign",children:[],level:3}],level:2}],d={toc:s};function p(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,o.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"joining-the-testnet"},"Joining the Testnet"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"In the ",(0,a.kt)("inlineCode",{parentName:"li"},"FxBlox")," App, go to the ",(0,a.kt)("inlineCode",{parentName:"li"},"Users")," Page and click ",(0,a.kt)("inlineCode",{parentName:"li"},"Join Testnet"),(0,a.kt)("div",{class:"text--center"},(0,a.kt)("img",{src:"/img/fxyard-network/join-testnet.png",style:{width:400}})))),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Or you can manually visit the testnet page at ",(0,a.kt)("a",{parentName:"li",href:"https://fund.functionyard.fula.network"},"Functionyard Testnet")," and enter your Indiegogo campaign order details and account id from the Blox app."),(0,a.kt)("li",{parentName:"ul"},"If the ",(0,a.kt)("inlineCode",{parentName:"li"},"Account")," and ",(0,a.kt)("inlineCode",{parentName:"li"},"Join")," buttons are greyed out, it means the blox is still syncing the chain data. You can check the progress of sync in the ",(0,a.kt)("inlineCode",{parentName:"li"},"Settings -> Pools")," page.")),(0,a.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",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"}))),"info")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},'If after the sync is over you get any errors, you can tap on the tower icon in the home page and click "Reset Chain Data"'))),(0,a.kt)("ol",{start:2},(0,a.kt)("li",{parentName:"ol"},"In the FxBlox app, go to ",(0,a.kt)("inlineCode",{parentName:"li"},"Settings > Pools"),". Join a pool nearest to your city. Choose the one closest to you from the list. Please note, that if you choose a pool that is far from you, the request will automatically rejected by the system.")),(0,a.kt)("div",{class:"text--center"},(0,a.kt)("img",{src:"/img/fxyard-network/join-btn.png",style:{width:400}})),(0,a.kt)("ol",{start:3},(0,a.kt)("li",{parentName:"ol"},"Wait for approval from 5 pool members (may take up to 2 hours right now).")),(0,a.kt)("div",{class:"text--center"},(0,a.kt)("img",{src:"/img/fxyard-network/cancel-btn.png",style:{width:400}})),(0,a.kt)("ol",{start:4},(0,a.kt)("li",{parentName:"ol"},'Once approved, the pool button changes to "Leave". You can now start storing and earning. You should start using FxFotos app to maximize earnings.')),(0,a.kt)("div",{class:"text--center"},(0,a.kt)("img",{src:"/img/fxyard-network/leave-btn.png",style:{width:400}})),(0,a.kt)("h2",{id:"add-multiple-fxbloxes"},"Add Multiple FxBloxes"),(0,a.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",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"}))),"info")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"If you do not already have all Bloxes added in your app, then checkout ",(0,a.kt)("a",{parentName:"p",href:"/functionyard/fxblox-app#add-multiple-fxbloxes"},"this guide")," on how to add them."))),(0,a.kt)("p",null,"Every FxBlox is not automatically enrolled in the testnet. The Blox that is showing in the ",(0,a.kt)("inlineCode",{parentName:"p"},"Blox"),' tab, is the "Active" Blox which populates the rest of the settings. There are two scenarios that you may fall under.'),(0,a.kt)("h3",{id:"bought-during-indiegogo-campaign"},"Bought during Indiegogo campaign"),(0,a.kt)("p",null,"To add any extra Bloxes to the testnet, you need to:"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"Make sure you have already followed ",(0,a.kt)("a",{parentName:"li",href:"#joining-the-testnet"},"the steps above")," to add your first Blox to the testnet. "),(0,a.kt)("li",{parentName:"ol"},"Swipe left/right to display the next Blox you want to add."),(0,a.kt)("li",{parentName:"ol"},"Go to ",(0,a.kt)("inlineCode",{parentName:"li"},"Settings")," -> ",(0,a.kt)("inlineCode",{parentName:"li"},"Pool"),", select the testnet pool closest to you."),(0,a.kt)("li",{parentName:"ol"},"Repeat steps 2-3 for any following Blox.")),(0,a.kt)("h3",{id:"bought-blox-outside-of-campaign"},"Bought Blox outside of campaign"),(0,a.kt)("p",null,"If you bought a Blox from the available units on the ",(0,a.kt)("a",{parentName:"p",href:"https://shop.fx.land/"},"shop.fx.land")," or a second-hand resellers site. Then you will need to send a message to ",(0,a.kt)("a",{parentName:"p",href:"mailto:sales@fx.land"},"sales@fx.land")," to have your ",(0,a.kt)("inlineCode",{parentName:"p"},"Blox Account ID")," added to testnet backend. You ",(0,a.kt)("inlineCode",{parentName:"p"},"Blox Account ID")," is shown under the ",(0,a.kt)("inlineCode",{parentName:"p"},"User")," Tab after completing setup."),(0,a.kt)("p",null,"After this has been completed, you will have to wait a couple hours for the testnet to sync and then you will be able to join."))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.a6b3114a.js b/assets/js/main.a6b3114a.js new file mode 100644 index 00000000..2dfbb2d0 --- /dev/null +++ b/assets/js/main.a6b3114a.js @@ -0,0 +1,2 @@ +/*! For license information please see main.a6b3114a.js.LICENSE.txt */ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[179],{9782:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r={deploymentBranch:"main",title:"Functionland",tagline:"",url:"https://functionland.github.io",baseUrl:"/",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",favicon:"img/favicon.webp",organizationName:"functionland",projectName:"functionland.github.io",trailingSlash:!1,presets:[["classic",{docs:{routeBasePath:"/",sidebarPath:"/home/runner/work/docs/docs/sidebars.js"},theme:{customCss:"/home/runner/work/docs/docs/src/css/custom.css"}}]],themeConfig:{navbar:{title:"Functionland",logo:{alt:"functionland logo",src:"img/logo.webp"},items:[{href:"https://github.com/functionland",label:"GitHub",position:"right"}],hideOnScroll:!1},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:[]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1,switchConfig:{darkIcon:"\ud83c\udf1c",darkIconStyle:{},lightIcon:"\ud83c\udf1e",lightIconStyle:{}}},docs:{versionPersistence:"localStorage"},metadata:[],hideableSidebar:!1,autoCollapseSidebarCategories:!1,tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],titleDelimiter:"|",noIndex:!1}},2067:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(8356),l=n.n(i);function s(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{align:"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%"}},r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("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"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}const c=JSON.parse('{"/blog/archive-f4c":{"component":"9e4087bc","archive":"b2f554cd"},"/-244":{"component":"1be78505","versionMetadata":"935f2afb"},"/-98e":{"component":"17896441","content":"c377a04b"},"/api-intro-a34":{"component":"17896441","content":"74636f36"},"/api/client-instance-b3a":{"component":"17896441","content":"313672b0"},"/api/file-api-90c":{"component":"17896441","content":"f7d1f36e"},"/api/graph-api-7ac":{"component":"17896441","content":"00e8b4a4"},"/blockchain/blockchain-intro-c9b":{"component":"17896441","content":"395b74f0"},"/blockchain/recipes-28d":{"component":"17896441","content":"0ab2a066"},"/blockchain/Recipes/Account-000":{"component":"17896441","content":"831e3b29"},"/blockchain/Recipes/Asset-4e2":{"component":"17896441","content":"7ad88a01"},"/blockchain/Recipes/Bag-832":{"component":"17896441","content":"39968117"},"/blockchain/Recipes/Bundle-0ad":{"component":"17896441","content":"72fa51da"},"/blockchain/Recipes/Challenges-44d":{"component":"17896441","content":"ffb0c1a3"},"/blockchain/Recipes/Claims-7a5":{"component":"17896441","content":"c7806b8e"},"/blockchain/Recipes/Manifest-c98":{"component":"17896441","content":"8ef82ac0"},"/blockchain/Recipes/Market-446":{"component":"17896441","content":"952b5e81"},"/blockchain/Recipes/Pool-1e5":{"component":"17896441","content":"2a6dab62"},"/blockchain/services-0b4":{"component":"17896441","content":"b48a96ee"},"/blockchain/Services/BuildNode-eb6":{"component":"17896441","content":"79f59562"},"/blockchain/Services/Explorer-67a":{"component":"17896441","content":"0f3c4d9e"},"/blockchain/Services/FulaContractAPI-8b5":{"component":"17896441","content":"32415a15"},"/blockchain/Services/Node-038":{"component":"17896441","content":"6f0e7e6f"},"/blockchain/Services/NodeAPI-078":{"component":"17896441","content":"7dbfe80c"},"/blockchain/Services/ProofEngine-45c":{"component":"17896441","content":"bc2ced7b"},"/blockchain/Services/RunNode-c20":{"component":"17896441","content":"f0ae19a0"},"/blockchain/Services/Status-5e5":{"component":"17896441","content":"f277957b"},"/components/WorkInProgress-c06":{"component":"17896441","content":"e58963f1"},"/design/encryption-763":{"component":"17896441","content":"37866fe0"},"/design/test-86a":{"component":"17896441","content":"c4cee058"},"/functionyard-7ac":{"component":"17896441","content":"533b8a8b"},"/functionyard/add-storage-9cd":{"component":"17896441","content":"1299eea8"},"/functionyard/dapps-c9f":{"component":"17896441","content":"f9725412"},"/functionyard/fxblox-app-6ce":{"component":"17896441","content":"799a1b22"},"/functionyard/fxfotos-a2c":{"component":"17896441","content":"48a74962"},"/functionyard/hardware/fxblox-hardware-90a":{"component":"17896441","content":"dbaeb152"},"/functionyard/hardware/fxblox-hardware-rk1-f1c":{"component":"17896441","content":"aa32ca26"},"/functionyard/hardware/fxblox-hardware-rpi-115":{"component":"17896441","content":"1c5b444a"},"/functionyard/hardware/fxblox-hardware-rpi-reimage-bc0":{"component":"17896441","content":"7e4aa304"},"/functionyard/join-cd1":{"component":"17896441","content":"a98adb27"},"/functionyard/metamask-739":{"component":"17896441","content":"b7a78bd3"},"/getting-started-c9b":{"component":"17896441","content":"d589d3a7"},"/getting-started/box-setup-3d2":{"component":"17896441","content":"da49a82e"},"/getting-started/fula-client-1d1":{"component":"17896441","content":"1cc0488f"},"/getting-started/rpi-setup-19a":{"component":"17896441","content":"63c3a5f4"},"/getting-started/using-samples-a3e":{"component":"17896441","content":"17e75398"},"/introduction/bas-0ae":{"component":"17896441","content":"f9ddae1b"},"/introduction/blox-ab0":{"component":"17896441","content":"748a29f1"},"/introduction/contribute-850":{"component":"17896441","content":"a2977611"},"/introduction/contribute/contribution-tutorial-2b9":{"component":"17896441","content":"96034ec1"},"/introduction/contribute/styling-a1e":{"component":"17896441","content":"2e7550da"},"/introduction/contribute/writing-0dd":{"component":"17896441","content":"ca2fca4c"},"/introduction/fula-032":{"component":"17896441","content":"6c7613ed"},"/mvp-308":{"component":"17896441","content":"b0d6fa48"},"/mvp/admin-reporting-c99":{"component":"17896441","content":"eb64892a"},"/mvp/box-admin-577":{"component":"17896441","content":"27873332"},"/mvp/forgot-password-e97":{"component":"17896441","content":"ec73ac1d"},"/mvp/fotos-b03":{"component":"17896441","content":"f3ebba76"},"/mvp/fotos/availability-bfb":{"component":"17896441","content":"5a04bf5c"},"/mvp/fotos/backup-481":{"component":"17896441","content":"f2d4d1e7"},"/mvp/fotos/setup-8f6":{"component":"17896441","content":"c9e48236"},"/mvp/fotos/sharing-059":{"component":"17896441","content":"f19b4864"},"/mvp/my-account-79c":{"component":"17896441","content":"8a24b94f"},"/mvp/pools-b04":{"component":"17896441","content":"e9a5100a"},"/mvp/pools/storage-provide-eaf":{"component":"17896441","content":"b80db04d"},"/mvp/privacy-dashboard-4e1":{"component":"17896441","content":"256e3dd8"},"/mvp/questions-497":{"component":"17896441","content":"7e50ec22"},"/mvp/technical-questions-e66":{"component":"17896441","content":"07401f6a"},"/mvp/unboxing-ef3":{"component":"17896441","content":"4321c919"},"/reference-api-669":{"component":"17896441","content":"18f5500a"},"/release/testnet-alpha-9f4":{"component":"17896441","content":"be614d59"},"/RFCs/document-syncing-9f5":{"component":"17896441","content":"68453654"},"/RFCs/fula-sec-fd9":{"component":"17896441","content":"eb9f70f2"},"/RFCs/fula-sec/did-357":{"component":"17896441","content":"665bb1c2"},"/RFCs/fula-sec/encryption-93a":{"component":"17896441","content":"01430d47"},"/RFCs/personal-data-reserve-557":{"component":"17896441","content":"bd78fdc3"},"/RFCs/private-network-f3c":{"component":"17896441","content":"649c7e91"},"/RFCs/replication-ea8":{"component":"17896441","content":"ef6fc643"},"/RFCs/rfc-process-0ae":{"component":"17896441","content":"ec9cc4dd"},"/whitepaper-fae":{"component":"17896441","content":"736647ea"},"/work_in_progress-86d":{"component":"17896441","content":"2b0a0def"}}'),u={"00e8b4a4":[()=>n.e(7823).then(n.bind(n,1786)),"@site/docs/api/graph.md",1786],"01430d47":[()=>n.e(1752).then(n.bind(n,2938)),"@site/docs/RFCs/fula-sec/encryption.md",2938],"07401f6a":[()=>n.e(9104).then(n.bind(n,5196)),"@site/docs/mvp/technical_questions.md",5196],"0ab2a066":[()=>n.e(5065).then(n.bind(n,2673)),"@site/docs/blockchain/recipes.md",2673],"0f3c4d9e":[()=>n.e(7648).then(n.bind(n,1310)),"@site/docs/blockchain/Services/Explorer.md",1310],"1299eea8":[()=>Promise.all([n.e(1068),n.e(2217)]).then(n.bind(n,3399)),"@site/docs/functionyard/add-storage.md",3399],17896441:[()=>Promise.all([n.e(532),n.e(7918)]).then(n.bind(n,8406)),"@theme/DocItem",8406],"17e75398":[()=>n.e(3300).then(n.bind(n,3530)),"@site/docs/getting-started/using-samples.md",3530],"18f5500a":[()=>n.e(6936).then(n.bind(n,3312)),"@site/docs/reference-api.md",3312],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,7465)),"@theme/DocPage",7465],"1c5b444a":[()=>n.e(3693).then(n.bind(n,8456)),"@site/docs/functionyard/hardware/fxblox-hardware-rpi.md",8456],"1cc0488f":[()=>n.e(1919).then(n.bind(n,8478)),"@site/docs/getting-started/fula-client.md",8478],"256e3dd8":[()=>n.e(8432).then(n.bind(n,8398)),"@site/docs/mvp/privacy-dashboard.md",8398],27873332:[()=>n.e(1142).then(n.bind(n,5258)),"@site/docs/mvp/box-admin.md",5258],"2a6dab62":[()=>n.e(7738).then(n.bind(n,1298)),"@site/docs/blockchain/Recipes/Pool.md",1298],"2b0a0def":[()=>n.e(2794).then(n.bind(n,7156)),"@site/docs/work_in_progress.mdx",7156],"2e7550da":[()=>n.e(2672).then(n.bind(n,2922)),"@site/docs/introduction/contribute/styling-guide.md",2922],"313672b0":[()=>n.e(3780).then(n.bind(n,8421)),"@site/docs/api/client-instance.md",8421],"32415a15":[()=>n.e(5213).then(n.bind(n,8976)),"@site/docs/blockchain/Services/FulaContractAPI.md",8976],"37866fe0":[()=>n.e(5194).then(n.bind(n,1974)),"@site/docs/design/encryption.md",1974],"395b74f0":[()=>n.e(1969).then(n.bind(n,8194)),"@site/docs/blockchain/blockchain-intro.md",8194],39968117:[()=>n.e(553).then(n.bind(n,6464)),"@site/docs/blockchain/Recipes/Bag.md",6464],"4321c919":[()=>n.e(710).then(n.bind(n,1210)),"@site/docs/mvp/unboxing.md",1210],"48a74962":[()=>n.e(3334).then(n.bind(n,3813)),"@site/docs/functionyard/fxfotos.md",3813],"533b8a8b":[()=>n.e(9124).then(n.bind(n,1581)),"@site/docs/functionyard/index.md",1581],"5a04bf5c":[()=>n.e(4492).then(n.bind(n,7278)),"@site/docs/mvp/fotos/availability.md",7278],"63c3a5f4":[()=>n.e(2696).then(n.bind(n,7795)),"@site/docs/getting-started/rpi-setup.md",7795],"649c7e91":[()=>n.e(7877).then(n.bind(n,7691)),"@site/docs/RFCs/private-network.md",7691],"665bb1c2":[()=>n.e(1082).then(n.bind(n,3713)),"@site/docs/RFCs/fula-sec/did.md",3713],68453654:[()=>n.e(2746).then(n.bind(n,3392)),"@site/docs/RFCs/document-syncing.md",3392],"6c7613ed":[()=>n.e(3009).then(n.bind(n,372)),"@site/docs/introduction/fula.md",372],"6f0e7e6f":[()=>n.e(5153).then(n.bind(n,7866)),"@site/docs/blockchain/Services/Node.md",7866],"72fa51da":[()=>n.e(1648).then(n.bind(n,9413)),"@site/docs/blockchain/Recipes/Bundle.md",9413],"736647ea":[()=>n.e(5490).then(n.bind(n,9386)),"@site/docs/whitepaper/whitepaper.md",9386],"74636f36":[()=>n.e(5192).then(n.bind(n,5361)),"@site/docs/api-intro.md",5361],"748a29f1":[()=>n.e(3649).then(n.bind(n,6990)),"@site/docs/introduction/blox.md",6990],"799a1b22":[()=>n.e(7878).then(n.bind(n,9053)),"@site/docs/functionyard/fxblox-app.md",9053],"79f59562":[()=>n.e(5389).then(n.bind(n,7770)),"@site/docs/blockchain/Services/BuildNode.md",7770],"7ad88a01":[()=>n.e(7868).then(n.bind(n,4309)),"@site/docs/blockchain/Recipes/Asset.md",4309],"7dbfe80c":[()=>n.e(6208).then(n.bind(n,1283)),"@site/docs/blockchain/Services/NodeAPI.md",1283],"7e4aa304":[()=>n.e(8899).then(n.bind(n,5176)),"@site/docs/functionyard/hardware/fxblox-hardware-rpi-reimage.md",5176],"7e50ec22":[()=>n.e(6358).then(n.bind(n,3066)),"@site/docs/mvp/questions.md",3066],"831e3b29":[()=>n.e(5326).then(n.bind(n,4270)),"@site/docs/blockchain/Recipes/Account.md",4270],"8a24b94f":[()=>n.e(3854).then(n.bind(n,2334)),"@site/docs/mvp/my-account.md",2334],"8ef82ac0":[()=>n.e(5006).then(n.bind(n,7550)),"@site/docs/blockchain/Recipes/Manifest.md",7550],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"952b5e81":[()=>n.e(4205).then(n.bind(n,5229)),"@site/docs/blockchain/Recipes/Market.md",5229],"96034ec1":[()=>n.e(2686).then(n.bind(n,5321)),"@site/docs/introduction/contribute/contribution-tutorial.md",5321],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3012)),"@theme/BlogArchivePage",3012],a2977611:[()=>n.e(2356).then(n.bind(n,2142)),"@site/docs/introduction/contribute/contribute.md",2142],a98adb27:[()=>n.e(815).then(n.bind(n,7377)),"@site/docs/functionyard/join.md",7377],aa32ca26:[()=>n.e(6502).then(n.bind(n,730)),"@site/docs/functionyard/hardware/fxblox-hardware-rk1.md",730],b0d6fa48:[()=>n.e(3557).then(n.bind(n,3890)),"@site/docs/mvp.md",3890],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,10,19)),"~blog/default/blog-archive-80c.json",10],b48a96ee:[()=>n.e(8010).then(n.bind(n,4171)),"@site/docs/blockchain/services .md",4171],b7a78bd3:[()=>n.e(1413).then(n.bind(n,8336)),"@site/docs/functionyard/metamask.md",8336],b80db04d:[()=>n.e(8489).then(n.bind(n,1660)),"@site/docs/mvp/pools/storage-provide.md",1660],bc2ced7b:[()=>n.e(3772).then(n.bind(n,9834)),"@site/docs/blockchain/Services/ProofEngine.md",9834],bd78fdc3:[()=>n.e(8839).then(n.bind(n,8692)),"@site/docs/RFCs/personal-data-reserve.md",8692],be614d59:[()=>n.e(2523).then(n.bind(n,6169)),"@site/docs/release/testnet-alpha.md",6169],c377a04b:[()=>n.e(6971).then(n.bind(n,1269)),"@site/docs/index.md",1269],c4cee058:[()=>n.e(4566).then(n.bind(n,9277)),"@site/docs/design/test.md",9277],c7806b8e:[()=>n.e(4100).then(n.bind(n,2881)),"@site/docs/blockchain/Recipes/Claims.md",2881],c9e48236:[()=>n.e(1564).then(n.bind(n,4895)),"@site/docs/mvp/fotos/setup.md",4895],ca2fca4c:[()=>n.e(7170).then(n.bind(n,4439)),"@site/docs/introduction/contribute/writing-guide.md",4439],d589d3a7:[()=>n.e(7162).then(n.bind(n,9390)),"@site/docs/getting-started.md",9390],da49a82e:[()=>n.e(2027).then(n.bind(n,4507)),"@site/docs/getting-started/box-setup.md",4507],dbaeb152:[()=>Promise.all([n.e(532),n.e(1e3)]).then(n.bind(n,8605)),"@site/docs/functionyard/hardware/fxblox-hardware.mdx",8605],e58963f1:[()=>n.e(2369).then(n.bind(n,5681)),"@site/docs/components/WorkInProgress.mdx",5681],e9a5100a:[()=>n.e(6950).then(n.bind(n,42)),"@site/docs/mvp/pools.md",42],eb64892a:[()=>n.e(1565).then(n.bind(n,7841)),"@site/docs/mvp/usage.md",7841],eb9f70f2:[()=>n.e(8930).then(n.bind(n,3763)),"@site/docs/RFCs/fula-sec.md",3763],ec73ac1d:[()=>n.e(6235).then(n.bind(n,7043)),"@site/docs/mvp/forgot-password.md",7043],ec9cc4dd:[()=>n.e(1973).then(n.bind(n,9201)),"@site/docs/RFCs/rfc-process.md",9201],ef6fc643:[()=>n.e(5507).then(n.bind(n,1259)),"@site/docs/RFCs/replication.md",1259],f0ae19a0:[()=>n.e(7118).then(n.bind(n,8700)),"@site/docs/blockchain/Services/RunNode.md",8700],f19b4864:[()=>n.e(771).then(n.bind(n,4582)),"@site/docs/mvp/fotos/sharing.md",4582],f277957b:[()=>n.e(4004).then(n.bind(n,6950)),"@site/docs/blockchain/Services/Status.md",6950],f2d4d1e7:[()=>n.e(8265).then(n.bind(n,3465)),"@site/docs/mvp/fotos/backup.md",3465],f3ebba76:[()=>n.e(8358).then(n.bind(n,7913)),"@site/docs/mvp/fotos.md",7913],f7d1f36e:[()=>n.e(3616).then(n.bind(n,6642)),"@site/docs/api/file.md",6642],f9725412:[()=>n.e(6938).then(n.bind(n,7239)),"@site/docs/functionyard/dapps.md",7239],f9ddae1b:[()=>n.e(1646).then(n.bind(n,749)),"@site/docs/introduction/bas.md",749],ffb0c1a3:[()=>n.e(1989).then(n.bind(n,1203)),"@site/docs/blockchain/Recipes/Challenges.md",1203]};const d=function(e){const t={};return function e(n,r){Object.keys(n).forEach((a=>{const o=n[a],i=r?`${r}.${a}`:a;var l;"object"==typeof(l=o)&&l&&Object.keys(l).length>0?e(o,i):t[i]=o}))}(e),t};const p=function(e,t){if("*"===e)return l()({loading:s,loader:()=>n.e(4608).then(n.bind(n,4608))});const a=c[`${e}-${t}`],o=[],i=[],p={},f=d(a);return Object.keys(f).forEach((e=>{const t=u[f[e]];t&&(p[e]=t[0],o.push(t[1]),i.push(t[2]))})),l().Map({loading:s,loader:p,modules:o,webpack:()=>i,render:(e,t)=>{const n=JSON.parse(JSON.stringify(a));Object.keys(e).forEach((t=>{let r=n;const a=t.split(".");for(let e=0;e"default"!==e));o&&o.length&&o.forEach((n=>{r[a[a.length-1]][n]=e[t][n]}))}));const o=n.component;return delete n.component,r.createElement(o,{...n,...t})}})},f=[{path:"/blog/archive",component:p("/blog/archive","f4c"),exact:!0},{path:"/",component:p("/","244"),routes:[{path:"/",component:p("/","98e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/api-intro",component:p("/api-intro","a34"),exact:!0,sidebar:"tutorialSidebar"},{path:"/api/client-instance",component:p("/api/client-instance","b3a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/api/file-api",component:p("/api/file-api","90c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/api/graph-api",component:p("/api/graph-api","7ac"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/blockchain-intro",component:p("/blockchain/blockchain-intro","c9b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/recipes",component:p("/blockchain/recipes","28d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Recipes/Account",component:p("/blockchain/Recipes/Account","000"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Recipes/Asset",component:p("/blockchain/Recipes/Asset","4e2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Recipes/Bag",component:p("/blockchain/Recipes/Bag","832"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Recipes/Bundle",component:p("/blockchain/Recipes/Bundle","0ad"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Recipes/Challenges",component:p("/blockchain/Recipes/Challenges","44d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Recipes/Claims",component:p("/blockchain/Recipes/Claims","7a5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Recipes/Manifest",component:p("/blockchain/Recipes/Manifest","c98"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Recipes/Market",component:p("/blockchain/Recipes/Market","446"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Recipes/Pool",component:p("/blockchain/Recipes/Pool","1e5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/services",component:p("/blockchain/services","0b4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Services/BuildNode",component:p("/blockchain/Services/BuildNode","eb6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Services/Explorer",component:p("/blockchain/Services/Explorer","67a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Services/FulaContractAPI",component:p("/blockchain/Services/FulaContractAPI","8b5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Services/Node",component:p("/blockchain/Services/Node","038"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Services/NodeAPI",component:p("/blockchain/Services/NodeAPI","078"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Services/ProofEngine",component:p("/blockchain/Services/ProofEngine","45c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Services/RunNode",component:p("/blockchain/Services/RunNode","c20"),exact:!0,sidebar:"tutorialSidebar"},{path:"/blockchain/Services/Status",component:p("/blockchain/Services/Status","5e5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/components/WorkInProgress",component:p("/components/WorkInProgress","c06"),exact:!0},{path:"/design/encryption",component:p("/design/encryption","763"),exact:!0},{path:"/design/test",component:p("/design/test","86a"),exact:!0},{path:"/functionyard",component:p("/functionyard","7ac"),exact:!0,sidebar:"tutorialSidebar"},{path:"/functionyard/add-storage",component:p("/functionyard/add-storage","9cd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/functionyard/dapps",component:p("/functionyard/dapps","c9f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/functionyard/fxblox-app",component:p("/functionyard/fxblox-app","6ce"),exact:!0,sidebar:"tutorialSidebar"},{path:"/functionyard/fxfotos",component:p("/functionyard/fxfotos","a2c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/functionyard/hardware/fxblox-hardware",component:p("/functionyard/hardware/fxblox-hardware","90a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/functionyard/hardware/fxblox-hardware-rk1",component:p("/functionyard/hardware/fxblox-hardware-rk1","f1c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/functionyard/hardware/fxblox-hardware-rpi",component:p("/functionyard/hardware/fxblox-hardware-rpi","115"),exact:!0,sidebar:"tutorialSidebar"},{path:"/functionyard/hardware/fxblox-hardware-rpi-reimage",component:p("/functionyard/hardware/fxblox-hardware-rpi-reimage","bc0"),exact:!0},{path:"/functionyard/join",component:p("/functionyard/join","cd1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/functionyard/metamask",component:p("/functionyard/metamask","739"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started",component:p("/getting-started","c9b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/box-setup",component:p("/getting-started/box-setup","3d2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/getting-started/fula-client",component:p("/getting-started/fula-client","1d1"),exact:!0},{path:"/getting-started/rpi-setup",component:p("/getting-started/rpi-setup","19a"),exact:!0},{path:"/getting-started/using-samples",component:p("/getting-started/using-samples","a3e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/introduction/bas",component:p("/introduction/bas","0ae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/introduction/blox",component:p("/introduction/blox","ab0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/introduction/contribute",component:p("/introduction/contribute","850"),exact:!0,sidebar:"tutorialSidebar"},{path:"/introduction/contribute/contribution-tutorial",component:p("/introduction/contribute/contribution-tutorial","2b9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/introduction/contribute/styling",component:p("/introduction/contribute/styling","a1e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/introduction/contribute/writing",component:p("/introduction/contribute/writing","0dd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/introduction/fula",component:p("/introduction/fula","032"),exact:!0,sidebar:"tutorialSidebar"},{path:"/mvp",component:p("/mvp","308"),exact:!0,sidebar:"mvpSidebar"},{path:"/mvp/admin-reporting",component:p("/mvp/admin-reporting","c99"),exact:!0},{path:"/mvp/box-admin",component:p("/mvp/box-admin","577"),exact:!0},{path:"/mvp/forgot-password",component:p("/mvp/forgot-password","e97"),exact:!0},{path:"/mvp/fotos",component:p("/mvp/fotos","b03"),exact:!0,sidebar:"mvpSidebar"},{path:"/mvp/fotos/availability",component:p("/mvp/fotos/availability","bfb"),exact:!0},{path:"/mvp/fotos/backup",component:p("/mvp/fotos/backup","481"),exact:!0,sidebar:"mvpSidebar"},{path:"/mvp/fotos/setup",component:p("/mvp/fotos/setup","8f6"),exact:!0,sidebar:"mvpSidebar"},{path:"/mvp/fotos/sharing",component:p("/mvp/fotos/sharing","059"),exact:!0,sidebar:"mvpSidebar"},{path:"/mvp/my-account",component:p("/mvp/my-account","79c"),exact:!0},{path:"/mvp/pools",component:p("/mvp/pools","b04"),exact:!0,sidebar:"mvpSidebar"},{path:"/mvp/pools/storage-provide",component:p("/mvp/pools/storage-provide","eaf"),exact:!0,sidebar:"mvpSidebar"},{path:"/mvp/privacy-dashboard",component:p("/mvp/privacy-dashboard","4e1"),exact:!0},{path:"/mvp/questions",component:p("/mvp/questions","497"),exact:!0},{path:"/mvp/technical-questions",component:p("/mvp/technical-questions","e66"),exact:!0},{path:"/mvp/unboxing",component:p("/mvp/unboxing","ef3"),exact:!0},{path:"/reference-api",component:p("/reference-api","669"),exact:!0,sidebar:"tutorialSidebar"},{path:"/release/testnet-alpha",component:p("/release/testnet-alpha","9f4"),exact:!0},{path:"/RFCs/document-syncing",component:p("/RFCs/document-syncing","9f5"),exact:!0,sidebar:"tutorialSidebar"},{path:"/RFCs/fula-sec",component:p("/RFCs/fula-sec","fd9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/RFCs/fula-sec/did",component:p("/RFCs/fula-sec/did","357"),exact:!0,sidebar:"tutorialSidebar"},{path:"/RFCs/fula-sec/encryption",component:p("/RFCs/fula-sec/encryption","93a"),exact:!0,sidebar:"tutorialSidebar"},{path:"/RFCs/personal-data-reserve",component:p("/RFCs/personal-data-reserve","557"),exact:!0,sidebar:"tutorialSidebar"},{path:"/RFCs/private-network",component:p("/RFCs/private-network","f3c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/RFCs/replication",component:p("/RFCs/replication","ea8"),exact:!0},{path:"/RFCs/rfc-process",component:p("/RFCs/rfc-process","0ae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/whitepaper",component:p("/whitepaper","fae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/work_in_progress",component:p("/work_in_progress","86d"),exact:!0}]},{path:"*",component:p("*")}];var m=n(412),h=n(6291),g=n(9913),b=n(7041),v=n(6775),y=n(4865),w=n.n(y);const k=[n(2497),n(2448),n(6743),n(2295)];function S(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{var r,a;const o=null!==(a=null===(r=null==t?void 0:t.default)||void 0===r?void 0:r[e])&&void 0!==a?a:t[e];o&&o(...n)}))}const E={onRouteUpdate(){for(var e=arguments.length,t=new Array(e),n=0;n{const{component:t}=e.route;if(t&&t.preload)return t.preload()})))}const _={};const T=function(e){if(_[e.pathname])return{...e,pathname:_[e.pathname]};let t=e.pathname||"/";return t=t.trim().replace(/\/index\.html$/,""),""===t&&(t="/"),_[e.pathname]=t,{...e,pathname:t}};w().configure({showSpinner:!1});class R extends r.Component{constructor(e){super(e),this.previousLocation=null,this.progressBarTimeout=null,this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){const n=e.location!==this.props.location,{routes:r,delay:a}=this.props;if(n){const t=T(e.location);return this.startProgressBar(a),this.previousLocation=T(this.props.location),this.setState({nextRouteHasLoaded:!1}),C(r,t.pathname).then((()=>{E.onRouteUpdate({previousLocation:this.previousLocation,location:t}),this.previousLocation=null,this.setState({nextRouteHasLoaded:!0},this.stopProgressBar);const{hash:e}=t;if(e){const t=decodeURIComponent(e.substring(1)),n=document.getElementById(t);n&&n.scrollIntoView()}else window.scrollTo(0,0)})).catch((e=>console.warn(e))),!1}return!!t.nextRouteHasLoaded}clearProgressBarTimeout(){this.progressBarTimeout&&(clearTimeout(this.progressBarTimeout),this.progressBarTimeout=null)}startProgressBar(e){this.clearProgressBarTimeout(),this.progressBarTimeout=setTimeout((()=>{E.onRouteUpdateDelayed({location:T(this.props.location)}),w().start()}),e)}stopProgressBar(){this.clearProgressBarTimeout(),w().done()}render(){const{children:e,location:t}=this.props;return r.createElement(v.AW,{location:T(t),render:()=>e})}}const A=(0,v.EN)(R);var P=n(2859),L=n(2263);const N="docusaurus-base-url-issue-banner-container",O="docusaurus-base-url-issue-banner-suggestion-container",D="__DOCUSAURUS_INSERT_BASEURL_BANNER";function I(e){return`\nwindow['${D}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${D}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${N}');\n if (!bannerContainer) {\n return;\n }\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(/{window[D]=!1}),[]),r.createElement(r.Fragment,null,!m.Z.canUseDOM&&r.createElement(P.Z,null,r.createElement("script",null,I(e))),r.createElement("div",{id:N}))}function M(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,L.Z)(),{pathname:n}=(0,v.TH)();return t&&n===e?r.createElement(F,null):null}const j=function(e){let{children:t}=e;return t};var B=n(780),U=n(4953);const $=function(){return r.createElement(B.Z,{fallback:U.Z},r.createElement(b.M,null,r.createElement(g.t,null,r.createElement(j,null,r.createElement(M,null),r.createElement(A,{routes:f,delay:1e3},(0,h.Z)(f))))))};const z=function(e){if("undefined"==typeof document)return!1;const t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(n){return!1}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;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).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)}))},q={};const Z=function(e){return new Promise((t=>{q[e]?t():z(e).then((()=>{t(),q[e]=!0})).catch((()=>{}))}))},G={},H={},V=()=>{var e,t;return(null===(e=navigator.connection)||void 0===e?void 0:e.effectiveType.includes("2g"))&&(null===(t=navigator.connection)||void 0===t?void 0:t.saveData)},W={prefetch:e=>{if(!(e=>!V()&&!H[e]&&!G[e])(e))return!1;G[e]=!0;return(0,x.f)(f,e).flatMap((e=>{return t=e.route.path,Object.entries(c).filter((e=>{let[n]=e;return n.replace(/(-[^-]+)$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values(d(t))}));var t})).forEach((e=>{const t=n.gca(e);t&&!/undefined/.test(t)&&Z(t)})),!0},preload:e=>!!(e=>!V()&&!H[e])(e)&&(H[e]=!0,C(f,e),!0)};if(m.Z.canUseDOM){window.docusaurus=W;const e=a.hydrate;C(f,window.location.pathname).then((()=>{e(r.createElement(o.VK,null,r.createElement($,null)),document.getElementById("__docusaurus"))}))}},780:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var r=n(7294),a=n(412),o=n(4953);class i extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){var e;const{children:t}=this.props,{error:n}=this.state;if(n){return(null!==(e=this.props.fallback)&&void 0!==e?e:o.Z)({error:n,tryAgain:()=>this.setState({error:null})})}return null!=t?t:null}}const l=i},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=!("undefined"==typeof window||!window.document||!window.document.createElement),a={canUseDOM:r,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&!!window.screen}},2859:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ge});var r,a,o,i,l=n(7294),s=n(5697),c=n.n(s),u=n(3524),d=n.n(u),p=n(9590),f=n.n(p),m=n(7418),h=n.n(m),g="bodyAttributes",b="htmlAttributes",v="titleAttributes",y={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},w=(Object.keys(y).map((function(e){return y[e]})),"charset"),k="cssText",S="href",E="http-equiv",x="innerHTML",C="itemprop",_="name",T="property",R="rel",A="src",P="target",L={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},N="defaultTitle",O="defer",D="encodeSpecialCharacters",I="onChangeClientState",F="titleTemplate",M=Object.keys(L).reduce((function(e,t){return e[L[t]]=t,e}),{}),j=[y.NOSCRIPT,y.SCRIPT,y.STYLE],B="data-react-helmet",U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},z=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},G=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},H=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===t?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},V=function(e){var t=X(e,y.TITLE),n=X(e,F);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=X(e,N);return t||r||void 0},W=function(e){return X(e,I)||function(){}},K=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return q({},e,t)}),{})},Y=function(e,t){return t.filter((function(e){return void 0!==e[y.BASE]})).map((function(e){return e[y.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},J=(r=Date.now(),function(e){var t=Date.now();t-r>16?(r=t,e(t)):setTimeout((function(){J(e)}),0)}),ee=function(e){return clearTimeout(e)},te="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||J:n.g.requestAnimationFrame||J,ne="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||ee:n.g.cancelAnimationFrame||ee,re=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},ae=null,oe=function(e,t){var n=e.baseTag,r=e.bodyAttributes,a=e.htmlAttributes,o=e.linkTags,i=e.metaTags,l=e.noscriptTags,s=e.onChangeClientState,c=e.scriptTags,u=e.styleTags,d=e.title,p=e.titleAttributes;se(y.BODY,r),se(y.HTML,a),le(d,p);var f={baseTag:ce(y.BASE,n),linkTags:ce(y.LINK,o),metaTags:ce(y.META,i),noscriptTags:ce(y.NOSCRIPT,l),scriptTags:ce(y.SCRIPT,c),styleTags:ce(y.STYLE,u)},m={},h={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(m[e]=n),r.length&&(h[e]=f[e].oldTags)})),t&&t(),s(e,m,h)},ie=function(e){return Array.isArray(e)?e.join(""):e},le=function(e,t){void 0!==e&&document.title!==e&&(document.title=ie(e)),se(y.TITLE,t)},se=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(B),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l=0;d--)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute(B):n.getAttribute(B)!==i.join(",")&&n.setAttribute(B,i.join(","))}},ce=function(e,t){var n=document.head||document.querySelector(y.HEAD),r=n.querySelectorAll(e+"["+"data-react-helmet]"),a=Array.prototype.slice.call(r),o=[],i=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===x)n.innerHTML=t.innerHTML;else if(r===k)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var l=void 0===t[r]?"":t[r];n.setAttribute(r,l)}n.setAttribute(B,"true"),a.some((function(e,t){return i=t,n.isEqualNode(e)}))?a.splice(i,1):o.push(n)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),o.forEach((function(e){return n.appendChild(e)})),{oldTags:a,newTags:o}},ue=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}),"")},de=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[L[n]||n]=e[n],t}),t)},pe=function(e,t,n){switch(e){case y.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[B]=!0,a=de(n,r),[l.createElement(y.TITLE,a,e)];var e,n,r,a},toString:function(){return function(e,t,n,r){var a=ue(n),o=ie(t);return a?"<"+e+' data-react-helmet="true" '+a+">"+H(o,r)+"":"<"+e+' data-react-helmet="true">'+H(o,r)+""}(e,t.title,t.titleAttributes,n)}};case g:case b:return{toComponent:function(){return de(t)},toString:function(){return ue(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,a=((r={key:n})[B]=!0,r);return Object.keys(t).forEach((function(e){var n=L[e]||e;if(n===x||n===k){var r=t.innerHTML||t.cssText;a.dangerouslySetInnerHTML={__html:r}}else a[n]=t[e]})),l.createElement(e,a)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!(e===x||e===k)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+H(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===j.indexOf(e);return t+"<"+e+' data-react-helmet="true" '+a+(i?"/>":">"+o+"")}),"")}(e,t,n)}}}},fe=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.linkTags,i=e.metaTags,l=e.noscriptTags,s=e.scriptTags,c=e.styleTags,u=e.title,d=void 0===u?"":u,p=e.titleAttributes;return{base:pe(y.BASE,t,r),bodyAttributes:pe(g,n,r),htmlAttributes:pe(b,a,r),link:pe(y.LINK,o,r),meta:pe(y.META,i,r),noscript:pe(y.NOSCRIPT,l,r),script:pe(y.SCRIPT,s,r),style:pe(y.STYLE,c,r),title:pe(y.TITLE,{title:d,titleAttributes:p},r)}},me=d()((function(e){return{baseTag:Y([S,P],e),bodyAttributes:K(g,e),defer:X(e,O),encode:X(e,D),htmlAttributes:K(b,e),linkTags:Q(y.LINK,[R,S],e),metaTags:Q(y.META,[_,w,E,T,C],e),noscriptTags:Q(y.NOSCRIPT,[x],e),onChangeClientState:W(e),scriptTags:Q(y.SCRIPT,[A,x],e),styleTags:Q(y.STYLE,[k],e),title:V(e),titleAttributes:K(v,e)}}),(function(e){ae&&ne(ae),e.defer?ae=te((function(){oe(e,(function(){ae=null}))})):(oe(e),ae=null)}),fe)((function(){return null})),he=(a=me,i=o=function(e){function t(){return $(this,t),G(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!f()(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case y.SCRIPT:case y.NOSCRIPT:return{innerHTML:t};case y.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,a=e.newChildProps,o=e.nestedChildren;return q({},r,((t={})[n.type]=[].concat(r[n.type]||[],[q({},a,this.mapNestedChildrenToProps(n,o))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case y.TITLE:return q({},a,((t={})[r.type]=i,t.titleAttributes=q({},o),t));case y.BODY:return q({},a,{bodyAttributes:q({},o)});case y.HTML:return q({},a,{htmlAttributes:q({},o)})}return q({},a,((n={})[r.type]=q({},o),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=q({},t);return Object.keys(e).forEach((function(t){var r;n=q({},n,((r={})[t]=e[t],r))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return l.Children.forEach(e,(function(e){if(e&&e.props){var a=e.props,o=a.children,i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[M[n]||n]=e[n],t}),t)}(Z(a,["children"]));switch(n.warnOnInvalidChildren(e,o),e.type){case y.LINK:case y.META:case y.NOSCRIPT:case y.SCRIPT:case y.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:i,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:i,nestedChildren:o})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=Z(e,["children"]),r=q({},n);return t&&(r=this.mapChildrenToProps(t,r)),l.createElement(a,r)},z(t,null,[{key:"canUseDOM",set:function(e){a.canUseDOM=e}}]),t}(l.Component),o.propTypes={base:c().object,bodyAttributes:c().object,children:c().oneOfType([c().arrayOf(c().node),c().node]),defaultTitle:c().string,defer:c().bool,encodeSpecialCharacters:c().bool,htmlAttributes:c().object,link:c().arrayOf(c().object),meta:c().arrayOf(c().object),noscript:c().arrayOf(c().object),onChangeClientState:c().func,script:c().arrayOf(c().object),style:c().arrayOf(c().object),title:c().string,titleAttributes:c().object,titleTemplate:c().string},o.defaultProps={defer:!0,encodeSpecialCharacters:!0},o.peek=a.peek,o.rewind=function(){var e=a.rewind();return e||(e=fe({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},i);he.renderStatic=he.rewind;const ge=function(e){return l.createElement(he,{...e})}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7294),a=n(3727),o=n(2263),i=n(3919),l=n(412);const s=(0,r.createContext)({collectLink:()=>{}});var c=n(4996),u=n(8780);const d=function(e){let{isNavLink:t,to:n,href:d,activeClassName:p,isActive:f,"data-noBrokenLinkCheck":m,autoAddBaseUrl:h=!0,...g}=e;var b;const{siteConfig:{trailingSlash:v,baseUrl:y}}=(0,o.Z)(),{withBaseUrl:w}=(0,c.C)(),k=(0,r.useContext)(s),S=n||d,E=(0,i.Z)(S),x=null==S?void 0:S.replace("pathname://","");let C=void 0!==x?(_=x,h&&(e=>e.startsWith("/"))(_)?w(_):_):void 0;var _;C&&E&&(C=(0,u.applyTrailingSlash)(C,{trailingSlash:v,baseUrl:y}));const T=(0,r.useRef)(!1),R=t?a.OL:a.rU,A=l.Z.canUseIntersectionObserver,P=(0,r.useRef)();(0,r.useEffect)((()=>(!A&&E&&null!=C&&window.docusaurus.prefetch(C),()=>{A&&P.current&&P.current.disconnect()})),[P,C,A,E]);const L=null!==(b=null==C?void 0:C.startsWith("#"))&&void 0!==b&&b,N=!C||!E||L;return C&&E&&!L&&!m&&k.collectLink(C),N?r.createElement("a",{href:C,...S&&!E&&{target:"_blank",rel:"noopener noreferrer"},...g}):r.createElement(R,{...g,onMouseEnter:()=>{T.current||null==C||(window.docusaurus.preload(C),T.current=!0)},innerRef:e=>{var t,n;A&&e&&E&&(t=e,n=()=>{null!=C&&window.docusaurus.prefetch(C)},P.current=new window.IntersectionObserver((e=>{e.forEach((e=>{t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(P.current.unobserve(t),P.current.disconnect(),n())}))})),P.current.observe(t))},to:C||"",...t&&{isActive:f,activeClassName:p}})}},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u,I:()=>c});var r=n(7294);const a=/{\w+}/g,o="{}";function i(e,t){const n=[],i=e.replace(a,(e=>{const a=e.substring(1,e.length-1),i=null==t?void 0:t[a];if(void 0!==i){const e=r.isValidElement(i)?i:String(i);return n.push(e),o}return e}));return 0===n.length?e:n.every((e=>"string"==typeof e))?i.split(o).reduce(((e,t,r)=>{var a;return e.concat(t).concat(null!==(a=n[r])&&void 0!==a?a:"")}),""):i.split(o).reduce(((e,t,a)=>[...e,r.createElement(r.Fragment,{key:a},t,n[a])]),[])}var l=n(7529);function s(e){let{id:t,message:n}=e;var r,a;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 null!==(a=null!==(r=l[null!=t?t:n])&&void 0!==r?r:n)&&void 0!==a?a:t}function c(e,t){let{message:n,id:r}=e;return i(s({message:n,id:r}),t)}function u(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");return i(s({message:t,id:n}),r)}},9913:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},7041:(e,t,n)=>{"use strict";n.d(t,{_:()=>u,M:()=>d});var r=n(7294),a=n(9782);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"index","docs":[{"id":"api-intro","path":"/api-intro","sidebar":"tutorialSidebar"},{"id":"api/client-instance","path":"/api/client-instance","sidebar":"tutorialSidebar"},{"id":"api/file-api","path":"/api/file-api","sidebar":"tutorialSidebar"},{"id":"api/graph-api","path":"/api/graph-api","sidebar":"tutorialSidebar"},{"id":"blockchain/blockchain-intro","path":"/blockchain/blockchain-intro","sidebar":"tutorialSidebar"},{"id":"blockchain/recipes","path":"/blockchain/recipes","sidebar":"tutorialSidebar"},{"id":"blockchain/Recipes/Account","path":"/blockchain/Recipes/Account","sidebar":"tutorialSidebar"},{"id":"blockchain/Recipes/Asset","path":"/blockchain/Recipes/Asset","sidebar":"tutorialSidebar"},{"id":"blockchain/Recipes/Bag","path":"/blockchain/Recipes/Bag","sidebar":"tutorialSidebar"},{"id":"blockchain/Recipes/Bundle","path":"/blockchain/Recipes/Bundle","sidebar":"tutorialSidebar"},{"id":"blockchain/Recipes/Challenges","path":"/blockchain/Recipes/Challenges","sidebar":"tutorialSidebar"},{"id":"blockchain/Recipes/Claims","path":"/blockchain/Recipes/Claims","sidebar":"tutorialSidebar"},{"id":"blockchain/Recipes/Manifest","path":"/blockchain/Recipes/Manifest","sidebar":"tutorialSidebar"},{"id":"blockchain/Recipes/Market","path":"/blockchain/Recipes/Market","sidebar":"tutorialSidebar"},{"id":"blockchain/Recipes/Pool","path":"/blockchain/Recipes/Pool","sidebar":"tutorialSidebar"},{"id":"blockchain/services","path":"/blockchain/services","sidebar":"tutorialSidebar"},{"id":"blockchain/Services/BuildNode","path":"/blockchain/Services/BuildNode","sidebar":"tutorialSidebar"},{"id":"blockchain/Services/Explorer","path":"/blockchain/Services/Explorer","sidebar":"tutorialSidebar"},{"id":"blockchain/Services/FulaContractAPI","path":"/blockchain/Services/FulaContractAPI","sidebar":"tutorialSidebar"},{"id":"blockchain/Services/Node","path":"/blockchain/Services/Node","sidebar":"tutorialSidebar"},{"id":"blockchain/Services/NodeAPI","path":"/blockchain/Services/NodeAPI","sidebar":"tutorialSidebar"},{"id":"blockchain/Services/ProofEngine","path":"/blockchain/Services/ProofEngine","sidebar":"tutorialSidebar"},{"id":"blockchain/Services/RunNode","path":"/blockchain/Services/RunNode","sidebar":"tutorialSidebar"},{"id":"blockchain/Services/Status","path":"/blockchain/Services/Status","sidebar":"tutorialSidebar"},{"id":"components/WorkInProgress","path":"/components/WorkInProgress"},{"id":"design/encryption","path":"/design/encryption"},{"id":"design/test","path":"/design/test"},{"id":"functionyard/add-storage","path":"/functionyard/add-storage","sidebar":"tutorialSidebar"},{"id":"functionyard/dapps","path":"/functionyard/dapps","sidebar":"tutorialSidebar"},{"id":"functionyard/fxblox-app","path":"/functionyard/fxblox-app","sidebar":"tutorialSidebar"},{"id":"functionyard/fxfotos","path":"/functionyard/fxfotos","sidebar":"tutorialSidebar"},{"id":"functionyard/hardware/fxblox-hardware","path":"/functionyard/hardware/fxblox-hardware","sidebar":"tutorialSidebar"},{"id":"functionyard/hardware/fxblox-hardware-rk1","path":"/functionyard/hardware/fxblox-hardware-rk1","sidebar":"tutorialSidebar"},{"id":"functionyard/hardware/fxblox-hardware-rpi","path":"/functionyard/hardware/fxblox-hardware-rpi","sidebar":"tutorialSidebar"},{"id":"functionyard/hardware/fxblox-hardware-rpi-reimage","path":"/functionyard/hardware/fxblox-hardware-rpi-reimage"},{"id":"functionyard/index","path":"/functionyard/","sidebar":"tutorialSidebar"},{"id":"functionyard/join","path":"/functionyard/join","sidebar":"tutorialSidebar"},{"id":"functionyard/metamask","path":"/functionyard/metamask","sidebar":"tutorialSidebar"},{"id":"getting-started","path":"/getting-started","sidebar":"tutorialSidebar"},{"id":"getting-started/box-setup","path":"/getting-started/box-setup","sidebar":"tutorialSidebar"},{"id":"getting-started/fula-client","path":"/getting-started/fula-client"},{"id":"getting-started/rpi-setup","path":"/getting-started/rpi-setup"},{"id":"getting-started/using-samples","path":"/getting-started/using-samples","sidebar":"tutorialSidebar"},{"id":"index","path":"/","sidebar":"tutorialSidebar"},{"id":"introduction/bas","path":"/introduction/bas","sidebar":"tutorialSidebar"},{"id":"introduction/blox","path":"/introduction/blox","sidebar":"tutorialSidebar"},{"id":"introduction/contribute/contribute","path":"/introduction/contribute/","sidebar":"tutorialSidebar"},{"id":"introduction/contribute/contribution-tutorial","path":"/introduction/contribute/contribution-tutorial","sidebar":"tutorialSidebar"},{"id":"introduction/contribute/styling","path":"/introduction/contribute/styling","sidebar":"tutorialSidebar"},{"id":"introduction/contribute/writing","path":"/introduction/contribute/writing","sidebar":"tutorialSidebar"},{"id":"introduction/fula","path":"/introduction/fula","sidebar":"tutorialSidebar"},{"id":"mvp","path":"/mvp","sidebar":"mvpSidebar"},{"id":"mvp/admin-reporting","path":"/mvp/admin-reporting"},{"id":"mvp/box-admin","path":"/mvp/box-admin"},{"id":"mvp/forgot-password","path":"/mvp/forgot-password"},{"id":"mvp/fotos","path":"/mvp/fotos","sidebar":"mvpSidebar"},{"id":"mvp/fotos/availability","path":"/mvp/fotos/availability"},{"id":"mvp/fotos/backup","path":"/mvp/fotos/backup","sidebar":"mvpSidebar"},{"id":"mvp/fotos/setup","path":"/mvp/fotos/setup","sidebar":"mvpSidebar"},{"id":"mvp/fotos/sharing","path":"/mvp/fotos/sharing","sidebar":"mvpSidebar"},{"id":"mvp/my-account","path":"/mvp/my-account"},{"id":"mvp/pools","path":"/mvp/pools","sidebar":"mvpSidebar"},{"id":"mvp/pools/storage-provide","path":"/mvp/pools/storage-provide","sidebar":"mvpSidebar"},{"id":"mvp/privacy-dashboard","path":"/mvp/privacy-dashboard"},{"id":"mvp/questions","path":"/mvp/questions"},{"id":"mvp/technical-questions","path":"/mvp/technical-questions"},{"id":"mvp/unboxing","path":"/mvp/unboxing"},{"id":"reference-api","path":"/reference-api","sidebar":"tutorialSidebar"},{"id":"release/testnet-alpha","path":"/release/testnet-alpha"},{"id":"RFCs/document-syncing","path":"/RFCs/document-syncing","sidebar":"tutorialSidebar"},{"id":"RFCs/fula-sec","path":"/RFCs/fula-sec","sidebar":"tutorialSidebar"},{"id":"RFCs/fula-sec/did","path":"/RFCs/fula-sec/did","sidebar":"tutorialSidebar"},{"id":"RFCs/fula-sec/encryption","path":"/RFCs/fula-sec/encryption","sidebar":"tutorialSidebar"},{"id":"RFCs/personal-data-reserve","path":"/RFCs/personal-data-reserve","sidebar":"tutorialSidebar"},{"id":"RFCs/private-network","path":"/RFCs/private-network","sidebar":"tutorialSidebar"},{"id":"RFCs/replication","path":"/RFCs/replication"},{"id":"RFCs/rfc-process","path":"/RFCs/rfc-process","sidebar":"tutorialSidebar"},{"id":"whitepaper/whitepaper","path":"/whitepaper/","sidebar":"tutorialSidebar"},{"id":"work_in_progress","path":"/work_in_progress"}],"sidebars":{"tutorialSidebar":{"link":{"path":"/","label":"Introduction"}},"mvpSidebar":{"link":{"path":"/mvp","label":"MVP"}}}}]}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.0.0-beta.15","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.0.0-beta.15"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.0.0-beta.15"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.0.0-beta.15"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.0.0-beta.15"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.0.0-beta.15"}}}'),c={siteConfig:a.Z,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},3919:(e,t,n)=>{"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},6291:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=n(8790).H},8143:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BrowserRouter:()=>r.VK,HashRouter:()=>r.UT,Link:()=>r.rU,MemoryRouter:()=>r.VA,NavLink:()=>r.OL,Prompt:()=>r.NL,Redirect:()=>r.l_,Route:()=>r.AW,Router:()=>r.F0,StaticRouter:()=>r.gx,Switch:()=>r.rs,generatePath:()=>r.Gn,matchPath:()=>r.LX,useHistory:()=>r.k6,useLocation:()=>r.TH,useParams:()=>r.UO,useRouteMatch:()=>r.$B,withRouter:()=>r.EN});var r=n(3727)},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>o,Z:()=>i});var r=n(2263),a=n(3919);function o(){const{siteConfig:{baseUrl:e,url:t}}=(0,r.Z)();return{withBaseUrl:(n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n)return n;if(n.startsWith("#"))return n;if((0,a.b)(n))return n;if(o)return t+n.replace(/^\//,"");const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)}}function i(e,t){void 0===t&&(t={});const{withBaseUrl:n}=o();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(7041);const o=function(){return(0,r.useContext)(a._)}},8084:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o,useAllPluginInstancesData:()=>i,usePluginData:()=>l});var r=n(2263),a=n(9935);function o(){const{globalData:e}=(0,r.Z)();if(!e)throw new Error("Docusaurus global data not found.");return e}function i(e){const t=o()[e];if(!t)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return t}function l(e,t){void 0===t&&(t=a.m);const n=i(e)[t];if(!n)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return n}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(9913);function o(){return(0,r.useContext)(a._)}},4953:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var r=n(7294),a=n(2434),o=n(780);function i(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}const l=function(e){let{error:t,tryAgain:n}=e;return r.createElement(o.Z,{fallback:()=>r.createElement(i,{error:t,tryAgain:n})},r.createElement(a.Z,{title:"Page Error"},r.createElement(i,{error:t,tryAgain:n})))}},8408:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDocVersionSuggestions=t.getActiveDocContext=t.getActiveVersion=t.getLatestVersion=t.getActivePlugin=void 0;const r=n(8143);t.getActivePlugin=function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.matchPath)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&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 o};t.getLatestVersion=e=>e.versions.find((e=>e.isLast));t.getActiveVersion=(e,n)=>{const a=(0,t.getLatestVersion)(e);return[...e.versions.filter((e=>e!==a)),a].find((e=>!!(0,r.matchPath)(n,{path:e.path,exact:!1,strict:!1})))};t.getActiveDocContext=(e,n)=>{const a=(0,t.getActiveVersion)(e,n),o=null==a?void 0:a.docs.find((e=>!!(0,r.matchPath)(n,{path:e.path,exact:!0,strict:!1})));return{activeVersion:a,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):{}}};t.getDocVersionSuggestions=(e,n)=>{const r=(0,t.getLatestVersion)(e),a=(0,t.getActiveDocContext)(e,n);return{latestDocSuggestion:null==a?void 0:a.alternateDocVersions[r.name],latestVersionSuggestion:r}}},7608:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useDocVersionSuggestions=t.useActiveDocContext=t.useActiveVersion=t.useLatestVersion=t.useVersions=t.useActivePluginAndVersion=t.useActivePlugin=t.useDocsData=t.useAllDocsData=void 0;const r=n(655),a=n(8143),o=(0,r.__importStar)(n(8084)),i=n(8408),l={};t.useAllDocsData=()=>{var e;return null!==(e=(0,o.default)()["docusaurus-plugin-content-docs"])&&void 0!==e?e:l};t.useDocsData=e=>(0,o.usePluginData)("docusaurus-plugin-content-docs",e);t.useActivePlugin=function(e){void 0===e&&(e={});const n=(0,t.useAllDocsData)(),{pathname:r}=(0,a.useLocation)();return(0,i.getActivePlugin)(n,r,e)};t.useActivePluginAndVersion=function(e){void 0===e&&(e={});const n=(0,t.useActivePlugin)(e),{pathname:r}=(0,a.useLocation)();if(n){return{activePlugin:n,activeVersion:(0,i.getActiveVersion)(n.pluginData,r)}}};t.useVersions=e=>(0,t.useDocsData)(e).versions;t.useLatestVersion=e=>{const n=(0,t.useDocsData)(e);return(0,i.getLatestVersion)(n)};t.useActiveVersion=e=>{const n=(0,t.useDocsData)(e),{pathname:r}=(0,a.useLocation)();return(0,i.getActiveVersion)(n,r)};t.useActiveDocContext=e=>{const n=(0,t.useDocsData)(e),{pathname:r}=(0,a.useLocation)();return(0,i.getActiveDocContext)(n,r)};t.useDocVersionSuggestions=e=>{const n=(0,t.useDocsData)(e),{pathname:r}=(0,a.useLocation)();return(0,i.getDocVersionSuggestions)(n,r)}},5551:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});(0,n(655).__exportStar)(n(7608),t)},541:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a="iconExternalLink_I5OW";const o=function(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a},r.createElement("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"}))}},2434:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ue});var r=n(7294),a=n(6010),o=n(780),i=n(6775),l=n(5999),s=n(5773);const c="skipToContent_ZgBM";function u(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}const d=function(){const e=(0,r.useRef)(null),{action:t}=(0,i.k6)();return(0,s.SL)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&u(e.current)})),r.createElement("div",{ref:e,role:"region"},r.createElement("a",{href:"#",className:c,onClick:e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&u(t)}},r.createElement(l.Z,{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"},"Skip to main content")))};var p=n(7462);function f(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...l}=e;return r.createElement("svg",(0,p.Z)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const m="announcementBar_IbjG",h="announcementBarPlaceholder_NC_W",g="announcementBarClose_FG1z",b="announcementBarContent_KsVm";const v=function(){const{isActive:e,close:t}=(0,s.nT)(),{announcementBar:n}=(0,s.LU)();if(!e)return null;const{content:o,backgroundColor:i,textColor:c,isCloseable:u}=n;return r.createElement("div",{className:m,style:{backgroundColor:i,color:c},role:"banner"},u&&r.createElement("div",{className:h}),r.createElement("div",{className:b,dangerouslySetInnerHTML:{__html:o}}),u?r.createElement("button",{type:"button",className:(0,a.Z)("clean-btn close",g),onClick:t,"aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},r.createElement(f,{width:14,height:14,strokeWidth:3.1})):null)};var y=n(1875),w=n(2389);const k="toggle_Pssr",S="toggleScreenReader_JnkT",E="toggleDisabled_jDku",x="toggleTrack_SSoT",C="toggleTrackCheck_XobZ",_="toggleChecked_cnQY",T="toggleTrackX_YkSC",R="toggleTrackThumb_uRm4",A="toggleFocused_A7DC",P="toggleIcon_eZtF",L=(0,r.memo)((e=>{let{className:t,switchConfig:n,checked:o,disabled:i,onChange:l}=e;const{darkIcon:s,darkIconStyle:c,lightIcon:u,lightIconStyle:d}=n,[p,f]=(0,r.useState)(o),[m,h]=(0,r.useState)(!1),g=(0,r.useRef)(null);return r.createElement("div",{className:(0,a.Z)(k,t,{[_]:p,[A]:m,[E]:i})},r.createElement("div",{className:x,role:"button",tabIndex:-1,onClick:()=>{var e;return null==(e=g.current)?void 0:e.click()}},r.createElement("div",{className:C},r.createElement("span",{className:P,style:c},s)),r.createElement("div",{className:T},r.createElement("span",{className:P,style:d},u)),r.createElement("div",{className:R})),r.createElement("input",{ref:g,checked:p,type:"checkbox",className:S,"aria-label":"Switch between dark and light mode",onChange:l,onClick:()=>f(!p),onFocus:()=>h(!0),onBlur:()=>h(!1),onKeyDown:e=>{var t;"Enter"===e.key&&(null==(t=g.current)||t.click())}}))}));function N(e){const{colorMode:{switchConfig:t}}=(0,s.LU)(),n=(0,w.Z)();return r.createElement(L,(0,p.Z)({switchConfig:t,disabled:!n},e))}var O=n(5551),D=n(2207),I=n(5537);const F=function(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,p.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))},M={toggle:"toggle_TdHA",navbarHideable:"navbarHideable_aKYr",navbarHidden:"navbarHidden_KUhG",navbarSidebarToggle:"navbarSidebarToggle_nL8I"},j="right";function B(){return(0,s.LU)().navbar.items}function U(){const{colorMode:{disableSwitch:e}}=(0,s.LU)(),{isDarkTheme:t,setLightTheme:n,setDarkTheme:a}=(0,s.If)();return{isDarkTheme:t,toggle:(0,r.useCallback)((e=>e.target.checked?a():n()),[n,a]),disabled:e}}function $(e){let{sidebarShown:t,toggleSidebar:n}=e;(0,s.Ni)(t);const o=B(),i=U(),c=function(e){var t;let{sidebarShown:n,toggleSidebar:a}=e;const o=null==(t=(0,s.g8)())?void 0:t({toggleSidebar:a}),i=(0,s.D9)(o),[l,c]=(0,r.useState)((()=>!1));(0,r.useEffect)((()=>{o&&!i&&c(!0)}),[o,i]);const u=!!o;return(0,r.useEffect)((()=>{u?n||c(!0):c(!1)}),[n,u]),{shown:l,hide:(0,r.useCallback)((()=>{c(!1)}),[]),content:o}}({sidebarShown:t,toggleSidebar:n});return r.createElement("div",{className:"navbar-sidebar"},r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(I.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),!i.disabled&&r.createElement(N,{className:M.navbarSidebarToggle,checked:i.isDarkTheme,onChange:i.toggle}),r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__close",onClick:n},r.createElement(f,{color:"var(--ifm-color-emphasis-600)",className:M.navbarSidebarCloseSvg}))),r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":c.shown})},r.createElement("div",{className:"navbar-sidebar__item menu"},r.createElement("ul",{className:"menu__list"},o.map(((e,t)=>r.createElement(D.Z,(0,p.Z)({mobile:!0},e,{onClick:n,key:t})))))),r.createElement("div",{className:"navbar-sidebar__item menu"},o.length>0&&r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__back",onClick:c.hide},r.createElement(l.Z,{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)"},"\u2190 Back to main menu")),c.content)))}const z=function(){const{navbar:{hideOnScroll:e,style:t}}=(0,s.LU)(),n=function(){const e=(0,s.iP)(),t="mobile"===e,[n,a]=(0,r.useState)(!1);(0,s.Rb)((()=>{if(n)return a(!1),!1}));const o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===e&&a(!1)}),[e]),{shouldRender:t,toggle:o,shown:n}}(),o=U(),i=(0,O.useActivePlugin)(),{navbarRef:l,isNavbarVisible:c}=(0,s.cK)(e),u=B(),d=u.some((e=>"search"===e.type)),{leftItems:f,rightItems:m}=function(e){return{leftItems:e.filter((e=>"left"===(e.position??j))),rightItems:e.filter((e=>"right"===(e.position??j)))}}(u);return r.createElement("nav",{ref:l,className:(0,a.Z)("navbar","navbar--fixed-top",{"navbar--dark":"dark"===t,"navbar--primary":"primary"===t,"navbar-sidebar--show":n.shown,[M.navbarHideable]:e,[M.navbarHidden]:e&&!c})},r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},((null==u?void 0:u.length)>0||i)&&r.createElement("button",{"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0,onClick:n.toggle,onKeyDown:n.toggle},r.createElement(F,null)),r.createElement(I.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),f.map(((e,t)=>r.createElement(D.Z,(0,p.Z)({},e,{key:t}))))),r.createElement("div",{className:"navbar__items navbar__items--right"},m.map(((e,t)=>r.createElement(D.Z,(0,p.Z)({},e,{key:t})))),!o.disabled&&r.createElement(N,{className:M.toggle,checked:o.isDarkTheme,onChange:o.toggle}),!d&&r.createElement(y.Z,null))),r.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:n.toggle}),n.shouldRender&&r.createElement($,{sidebarShown:n.shown,toggleSidebar:n.toggle}))};var q=n(9960),Z=n(4996),G=n(3919);const H="footerLogoLink_RC3H";var V=n(9750),W=n(541);function K(e){let{to:t,href:n,label:a,prependBaseUrlToHref:o,...i}=e;const l=(0,Z.Z)(t),s=(0,Z.Z)(n,{forcePrependBaseUrl:!0});return r.createElement(q.Z,(0,p.Z)({className:"footer__link-item"},n?{href:o?s:n}:{to:l},i),n&&!(0,G.Z)(n)?r.createElement("span",null,a,r.createElement(W.Z,null)):a)}function Y(e){let{sources:t,alt:n,width:a,height:o}=e;return r.createElement(V.Z,{className:"footer__logo",alt:n,sources:t,width:a,height:o})}function Q(e){let{links:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement("div",{key:t,className:"col footer__col"},r.createElement("div",{className:"footer__title"},e.title),r.createElement("ul",{className:"footer__items"},e.items.map(((e,t)=>e.html?r.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.createElement("li",{key:e.href||e.to,className:"footer__item"},r.createElement(K,e)))))))))}function X(e){let{links:t}=e;return r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,null,e.html?r.createElement("span",{key:n,className:"footer__link-item",dangerouslySetInnerHTML:{__html:e.html}}):r.createElement(K,e),t.length!==n+1&&r.createElement("span",{className:"footer__link-separator"},"\xb7")))))}function J(){const{footer:e}=(0,s.LU)(),{copyright:t,links:n=[],logo:o={}}=e||{},i={light:(0,Z.Z)(o.src),dark:(0,Z.Z)(o.srcDark||o.src)};return e?r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===e.style})},r.createElement("div",{className:"container container-fluid"},n&&n.length>0&&(function(e){return"title"in e[0]}(n)?r.createElement("div",{className:"row footer__links"},r.createElement(Q,{links:n})):r.createElement("div",{className:"footer__links text--center"},r.createElement(X,{links:n}))),(o||t)&&r.createElement("div",{className:"footer__bottom text--center"},o&&(o.src||o.srcDark)&&r.createElement("div",{className:"margin-bottom--sm"},o.href?r.createElement(q.Z,{href:o.href,className:H},r.createElement(Y,{alt:o.alt,sources:i,width:o.width,height:o.height})):r.createElement(Y,{alt:o.alt,sources:i})),t?r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}}):null))):null}const ee=r.memo(J);function te(e){let{children:t}=e;return r.createElement(s.SG,null,r.createElement(s.pl,null,r.createElement(s.z5,null,r.createElement(s.OC,null,r.createElement(s.L5,null,r.createElement(s.Cn,null,t))))))}var ne=n(2859),re=n(2263);function ae(e){let{locale:t,version:n,tag:a}=e;return r.createElement(ne.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),a&&r.createElement("meta",{name:"docusaurus_tag",content:a}))}var oe=n(1217);function ie(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,re.Z)(),n=(0,s.l5)();return r.createElement(ne.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function le(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,re.Z)(),a=function(){const{siteConfig:{url:e}}=(0,re.Z)(),{pathname:t}=(0,i.TH)();return e+(0,Z.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(ne.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function se(e){const{siteConfig:{favicon:t},i18n:{currentLocale:n,localeConfigs:a}}=(0,re.Z)(),{metadata:o,image:i}=(0,s.LU)(),{title:l,description:c,image:u,keywords:d,searchMetadata:f}=e,m=(0,Z.Z)(t),h=(0,s.pe)(l),{htmlLang:g,direction:b}=a[n];return r.createElement(r.Fragment,null,r.createElement(ne.Z,null,r.createElement("html",{lang:g,dir:b}),t&&r.createElement("link",{rel:"icon",href:m}),r.createElement("title",null,h),r.createElement("meta",{property:"og:title",content:h}),r.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),i&&r.createElement(oe.Z,{image:i}),u&&r.createElement(oe.Z,{image:u}),r.createElement(oe.Z,{description:c,keywords:d}),r.createElement(le,null),r.createElement(ie,null),r.createElement(ae,(0,p.Z)({tag:s.HX,locale:n},f)),r.createElement(ne.Z,null,o.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:`metadata_${t}`},e))))))}function ce(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}const ue=function(e){const{children:t,noFooter:n,wrapperClassName:i,pageClassName:l}=e;return(0,s.t$)(),r.createElement(te,null,r.createElement(se,e),r.createElement(d,null),r.createElement(v,null),r.createElement(z,null),r.createElement("div",{className:(0,a.Z)(s.kM.wrapper.main,i,l)},r.createElement(o.Z,{fallback:ce},t)),!n&&r.createElement(ee,null))}},5537:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(9960),i=n(9750),l=n(4996),s=n(2263),c=n(5773);const u=function(e){const{siteConfig:{title:t}}=(0,s.Z)(),{navbar:{title:n,logo:u={src:""}}}=(0,c.LU)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,l.Z)(u.href||"/"),h={light:(0,l.Z)(u.src),dark:(0,l.Z)(u.srcDark||u.src)},g=a.createElement(i.Z,{sources:h,height:u.height,width:u.width,alt:u.alt||n||t});return a.createElement(o.Z,(0,r.Z)({to:m},f,u.target&&{target:u.target}),u.src&&(d?a.createElement("div",{className:d},g):g),null!=n&&a.createElement("b",{className:p},n))}},5525:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(6010),i=n(3072),l=n(1068);function s(e){let{className:t,isDropdownItem:n=!1,...l}=e;const s=a.createElement(i.Z,(0,r.Z)({className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t)},l));return n?a.createElement("li",null,s):s}function c(e){let{className:t,isDropdownItem:n,...l}=e;return a.createElement("li",{className:"menu__list-item"},a.createElement(i.Z,(0,r.Z)({className:(0,o.Z)("menu__link",t)},l)))}const u=function(e){let{mobile:t=!1,position:n,...o}=e;const i=t?c:s;return a.createElement(i,(0,r.Z)({},o,{activeClassName:o.activeClassName??(0,l.E)(t)}))}},6400:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(5525),i=n(5551),l=n(6010),s=n(1068),c=n(5773);function u(e){let{docId:t,label:n,docsPluginId:u,...d}=e;const{activeVersion:p,activeDoc:f}=(0,i.useActiveDocContext)(u),{preferredVersion:m}=(0,c.J)(u),h=(0,i.useLatestVersion)(u),g=function(e,t){const n=e.flatMap((e=>e.docs)),r=n.find((e=>e.id===t));if(!r){const r=n.map((e=>e.id)).join("\n- ");throw new Error(`DocNavbarItem: couldn't find any doc with id "${t}" in version${e.length?"s":""} ${e.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${r}`)}return r}((0,c.jj)([p,m,h].filter(Boolean)),t),b=(0,s.E)(d.mobile);return a.createElement(o.Z,(0,r.Z)({exact:!0},d,{className:(0,l.Z)(d.className,{[b]:(null==f?void 0:f.sidebar)&&f.sidebar===g.sidebar}),activeClassName:b,label:n??g.id,to:g.path}))}},4792:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(5525),i=n(5551),l=n(6010),s=n(1068),c=n(5773);function u(e){let{sidebarId:t,label:n,docsPluginId:u,...d}=e;const{activeVersion:p,activeDoc:f}=(0,i.useActiveDocContext)(u),{preferredVersion:m}=(0,c.J)(u),h=(0,i.useLatestVersion)(u),g=function(e,t){const n=e.flatMap((e=>{if(e.sidebars)return Object.entries(e.sidebars)})).filter((e=>!!e)),r=n.find((e=>e[0]===t));if(!r)throw new Error(`DocSidebarNavbarItem: couldn't find any sidebar with id "${t}" in version${e.length?"s":""} ${e.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${Object.keys(n).join("\n- ")}`);if(!r[1].link)throw new Error(`DocSidebarNavbarItem: couldn't find any document for sidebar with id "${t}"`);return r[1].link}((0,c.jj)([p,m,h].filter(Boolean)),t),b=(0,s.E)(d.mobile);return a.createElement(o.Z,(0,r.Z)({exact:!0},d,{className:(0,l.Z)(d.className,{[b]:(null==f?void 0:f.sidebar)===t}),activeClassName:b,label:n??g.label,to:g.path}))}},9308:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(5525),i=n(3154),l=n(5551),s=n(5773),c=n(5999);const u=e=>e.docs.find((t=>t.id===e.mainDocId));function d(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:d,dropdownItemsBefore:p,dropdownItemsAfter:f,...m}=e;const h=(0,l.useActiveDocContext)(n),g=(0,l.useVersions)(n),b=(0,l.useLatestVersion)(n),{preferredVersion:v,savePreferredVersionName:y}=(0,s.J)(n);const w=function(){const e=g.map((e=>{const t=(null==h?void 0:h.alternateDocVersions[e.name])||u(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:()=>e===(null==h?void 0:h.activeVersion),onClick:()=>{y(e.name)}}}));return[...p,...e,...f]}(),k=h.activeVersion??v??b,S=t&&w.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):k.label,E=t&&w.length>1?void 0:u(k).path;return w.length<=1?a.createElement(o.Z,(0,r.Z)({},m,{mobile:t,label:S,to:E,isActive:d?()=>!1:void 0})):a.createElement(i.Z,(0,r.Z)({},m,{mobile:t,label:S,to:E,items:w,isActive:d?()=>!1:void 0}))}},7250:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(7462),a=n(7294),o=n(5525),i=n(5551),l=n(5773);function s(e){let{label:t,to:n,docsPluginId:s,...c}=e;const u=(0,i.useActiveVersion)(s),{preferredVersion:d}=(0,l.J)(s),p=(0,i.useLatestVersion)(s),f=u??d??p,m=t??f.label,h=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(f).path;return a.createElement(o.Z,(0,r.Z)({},c,{label:m,to:h}))}},3154:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),a=n(7294),o=n(6010),i=n(5773),l=n(3072),s=n(2207);function c(e,t){return e.some((e=>function(e,t){return!!(0,i.Mg)(e.to,t)||!!(0,i.Fx)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function u(e){let{items:t,position:n,className:i,...c}=e;const u=(0,a.useRef)(null),[d,p]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&p(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[u]),a.createElement("div",{ref:u,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":d})},a.createElement(l.Z,(0,r.Z)({href:c.to?void 0:"#",className:(0,o.Z)("navbar__link",i)},c,{onClick:c.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),p(!d))}}),c.children??c.label),a.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>a.createElement(s.Z,(0,r.Z)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),p(!1);const t=u.current.nextElementSibling;t&&t.focus()}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function d(e){let{items:t,className:n,position:u,...d}=e;const p=(0,i.be)(),f=c(t,p),{collapsed:m,toggleCollapsed:h,setCollapsed:g}=(0,i.uR)({initialState:()=>!f});return(0,a.useEffect)((()=>{f&&g(!f)}),[p,f,g]),a.createElement("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":m})},a.createElement(l.Z,(0,r.Z)({role:"button",className:(0,o.Z)("menu__link menu__link--sublist",n)},d,{onClick:e=>{e.preventDefault(),h()}}),d.children??d.label),a.createElement(i.zF,{lazy:!0,as:"ul",className:"menu__list",collapsed:m},t.map(((e,t)=>a.createElement(s.Z,(0,r.Z)({mobile:!0,isDropdownItem:!0,onClick:d.onClick,activeClassName:"menu__link--active"},e,{key:t}))))))}const p=function(e){let{mobile:t=!1,...n}=e;const r=t?d:u;return a.createElement(r,n)}},3072:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(541),s=n(3919),c=n(5773);function u(e){var t;let{activeBasePath:n,activeBaseRegex:u,to:d,href:p,label:f,activeClassName:m="",prependBaseUrlToHref:h,...g}=e;const b=(0,i.Z)(d),v=(0,i.Z)(n),y=(0,i.Z)(p,{forcePrependBaseUrl:!0}),w=f&&p&&!(0,s.Z)(p),k="dropdown__link--active"===m;return a.createElement(o.Z,(0,r.Z)({},p?{href:h?y:p}:{isNavLink:!0,activeClassName:null!=(t=g.className)&&t.includes(m)?"":m,to:b,...n||u?{isActive:(e,t)=>u?(0,c.Fx)(u,t.pathname):t.pathname.startsWith(v)}:null},g),w?a.createElement("span",null,f,a.createElement(l.Z,k&&{width:12,height:12})):f)}},2207:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var r=n(7294),a=n(5525),o=n(3154),i=n(7462);const l=function(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,i.Z)({viewBox:"0 0 20 20",width:t,height:n,"aria-hidden":"true"},a),r.createElement("path",{fill:"currentColor",d:"M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"}))};var s=n(2263),c=n(5773);const u="iconLanguage_dNtB";function d(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...d}=e;const{i18n:{currentLocale:p,locales:f,localeConfigs:m}}=(0,s.Z)(),h=(0,c.l5)();function g(e){return m[e].label}const b=[...n,...f.map((e=>{const t=`pathname://${h.createUrl({locale:e,fullyQualified:!1})}`;return{isNavLink:!0,label:g(e),to:t,target:"_self",autoAddBaseUrl:!1,className:e===p?"dropdown__link--active":""}})),...a],v=t?"Languages":g(p);return r.createElement(o.Z,(0,i.Z)({},d,{mobile:t,label:r.createElement("span",null,r.createElement(l,{className:u}),r.createElement("span",null,v)),items:b}))}var p=n(1875);function f(e){let{mobile:t}=e;return t?null:r.createElement(p.Z,null)}const m={default:()=>a.Z,localeDropdown:()=>d,search:()=>f,dropdown:()=>o.Z,docsVersion:()=>n(7250).Z,docsVersionDropdown:()=>n(9308).Z,doc:()=>n(6400).Z,docSidebar:()=>n(4792).Z};function h(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:t?"dropdown":"default"}(t,void 0!==n.items),o=(e=>{const t=m[e];if(!t)throw new Error(`No NavbarItem component found for type "${e}".`);return t()})(a);return r.createElement(o,n)}},1068:(e,t,n)=>{"use strict";n.d(t,{E:()=>r});const r=e=>e?"menu__link--active":"navbar__link--active"},1217:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var r=n(7294),a=n(2859),o=n(5773),i=n(4996);function l(e){let{title:t,description:n,keywords:l,image:s,children:c}=e;const u=(0,o.pe)(t),{withBaseUrl:d}=(0,i.C)(),p=s?d(s,{absolute:!0}):void 0;return r.createElement(a.Z,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),l&&r.createElement("meta",{name:"keywords",content:Array.isArray(l)?l.join(","):l}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),c)}},9750:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(5773);const s={themedImage:"themedImage_W2Cr","themedImage--light":"themedImage--light_TfLj","themedImage--dark":"themedImage--dark_oUvU"};const c=function(e){const t=(0,i.Z)(),{isDarkTheme:n}=(0,l.If)(),{sources:c,className:u,alt:d="",...p}=e,f=t?n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.Z)({key:e,src:c[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],u)},p)))))}},467:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(412),a=n(9782);const o=e=>{if(r.Z.canUseDOM){const{themeConfig:{prism:t}}=a.Z,{additionalLanguages:r}=t;window.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete window.Prism}}},2448:(e,t,n)=>{"use strict";var r=a(n(7410));function a(e){return e&&e.__esModule?e:{default:e}}(0,a(n(467)).default)(r.default)},5773:(e,t,n)=>{"use strict";n.d(t,{pl:()=>Ie,zF:()=>fe,SG:()=>it,HX:()=>K,PO:()=>ke,D_:()=>s,L5:()=>D,bT:()=>C,qu:()=>S,Cv:()=>_e,Cn:()=>Ee,OC:()=>Ve,z5:()=>dt,kM:()=>Ae,os:()=>Y,lx:()=>Te,Wl:()=>T,_F:()=>R,Fx:()=>Xe,Mg:()=>v,bc:()=>H,Vo:()=>V,nZ:()=>W,jj:()=>Re,l5:()=>g,nT:()=>Fe,uR:()=>oe,If:()=>lt,fP:()=>c,J:()=>M,Vq:()=>_,E6:()=>E,cK:()=>ft,Rb:()=>je,t$:()=>mt,be:()=>Me,SL:()=>re,Ni:()=>bt,g8:()=>Ce,D9:()=>ne,pJ:()=>gt,RF:()=>Ye,o5:()=>Qe,DA:()=>Ze,Si:()=>ze,UB:()=>pt,LU:()=>a,pe:()=>Q,iP:()=>St});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}var o=n(7294);const i=Symbol("EmptyContext"),l=o.createContext(i);function s(e){let{children:t}=e;const[n,r]=(0,o.useState)(null),a=(0,o.useMemo)((()=>({expandedItem:n,setExpandedItem:r})),[n]);return o.createElement(l.Provider,{value:a},t)}function c(){const e=(0,o.useContext)(l);if(e===i)throw new Error("This hook requires usage of ");return e}const u="localStorage";function d(e){if(void 0===e&&(e=u),"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,p||(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),p=!0),null}var t}let p=!1;const f={get:()=>null,set:()=>{},del:()=>{}};const m=(e,t)=>{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}}(e);const n=d(null==t?void 0:t.persistence);return null===n?f:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{n.setItem(e,t)}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{n.removeItem(e)}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}}}};var h=n(6775);function g(){const{siteConfig:{baseUrl:e,url:t},i18n:{defaultLocale:n,currentLocale:a}}=(0,r.Z)(),{pathname:o}=(0,h.TH)(),i=a===n?e:e.replace(`/${a}/`,"/"),l=o.replace(e,"");return{createUrl:function(e){let{locale:r,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===n?`${i}`:`${i}${e}/`}(r)}${l}`}}}var b=n(5551);const v=(e,t)=>{const n=e=>!e||(null==e?void 0:e.endsWith("/"))?e:`${e}/`;return n(e)===n(t)},y=!!b.useAllDocsData,w=Symbol("EmptyContext"),k=(0,o.createContext)(w);function S(e){let{children:t,version:n}=e;return o.createElement(k.Provider,{value:n},t)}function E(){const e=(0,o.useContext)(k);if(e===w)throw new Error("This hook requires usage of ");return e}const x=(0,o.createContext)(w);function C(e){let{children:t,sidebar:n}=e;return o.createElement(x.Provider,{value:n},t)}function _(){const e=(0,o.useContext)(x);if(e===w)throw new Error("This hook requires usage of ");return e}function T(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"!==t.type)throw new Error(`Unexpected category item type for ${JSON.stringify(t)}`);{const e=T(t);if(e)return e}}}function R(e,t){const n=e=>void 0!==e&&v(e,t);return"link"===e.type?n(e.href):"category"===e.type&&(n(e.href)||function(e,t){return e.some((e=>R(e,t)))}(e.items,t))}const A=e=>`docs-preferred-version-${e}`,P={save:(e,t,n)=>{m(A(e),{persistence:t}).set(n)},read:(e,t)=>m(A(e),{persistence:t}).get(),clear:(e,t)=>{m(A(e),{persistence:t}).del()}};function L(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;const a={};return t.forEach((e=>{a[e]=function(e){const t=P.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(P.clear(e,n),{preferredVersionName:null})}(e)})),a}function N(){const e=(0,b.useAllDocsData)(),t=a().docs.versionPersistence,n=(0,o.useMemo)((()=>Object.keys(e)),[e]),[r,i]=(0,o.useState)((()=>function(e){const t={};return e.forEach((e=>{t[e]={preferredVersionName:null}})),t}(n)));(0,o.useEffect)((()=>{i(L({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[r,(0,o.useMemo)((()=>({savePreferredVersion:function(e,n){P.save(e,t,n),i((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}const O=(0,o.createContext)(null);function D(e){let{children:t}=e;return y?o.createElement(I,null,t):t}function I(e){let{children:t}=e;const n=N();return o.createElement(O.Provider,{value:n},t)}var F=n(9935);function M(e){void 0===e&&(e=F.m);const t=(0,b.useDocsData)(e),[n,r]=function(){const e=(0,o.useContext)(O);if(!e)throw new Error('Can\'t find docs preferred context, maybe you forgot to use the "DocsPreferredVersionContextProvider"?');return e}(),{preferredVersionName:a}=n[e];return{preferredVersion:a?t.versions.find((e=>e.name===a)):null,savePreferredVersionName:(0,o.useCallback)((t=>{r.savePreferredVersion(e,t)}),[r,e])}}var j=n(7594),B=n.n(j);const U=/title=(["'])(.*?)\1/,$=/{([\d,-]+)}/,z=["js","jsBlock","jsx","python","html"],q={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},python:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},Z=["highlight-next-line","highlight-start","highlight-end"],G=function(e){void 0===e&&(e=z);const t=e.map((e=>{const{start:t,end:n}=q[e];return`(?:${t}\\s*(${Z.join("|")})\\s*${n})`})).join("|");return new RegExp(`^\\s*(?:${t})\\s*$`)};function H(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.match(U))||void 0===t?void 0:t[2])&&void 0!==n?n:""}function V(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return null==t?void 0:t.replace(/language-/,"")}function W(e,t,n){let r=e.replace(/\n$/,"");if(t&&$.test(t)){const e=t.match($)[1];return{highlightLines:B()(e).filter((e=>e>0)).map((e=>e-1)),code:r}}if(void 0===n)return{highlightLines:[],code:r};const a=(e=>{switch(e){case"js":case"javascript":case"ts":case"typescript":return G(["js","jsBlock"]);case"jsx":case"tsx":return G(["js","jsBlock","jsx"]);case"html":return G(["js","jsBlock","html"]);case"python":case"py":return G(["python"]);default:return G()}})(n),o=r.split("\n");let i,l="";for(let c=0;cvoid 0!==e))){case"highlight-next-line":l+=`${c},`;break;case"highlight-start":i=c;break;case"highlight-end":l+=`${i}-${c-1},`}o.splice(c,1)}else c+=1}const s=B()(l);return r=o.join("\n"),{highlightLines:s,code:r}}const K="default";function Y(e,t){return`docs-${e}-${t}`}const Q=e=>{const{siteConfig:t}=(0,r.Z)(),{title:n,titleDelimiter:a}=t;return e&&e.trim().length?`${e.trim()} ${a} ${n}`:n},X=["zero","one","two","few","many","other"];function J(e){return X.filter((t=>e.includes(t)))}J(["one","other"]);const ee="undefined"!=typeof window?o.useLayoutEffect:o.useEffect;function te(e){const t=(0,o.useRef)(e);return ee((()=>{t.current=e}),[e]),(0,o.useCallback)((function(){return t.current(...arguments)}),[])}function ne(e){const t=(0,o.useRef)();return ee((()=>{t.current=e})),t.current}function re(e){const t=(0,h.TH)(),n=ne(t),r=te(e);(0,o.useEffect)((()=>{t!==n&&r({location:t,previousLocation:n})}),[r,t,n])}var ae=n(412);function oe(e){let{initialState:t}=e;const[n,r]=(0,o.useState)(null!=t&&t),a=(0,o.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const ie={display:"none",overflow:"hidden",height:"0px"},le={display:"block",overflow:"visible",height:"auto"};function se(e,t){const n=t?ie:le;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function ce(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,o.useRef)(!1);(0,o.useEffect)((()=>{const e=t.current;function o(){var t,n;const a=e.scrollHeight,o=null!==(t=null==r?void 0:r.duration)&&void 0!==t?t:function(e){const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(a);return{transition:`height ${o}ms ${null!==(n=null==r?void 0:r.easing)&&void 0!==n?n:"ease-in-out"}`,height:`${a}px`}}function i(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return se(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=ie.height,e.style.overflow=ie.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function ue(e){if(!ae.Z.canUseDOM)return e?ie:le}function de(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const c=(0,o.useRef)(null);return ce({collapsibleRef:c,collapsed:n,animation:a}),o.createElement(t,{ref:c,style:s?void 0:ue(n),onTransitionEnd:e=>{"height"===e.propertyName&&(se(c.current,n),null==i||i(n))},className:l},r)}function pe(e){let{collapsed:t,...n}=e;const[r,a]=(0,o.useState)(!t);(0,o.useLayoutEffect)((()=>{t||a(!0)}),[t]);const[i,l]=(0,o.useState)(t);return(0,o.useLayoutEffect)((()=>{r&&l(t)}),[r,t]),r?o.createElement(de,{...n,collapsed:i}):null}function fe(e){let{lazy:t,...n}=e;const r=t?pe:de;return o.createElement(r,{...n})}var me=n(2389),he=n(6010);const ge="details_lb9f",be="isBrowser_bmU9",ve="collapsibleContent_i85q";function ye(e){return!!e&&("SUMMARY"===e.tagName||ye(e.parentElement))}function we(e,t){return!!e&&(e===t||we(e.parentElement,t))}const ke=function(e){let{summary:t,children:n,...r}=e;const a=(0,me.Z)(),i=(0,o.useRef)(null),{collapsed:l,setCollapsed:s}=oe({initialState:!r.open}),[c,u]=(0,o.useState)(r.open);return o.createElement("details",{...r,ref:i,open:c,"data-collapsed":l,className:(0,he.Z)(ge,{[be]:a},r.className),onMouseDown:e=>{ye(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;ye(t)&&we(t,i.current)&&(e.preventDefault(),l?(s(!1),u(!0)):s(!0))}},t,o.createElement(fe,{lazy:!1,collapsed:l,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{s(e),u(!e)}},o.createElement("div",{className:ve},n)))};const Se=(0,o.createContext)(null);function Ee(e){let{children:t}=e;return o.createElement(Se.Provider,{value:(0,o.useState)(null)},t)}function xe(){const e=(0,o.useContext)(Se);if(null===e)throw new Error("MobileSecondaryMenuProvider was not used correctly, context value is null");return e}function Ce(){const[e]=xe();if(e){const t=e.component;return function(n){return o.createElement(t,{...e.props,...n})}}return()=>{}}function _e(e){let{component:t,props:n}=e;const[,r]=xe(),a=(i=n,(0,o.useMemo)((()=>i),[...Object.keys(i),...Object.values(i)]));var i;return(0,o.useEffect)((()=>{r({component:t,props:a})}),[r,t,a]),(0,o.useEffect)((()=>()=>r(null)),[r]),null}function Te(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function Re(e){return Array.from(new Set(e))}const Ae={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"},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",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:{}},Pe=m("docusaurus.announcement.dismiss"),Le=m("docusaurus.announcement.id"),Ne=()=>"true"===Pe.get(),Oe=e=>Pe.set(String(e)),De=(0,o.createContext)(null);function Ie(e){let{children:t}=e;const n=(()=>{const{announcementBar:e}=a(),t=(0,me.Z)(),[n,r]=(0,o.useState)((()=>!!t&&Ne()));(0,o.useEffect)((()=>{r(Ne())}),[]);const i=(0,o.useCallback)((()=>{Oe(!0),r(!0)}),[]);return(0,o.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=Le.get();"annoucement-bar"===n&&(n="announcement-bar");const a=t!==n;Le.set(t),a&&Oe(!1),!a&&Ne()||r(!1)}),[e]),(0,o.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])})();return o.createElement(De.Provider,{value:n},t)}const Fe=()=>{const e=(0,o.useContext)(De);if(!e)throw new Error("useAnnouncementBar(): AnnouncementBar not found in React context: make sure to use the AnnouncementBarProvider on top of the tree");return e};function Me(){const{siteConfig:{baseUrl:e}}=(0,r.Z)(),{pathname:t}=(0,h.TH)();return t.replace(e,"/")}n(5999);function je(e){!function(e){const{block:t}=(0,h.k6)(),n=(0,o.useRef)(e);(0,o.useEffect)((()=>{n.current=e}),[e]),(0,o.useEffect)((()=>t(((e,t)=>n.current(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function Be(e){const t=e.getBoundingClientRect();return t.top===t.bottom?Be(e.parentNode):t}function Ue(e,t){let{anchorTopOffset:n}=t;var r;const a=e.find((e=>Be(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}const ze=function(e){const t=(0,o.useRef)(void 0),n=$e();(0,o.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:r,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:i}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(r),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const r=[];for(let a=t;a<=n;a+=1)r.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:o,maxHeadingLevel:i}),s=Ue(l,{anchorTopOffset:n.current}),c=e.find((e=>s&&s.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){var r;n?(t.current&&t.current!==e&&(null===(r=t.current)||void 0===r||r.classList.remove(a)),e.classList.add(a),t.current=e,e.scrollIntoView({block:"nearest"})):e.classList.remove(a)}(e,e===c)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])};function qe(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:r}=e;return t.flatMap((e=>{const t=qe({toc:e.children,minHeadingLevel:n,maxHeadingLevel:r});return function(e){return e.level>=n&&e.level<=r}(e)?[{...e,children:t}]:t}))}function Ze(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:r}=e;return(0,o.useMemo)((()=>qe({toc:t,minHeadingLevel:n,maxHeadingLevel:r})),[t,n,r])}function Ge(){const e=(0,o.useRef)(!0);return(0,o.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}const He=(0,o.createContext)(void 0);function Ve(e){let{children:t}=e;return o.createElement(He.Provider,{value:Ge()},t)}function We(){const e=(0,o.useContext)(He);if(null==e)throw new Error('"useScrollController" is used but no context provider was found in the React tree.');return e}const Ke=()=>ae.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function Ye(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=We(),r=(0,o.useRef)(Ke()),a=te(e);(0,o.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=Ke();a&&a(e,r.current),r.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function Qe(){const e=We(),t=function(){const e=(0,o.useRef)({elem:null,top:0}),t=(0,o.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,o.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,o.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,o.useRef)(void 0),r=(0,o.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,o.useLayoutEffect)((()=>{var e;null===(e=n.current)||void 0===e||e.call(n)})),{blockElementScrollPositionUntilNextRender:r}}function Xe(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}const Je=m("theme"),et="light",tt="dark",nt=e=>e===tt?tt:et,rt=e=>{m("theme").set(nt(e))};function at(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=a(),[r,i]=(0,o.useState)((e=>ae.Z.canUseDOM?nt(document.documentElement.getAttribute("data-theme")):nt(e))(e)),l=(0,o.useCallback)((()=>{i(et),rt(et)}),[]),s=(0,o.useCallback)((()=>{i(tt),rt(tt)}),[]);return(0,o.useEffect)((()=>{document.documentElement.setAttribute("data-theme",nt(r))}),[r]),(0,o.useEffect)((()=>{if(!t)try{const e=Je.get();null!==e&&i(nt(e))}catch(e){console.error(e)}}),[t,i]),(0,o.useEffect)((()=>{t&&!n||window.matchMedia("(prefers-color-scheme: dark)").addListener((e=>{let{matches:t}=e;i(t?tt:et)}))}),[t,n]),{isDarkTheme:r===tt,setLightTheme:l,setDarkTheme:s}}const ot=o.createContext(void 0);function it(e){let{children:t}=e;const{isDarkTheme:n,setLightTheme:r,setDarkTheme:a}=at(),i=(0,o.useMemo)((()=>({isDarkTheme:n,setLightTheme:r,setDarkTheme:a})),[n,r,a]);return o.createElement(ot.Provider,{value:i},t)}function lt(){const e=(0,o.useContext)(ot);if(null==e)throw new Error('"useColorMode()" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.');return e}const st="docusaurus.tab.",ct=(0,o.createContext)(void 0);function ut(){const[e,t]=(0,o.useState)({}),n=(0,o.useCallback)(((e,t)=>{m(`docusaurus.tab.${e}`).set(t)}),[]);return(0,o.useEffect)((()=>{try{const e={};(function(e){void 0===e&&(e=u);const t=d(e);if(!t)return[];const n=[];for(let r=0;r{if(t.startsWith(st)){const n=t.substring(st.length);e[n]=m(t).get()}})),t(e)}catch(e){console.error(e)}}),[]),{tabGroupChoices:e,setTabGroupChoices:(e,r)=>{t((t=>({...t,[e]:r}))),n(e,r)}}}function dt(e){let{children:t}=e;const{tabGroupChoices:n,setTabGroupChoices:r}=ut(),a=(0,o.useMemo)((()=>({tabGroupChoices:n,setTabGroupChoices:r})),[n,r]);return o.createElement(ct.Provider,{value:a},t)}function pt(){const e=(0,o.useContext)(ct);if(null==e)throw new Error('"useUserPreferencesContext" is used outside of "Layout" component.');return e}function ft(e){const[t,n]=(0,o.useState)(e),r=(0,o.useRef)(!1),a=(0,o.useRef)(0),i=(0,o.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return Ye(((t,o)=>{if(!e)return;const i=t.scrollY;if(i=l?n(!1):i+c{if(e)return t.location.hash?(r.current=!0,void n(!1)):void n(!0)})),{navbarRef:i,isNavbarVisible:t}}function mt(){(0,o.useEffect)((()=>{const e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),()=>{document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])}const ht={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)"}}]};function gt(){const{prism:e}=a(),{isDarkTheme:t}=lt(),n=e.theme||ht,r=e.darkTheme||n;return t?r:n}function bt(e){void 0===e&&(e=!0),(0,o.useEffect)((()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[e])}const vt="desktop",yt="mobile",wt="ssr";function kt(){return ae.Z.canUseDOM?window.innerWidth>996?vt:yt:wt}function St(){const[e,t]=(0,o.useState)((()=>kt()));return(0,o.useEffect)((()=>{function e(){t(kt())}return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),e}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},8780: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.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta})},2358:(e,t,n)=>{"use strict";n.d(t,{lX:()=>E,q_:()=>A,ob:()=>h,PP:()=>L,Ep:()=>m,Hp:()=>g});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const s=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=l(t),a=l(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var c=n(2177);function u(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function p(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 f(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function m(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function h(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&s(e.state,t.state)}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!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,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=h(e,t,p(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={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]||a}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 a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},6743:(e,t,n)=>{"use strict";n.r(t)},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;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 a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}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=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{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)*a(Math.random()*t,.1,.95)),t=a(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 a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),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,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[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===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,o){for(var i,l,s=a(e),c=1;c{function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,a,o]=t;if(r&&o){r=parseInt(r),o=parseInt(o);const e=r{"use strict";n.r(t),n.d(t,{default:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);E+=S.value.length,S=S.next){var x=S.value;if(t.length>e.length)return;if(!(x instanceof a)){var C,_=1;if(v){if(!(C=o(k,E,e,b))||C.index>=e.length)break;var T=C.index,R=C.index+C[0].length,A=E;for(A+=S.value.length;T>=A;)A+=(S=S.next).value.length;if(E=A-=S.value.length,S.value instanceof a)continue;for(var P=S;P!==t.tail&&(Ad.reach&&(d.reach=D);var I=S.prev;if(N&&(I=s(t,I,N),E+=N.length),c(t,I,_),S=s(t,I,new a(p,g?r.tokenize(L,g):L,y,L)),O&&s(t,S,O),_>1){var F={cause:p+","+m,reach:D};i(e,t,n,S.prev,E,F),d&&F.reach>d.reach&&(d.reach=F.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,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,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"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\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={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),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,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},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,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),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,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}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={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|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:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),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:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,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,function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\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:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),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=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=c(u[a]),f=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,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 d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},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"],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;n0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},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,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;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("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),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.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.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},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,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){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?: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|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)\b/i,{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,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,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.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\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})),o=/"(?:[^"\\\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"(?:"+a+"|"+o+")"}))),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(o),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);const o=a},9901: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"},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"},bash:{title:"Bash",alias:"shell",aliasTitles:{shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},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"},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"},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"},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"},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"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},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",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"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},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"},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"},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"},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"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},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"},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"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(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(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642: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 a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}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;a(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in m=p)u[y]=!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,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}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},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,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:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n