diff --git a/blog/2019-05-28-first-blog-post.md b/blog/2019-05-28-first-blog-post.md deleted file mode 100644 index 02f3f81..0000000 --- a/blog/2019-05-28-first-blog-post.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: first-blog-post -title: First Blog Post -authors: - name: Gao Wei - title: Docusaurus Core Team - url: https://github.com/wgao19 - image_url: https://github.com/wgao19.png -tags: [hola, docusaurus] ---- - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2019-05-29-long-blog-post.md b/blog/2019-05-29-long-blog-post.md deleted file mode 100644 index 26ffb1b..0000000 --- a/blog/2019-05-29-long-blog-post.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -slug: long-blog-post -title: Long Blog Post -authors: endi -tags: [hello, docusaurus] ---- - -This is the summary of a very long blog post, - -Use a `` comment to limit blog post size in the list view. - - - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet - -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet diff --git a/blog/2021-08-01-mdx-blog-post.mdx b/blog/2021-08-01-mdx-blog-post.mdx deleted file mode 100644 index c04ebe3..0000000 --- a/blog/2021-08-01-mdx-blog-post.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -slug: mdx-blog-post -title: MDX Blog Post -authors: [slorber] -tags: [docusaurus] ---- - -Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). - -:::tip - -Use the power of React to create interactive blog posts. - -```js - -``` - - - -::: diff --git a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg b/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg deleted file mode 100644 index 11bda09..0000000 Binary files a/blog/2021-08-26-welcome/docusaurus-plushie-banner.jpeg and /dev/null differ diff --git a/blog/2021-08-26-welcome/index.md b/blog/2021-08-26-welcome/index.md deleted file mode 100644 index 9455168..0000000 --- a/blog/2021-08-26-welcome/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -slug: welcome -title: Welcome -authors: [slorber, yangshun] -tags: [facebook, hello, docusaurus] ---- - -[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). - -Simply add Markdown files (or folders) to the `blog` directory. - -Regular blog authors can be added to `authors.yml`. - -The blog post date can be extracted from filenames, such as: - -- `2019-05-30-welcome.md` -- `2019-05-30-welcome/index.md` - -A blog post folder can be convenient to co-locate blog post images: - -![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) - -The blog supports tags as well! - -**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/blog/authors.yml b/blog/authors.yml deleted file mode 100644 index bcb2991..0000000 --- a/blog/authors.yml +++ /dev/null @@ -1,17 +0,0 @@ -endi: - name: Endilie Yacop Sucipto - title: Maintainer of Docusaurus - url: https://github.com/endiliey - image_url: https://github.com/endiliey.png - -yangshun: - name: Yangshun Tay - title: Front End Engineer @ Facebook - url: https://github.com/yangshun - image_url: https://github.com/yangshun.png - -slorber: - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png diff --git a/docs/API/api-overview.md b/docs/API/api-overview.md index 761bb13..094a981 100644 --- a/docs/API/api-overview.md +++ b/docs/API/api-overview.md @@ -1,5 +1,5 @@ --- -docstatus: DRAFT +docstatus: 90% id: qrl-api-overview title: QRL API Overview hide_title: false @@ -7,7 +7,7 @@ hide_table_of_contents: false sidebar_label: API Overview sidebar_position: 1 pagination_label: API Overview -custom_edit_url: https://github.com/fr1t2/documentation/edit/main/docs/API/api-overview.md +custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/API/api-overview.md description: QRL API Overview keywords: - docs @@ -25,25 +25,19 @@ import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; -The QRL API's are the portal into the inner workings of the Quantum Resistant Ledger's blockchain and wallet functions. - -These API allow developers and advanced users access to core functions and information from the blockchain. +The QRL API's are the developers portal into the inner workings of the Quantum Resistant Ledger's blockchain. These API's allow developers and advanced users access to core functions and information from the blockchain. :::info -While there is no authentication required to interact with most of the QRL's API's, you will need to be able to reach the API service IP and Port of the node you are attempting to connect to. +While there is no authentication required to interact with most of the QRL's API's, you will need access to an API service IP and Port of a node running on the QRL network. Best practice is to [run your own QRL node](/use/node/overview). ::: ## gRPC -The QRL API is organized around [gRPC (Google Remote Procedure Call)](https://grpc.io/). GRPC uses [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview) for serializing structured data. - -Every function requires an object as parameter and returns another object as response. Our qrl.proto file lists the different objects as messages in two categories, request (named \*Req) and response (named \*Resp). +The QRL API is organized around [gRPC (Google Remote Procedure Call)](https://grpc.io/). GRPC uses [protocol buffers](https://developers.google.com/protocol-buffers/docs/overview) for serializing structured data. Every function requires an object as parameter and returns another object as response. Our qrl.proto file lists the different objects as messages in two categories, request (*Req*) and response (*Resp*). -:::info More information on GRPC can be found in [their official documentation](https://grpc.io/) -:::

Walletd Rest Proxy - API

-

The QRL WalletD Rest Proxy makes integrating QRL even easier

+

The QRL Wallet Daemon Rest Proxy makes integrating QRL even easier

diff --git a/docs/API/explorer-api.md b/docs/API/explorer-api.md index 8560930..81e052d 100644 --- a/docs/API/explorer-api.md +++ b/docs/API/explorer-api.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: explorer-api title: QRL API - Explorer hide_title: false @@ -100,7 +100,7 @@ def getblockByNumber(block_number): jsonResponse = getBlockResp return(jsonResponse) -getblockByNumber("34556") +print(getblockByNumber("34556")) ``` @@ -149,7 +149,7 @@ def getTransactionByHash(tx_hash): jsonResponse = getTXResp return(jsonResponse) -getTransactionByHash("c9656d989bce2000c794314b73882b0ebb99fa1fe58e7a466a8a64e7b851a4c6") +print(getTransactionByHash("c9656d989bce2000c794314b73882b0ebb99fa1fe58e7a466a8a64e7b851a4c6")) ``` ## Address @@ -194,7 +194,7 @@ def getAddress(address): jsonResponse = getAddressResp return(jsonResponse) -getAddress("Q01040007a591a62c23ed27adfe3df8eb812ee5e4b73e47fb8471e8d78ecd9b4cadc325ca36d86e") +print(getAddress("Q01040007a591a62c23ed27adfe3df8eb812ee5e4b73e47fb8471e8d78ecd9b4cadc325ca36d86e")) ``` @@ -240,7 +240,7 @@ def getEmission(): return(jsonResponse) -getEmission() +print(getEmission()) ``` @@ -284,7 +284,7 @@ def getEmissionText(): return(jsonResponse) -getEmissionText() +print(getEmissionText()) ``` ## Reward @@ -329,7 +329,7 @@ def getReward(): return(jsonResponse) -getReward() +print(getReward()) ``` ## Reward Text @@ -370,7 +370,7 @@ def getRewardText(): return(jsonResponse) -getRewardText() +print(getRewardText()) ``` ## RewardShor @@ -413,7 +413,7 @@ def getRewardShor(): return(jsonResponse) -getRewardShor() +print(getRewardShor()) ``` ## RewardShor Text @@ -454,7 +454,7 @@ def getRewardShorText(): return(jsonResponse) -getRewardShorText() +print(getRewardShorText()) ``` @@ -502,7 +502,7 @@ def getBlockheight(): return(jsonResponse) -getBlockheight() +print(getBlockheight()) ``` @@ -544,8 +544,7 @@ def getBlockheightText(): jsonResponse = getBlockheightTextResp return(jsonResponse) - -getBlockheightText() +print(getBlockheightText()) ``` @@ -594,7 +593,7 @@ def getStatus(): return(json.dumps(jsonResponse, indent=4, sort_keys=True)) -getStatus() +print(getStatus()) ``` @@ -618,7 +617,7 @@ Get the mining status information for the current QRL block. :::info -`/api/status` requests will only return in JSON format. +`/api/miningstats` requests will only return in JSON format. Parse the response using json tools in a language of your choice. ::: @@ -626,22 +625,21 @@ Parse the response using json tools in a language of your choice. **cURL Example** ```bash -curl -XGET https://explorer.theqrl.org/api/status +curl -XGET https://explorer.theqrl.org/api/miningstats ``` **Python Example** ```python -def getStatus(): +def getMiningStats(): import requests import json - request = requests.get("https://explorer.theqrl.org/api/status") + request = requests.get("https://explorer.theqrl.org/api/miningstats") response = request.text getStatusResp = json.loads(response) jsonResponse = getStatusResp - #return(jsonResponse) return(json.dumps(jsonResponse, indent=4, sort_keys=True)) -getStatus() +print(getMiningStats()) ``` \ No newline at end of file diff --git a/docs/API/qrl-api.md b/docs/API/qrl-api.md index 7c348e9..849f402 100644 --- a/docs/API/qrl-api.md +++ b/docs/API/qrl-api.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qrl-public-api title: QRL Public API hide_title: false @@ -8,7 +8,7 @@ sidebar_label: API - Public sidebar_position: 2 pagination_label: API - Public custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/API/qrl-api.md -description: QRL Public API +description: QRL Public API Documentation and Reference for programatic interaction with the QRL Blockchain keywords: - docs - build @@ -25,24 +25,26 @@ import TabItem from '@theme/TabItem'; ## Introduction -The QRL Public API allows developers to interact with the QRL blockchain network, perform various operations, and access blockchain data. +The QRL Public API allows developers to interact with the QRL blockchain network, perform transactions, and access blockchain data. Used to lookup information, send and process transactions, on the network and gather information on the node or network status. -While there is no authentication required to interact with most of the QRL's API's, you will need to be able to reach a node at the API service IP and port. It is recommended that you run a local QRL node and serve the API from the local node. - -This may require additional configuration through your network and settings will differ depending on your configuration. This is out of scope for this document. +While there is no authentication required to interact with most of the QRL's API's, you will need to be able to reach a node at the API service IP and port in order to interact with the QRL Blockchain. It is recommended that you run a local QRL node and serve the API from the local node. More information can be found to [run your own QRL node](/use/node/overview) here. ## Prerequisites Before using the API, make sure you have the following prerequisites: -- Connection to a synced QRL Node (*remote or local*) +- Connection to a synced [QRL Node](/use/node/overview) (*remote or local*) - Open API port (*Default enabled at port 19009) - Basic understanding of the QRL blockchain and gRPC ## Base URL -The base URL for accessing the QRL API running on a local node is: `127.0.0.1:19009` +The base URL for accessing the QRL API running on a local node is: `127.0.0.1:19009`. This address is configurable and may be different depending on your setup. + +:::info +See the [Node Configuration documentation](/use/node/config) for more information for setting port numbers for your QRL Node. Additional network settings and configuration may be needed to reach a node and is outside the scope of this document. +::: ## Protobuf Definition @@ -291,7 +293,6 @@ Please refer to the [NodeInfo](#nodeinfo) content for more details. ### GetKnownPeers :::caution Need clarification -Does this return a list of Peers IP's from the `Peer` function? Or detailed information from the `PeerInfo` function? ::: Returns data on known peers connected to the node queried. @@ -1307,7 +1308,6 @@ message GetChainStatsResp { ### GetAddressFromPK :::caution Define this function -Define this function and request parameters ::: - + ```go service WalletAPI { rpc AddNewAddress(AddNewAddressReq) returns (AddNewAddressResp); @@ -298,6 +287,7 @@ service WalletAPI { + ```go message AddNewAddressReq { uint64 height = 1; @@ -332,11 +322,9 @@ message AddNewAddressResp { | code | UInt32 | Error Code. Only appears if any exception is triggered. | | error | String | Error Message. Only appears if any exception is triggered. | - -
@@ -448,12 +436,6 @@ print(add_new_address_resp) ### AddNewAddressWithSlaves -:::caution NEED HELP! -Add more details on this funciton: -- How are the slaves broadcast onto the network? -- Where is the slaves file located? -::: - Adds a new address into the `~/.qrl/walletd.json` wallet file and generates slaves for the address. :::info @@ -491,6 +473,7 @@ This address and slave keys will be added to the \~/.qrl/walletd.json file, *thi ]}> + ```go service WalletAPI { rpc AddNewAddressWithSlaves(AddNewAddressWithSlavesReq) returns (AddNewAddressResp); @@ -1773,10 +1756,6 @@ The OTS key has already been used, and cannot be re-used for transactions. Use t ### RelayTransferTxnBySlave -:::caution CLARIFICATION NEEDED -Validate the description of this function and if related nomenclature is correct. -::: - Relay a transfer transaction using a slave address contained in the local wallet. :::caution Need Code Examples -Finish the code examples below for this function! ::: diff --git a/docs/API/walletd-rest-proxy.md b/docs/API/walletd-rest-proxy.md index 02108ef..3124a80 100644 --- a/docs/API/walletd-rest-proxy.md +++ b/docs/API/walletd-rest-proxy.md @@ -1,5 +1,5 @@ --- -docstatus: 60% +docstatus: 90% id: walletd-rest-proxy title: QRL API - walletd-rest-proxy hide_title: false @@ -8,7 +8,7 @@ sidebar_label: API - walletd-rest-proxy sidebar_position: 4 pagination_label: API - walletd-rest-proxy custom_edit_url: https://github.com/theQRL/documentation/edit/main/docs/API/walletd-rest-proxy.md -description: QRL API - walletd-rest-proxy +description: QRL API - walletd-rest-proxy API for programatic interaction with the QRL Blockchain keywords: - docs - build @@ -23,21 +23,15 @@ slug: /api/walletd-rest-proxy import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; -Interaction with wallet functions is simplified with the use of the walletd-rest-proxy, allowing typical REST API calls to be made to the -QRL node. This proxy eliminates any need to interact with the GRPC functions, allowing typical CURL calls to be utilized making interaction -with wallet functions simple. - - - -Interaction with wallet functions is simplified with the use of the walletd-rest-proxy, allowing typical REST API calls to be made to the -QRL node. This proxy eliminates any need to interact with the GRPC functions, allowing typical CURL calls to be utilized making interaction with wallet functions simple. +Interaction with wallet functions is simplified with the use of the walletd-rest-proxy, allowing typical REST API calls to be made to the QRL node. +This proxy eliminates any need to interact with the GRPC functions, allowing typical CURL calls to be utilized making interaction with wallet functions simple. #### Automatic Slave transactions -The `wallets-rest-proxy` provides an automatic slave system, where new slaves are generated under a `root_slave` with a 3rd layer of recursion -of Merkle trees under a single private key. This allows a nearly unlimited amount of outgoing transactions, where new slaves are automatically generated when all previous -tier 3 slave OTS keys are used. +The `wallets-rest-proxy` provides an automatic slave system, where new slaves are generated under a `root_slave` with a 3rd layer of recursion of Merkle trees under a single private key. + +This allows a nearly unlimited amount of outgoing transactions, where new slaves are automatically generated when all previous tier 3 slave OTS keys are used. :::info Automatic Slave Transaction Diagram ![auto slave tree system diagram](./assets/img/Auto-slave_tree-System.png) @@ -54,14 +48,16 @@ This system also uses the [QRL walletd-rest-proxy](https://github.com/theQRL/wal ## `walletd-rest-proxy` General Info -By default the `walletd-rest-proxy` expects there to be a QRL node running on the localhost with default ports available. +By default the `walletd-rest-proxy` expects there to be a QRL node running on the `localhost` with default ports available. - Wallet API on `19010` +- Node API on `19009` +These [configuration settings](https://github.com/theQRL/QRL/blob/353b32aeb3897c7ffb50c9a5759091928f493f1d/src/qrl/core/config.py#L121) can be +overridden. See the [node configuration documentation](/use/node/config) for information on setting these to a different port in your local node. -By default the API expects there to be a QRL node running on the localhost with port `19009` available. -This [configuration setting](https://github.com/theQRL/QRL/blob/353b32aeb3897c7ffb50c9a5759091928f493f1d/src/qrl/core/config.py#L121) can be -overridden with the `self.public_api_server = "127.0.0.1:19009"` directive. +- `self.public_api_server = "127.0.0.1:19009"` +- `self.wallet_api_port = 19010` The wallet daemon will by default create the wallet file at `~/.qrl/walletd.json`. @@ -102,13 +98,7 @@ Clone walletd-rest-proxy from the repo hosted at https://github.com/theQRL/walle ```bash git clone github.com/theQRL/walletd-rest-proxy -``` - -```bash cd walletd-rest-proxy -``` - -```bash go build ``` @@ -147,9 +137,6 @@ Enter the directory and build the package. ```bash cd walletd-rest-proxy -``` - -```bash go build ``` @@ -336,13 +323,11 @@ Higher tree heights may take longer to generate. --- - ## AddNewAddressWithSlaves - Adds a new address into the `~/.qrl/walletd.json` wallet file, generates and transmits slave transaction to the chain. - + :::info This command will create an unlimited address, re-generating slave keys as needed. Additionally the system will preserve 5 OTS keys from each slave to ensure there are no lost funds with this system. @@ -1960,7 +1945,7 @@ Relay up to 80 bytes of a message onto the network from given address. Message length must be validated prior to submitting to the node or an OTS key will be consumed and the transaction will fail. :::tip -This function can be used to [notarize](/use/tools/notarize) data or for on-chain voting, as well as any free form data. +This function can be used to [notarize](/use/tools/notarize) data or for any free form data. See the [message encoding](/build/messages/message-tx-encoding) documentation for information on established encoding formats. ::: @@ -2125,7 +2110,7 @@ Relay up to 80 bytes of a message onto the network from given address using slav Message length must be validated prior to submitting to the node or an OTS key will be consumed and the transaction will fail. :::tip -This function can be used to [notarize](/use/tools/notarize/overview) data or for on-chain voting, as well as any free form data. +This function can be used to [notarize](/use/tools/notarize/overview) data or for as any free form data. See the [message encoding](/build/messages/message-tx-encoding) documentation for information on established encoding formats. ::: @@ -2860,8 +2845,6 @@ print(relayTransferTokenTxn.text) ## RelayTransferTokenTxnBySlave -## RelayTransferTokenTxn - Send a token transfer to another QRL address using the automatic slave key system. #### RelayTransferTokenTxnBySlave Request diff --git a/docs/API/zeus-proxy.md b/docs/API/zeus-proxy.md index c4e5a8a..2960e64 100644 --- a/docs/API/zeus-proxy.md +++ b/docs/API/zeus-proxy.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: zeus-proxy title: QRL Zeus Proxy API hide_title: false @@ -8,7 +8,7 @@ sidebar_label: API - Zeus Proxy sidebar_position: 5 pagination_label: API - Zeus Proxy custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/API/zeus-proxy.md -description: QRL API - Zeus Proxy +description: QRL API - Zeus Proxy web API for programatic interaction with the QRL Blockchain keywords: - docs - build @@ -19,6 +19,8 @@ image: /assets/img/icons/yellow.png slug: /api/zeus-proxy --- +The QRL Zeus proxy is intended to simplify interaction with the QRL gRPC API's and allow an additional on-road into the QRL Ecosystem. + ## Install @@ -28,8 +30,8 @@ slug: /api/zeus-proxy 1. Clone repo 2. Install meteor -3. Npm install -4. npm start +3. `npm install` +4. `npm start` This will launch a local interface at 127.0.0.1:3000 with some limited examples. This allows one to place API calls to the Zeus proxy which in turn converts these to gRPC calls and communicates with the QRL Network. @@ -44,7 +46,7 @@ All of the [QRL Public API service](http://127.0.0.1:3000/api/qrl-public-api#pub ### Usage Examples -The following examples should be able to get you started with the Zeus Proxy. +The following examples should get you started with the Zeus Proxy. :::note Please note, the Zeus proxy is intended to pass through raw data exactly as the gRPC API call expects it. This may make some of the functions a little more complex through the proxy. diff --git a/docs/Build/Address/address-scheme.md b/docs/Build/Address/address-scheme.md index c34b47c..458e506 100644 --- a/docs/Build/Address/address-scheme.md +++ b/docs/Build/Address/address-scheme.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qrl-address-scheme title: QRL Address Scheme hide_title: false diff --git a/docs/Build/Address/hexphrase.md b/docs/Build/Address/hexphrase.md index e16ed55..ff940e2 100644 --- a/docs/Build/Address/hexphrase.md +++ b/docs/Build/Address/hexphrase.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: hexphrase title: QRL Address Hexphrase hide_title: false @@ -18,7 +18,7 @@ image: /assets/img/icons/yellow.png slug: /build/address/hexphrase --- -A QRL Addresses secret key can be represented in a Hexphrase, or in a hexadecimal format. This key is the seed to generating the XMSS tree that correlates to the QRL public address. +A QRL Address's secret key can be represented in a Hexphrase, or in a hexadecimal format. This key is the seed to generating the XMSS tree that correlates to the QRL public address. :::info Example Hexphrase `000400dbf4ead7e3eec1155b6ea44b7181c94cb7cadee49969eb798fdea34ad5c3c01b64b4661dfbeb51f76609a0c182eb7a47` diff --git a/docs/Build/Address/mnemonic.md b/docs/Build/Address/mnemonic.md index 2166b41..8eff12f 100644 --- a/docs/Build/Address/mnemonic.md +++ b/docs/Build/Address/mnemonic.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: mnemonic title: QRL Address Mnemonic hide_title: false @@ -18,11 +18,11 @@ image: /assets/img/icons/yellow.png slug: /build/address/mnemonic --- - A mnemonic phrase is a list of words that cryptographically represent the seed when compared to a given word list and passed through an algorithm. +The QRL uses [this wordlist](https://github.com/theQRL/qrllib/blob/4c63c7e4976ba111e5e405de466f824d8ef1deb8/src/rust_wrapper/qrl/wordlist.rs#L4) to generate mnemonic phrase that represents a QRL addresses secret keys. -Depending on where these words are in the list assigns a unique number to each word. When passed through an algorithm they produce the same SEED used to generate a XMSS tree. +Depending on where these words are in the list assigns a unique number to each word. When passed through an [algorithm](https://github.com/theQRL/wallet.js/blob/bcf1587bea0455554e669c775c38faeca6faa1e3/src/utils/mnemonic.js#L2) they produce the same SEED used to generate a XMSS tree. The Mnemonic is a user friendly way to represent the hexseed and is less error prone than a hexseed when a user is presented with backing up and storing key information. diff --git a/docs/Build/Address/slaves.md b/docs/Build/Address/slaves.md index 67bd49c..ddf1ad6 100644 --- a/docs/Build/Address/slaves.md +++ b/docs/Build/Address/slaves.md @@ -1,5 +1,5 @@ --- -docstatus: DRAFT +docstatus: 60% id: slave-keys title: QRL Slave Keys hide_title: false @@ -17,12 +17,55 @@ image: /assets/img/icons/yellow.png slug: /build/address/slave-keys --- -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! +The QRL wallet is an XMSS Merkle tree constructed using the private key to generate leaves of this tree. + +Each "leaf" can also authorize an additional tree of OTS keys (Slave address) that can be used to sign transactions. This allows further expansion of a QRL wallet extending the number of transactions you can process before needing to regenerate a new wallet. + +An address generates additional addresses or slaves addresses, and sends a corresponding [`RelaySlaveTxn`](/api/wallet-api#relayslavetxn) to the blockchain giving authorization to the new slave addresses to access all funds and assets associated with the master address. + +This delegates authority to the slaves allowing an additional pool of OTS keys to be used to send transactions with. By allowing these additional OTS key index "pools" a once limited address becomes intrinsically infinite while still utilizing the core benefits of the underlying XMSS cryptography. + +:::info +An understanding of the unique QRL cryptography, OTS key indexes, and overall address construction is recommended. +Slave addresses are advanced and are not usually needed for most users! ::: +## Overview -The QRL wallet is an XMSS Merkle tree constructed using the private key to generate leaves of this tree. +A slave key is generated using the [QRL command line tools](use/node/node-cli/node-cli-slave-xmss) or via the API. + +This process is similar to generating a QRL address and will output a slaves.json file which contains the private keys for each slave generated (Up to 100). + +Once generated these newly generated slave addresses need to be submitted to the network signed by the address we intend to use the slaves for. + +the `RelaySlaveTxn` will submit the public addresses in the body of the transaction and once mined into a block these addresses will be allowed to send on behalf of the master address. + +Funds will still need to be deposited into the master address, and the slaves key file is critically important to using the slaves as that is where the secret key information is stored. Without the private keys the slaves will not be able to be used. + +:::info +The [automatic slave address system utilized in the walletd-rest-proxy](/api/walletd-rest-proxy#automatic-slave-transactions) will store the slaves key information for retrieval and usage in the default `~/.qrl/walletd.json` file. +::: + + +### Using a Slave Address + +To send a transaction with a slave address you will need to utilize either the QRL CLI tools or via an API call. + +#### Send Slave Transaction + +The transaction will contain a few extra details than a normal transaction. + +- The public key of the master address is still needed +- The Public key of the slave is needed (or slave address index) +- Access to the secret wallet information for the slave you are sending with + - This varies depending on the method used to send the transaction + +#### Receive Slave Transaction + +To receive funds from a slave transaction nothing needs to happen different. The transaction should be sent to a master address (regular QRL address). -Each "leaf" can also generate a tree of OTS Slave keys that can be used to sign transactions. This allows further expansion of a QRL wallet extending the number of transactions you can process before needing to regenerate a new wallet. +There is no need to use a slave address to receive transactions as this function does not use any signatures from the receiving address. +:::note +One can accept infinite transactions to an address without the need for a slave address. +::: \ No newline at end of file diff --git a/docs/Build/Address/wallet-json.md b/docs/Build/Address/wallet-json.md index a216d55..8da167b 100644 --- a/docs/Build/Address/wallet-json.md +++ b/docs/Build/Address/wallet-json.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: wallet-json title: QRL Address Wallet.json File hide_title: false @@ -17,11 +17,10 @@ image: /assets/img/icons/yellow.png slug: /build/address/wallet-json --- -A wallet.json file is an amalgamation of all of the wallet information. This file contains every bit of information for an address including the full seed (_pk_), hexseed, mnemonic phrase, public address, as well as various information on how the address was generated. +A wallet.json file is an amalgamation of all of the various wallet information that makes a QRL address. This file contains every bit of information for an address including the full seed (_pk_), hexseed, mnemonic phrase, public address, as well as various information on how the address was generated. - -:::warning Never share this file! +:::warning Never share this file or it's contents! The wallet.json file should be stored encrypted, and should never be shared. It allows full access to any funds contained in the wallet address. ::: @@ -46,6 +45,10 @@ Below is an example of the wallet.json file contents stored insecurely without e } ] ``` +::: A wallet.json file can be uploaded to the wallet software encrypted or unsecured, and will allow the wallet software to re-generate the full Merkle tree for the given address. This will allow full interaction with the blockchain and access to all funds contained in the wallet. +:::info +The recomendation is to never store a plaintext wallet file. Use the tools included with the QRL wallet software to encrypt the file and store that encryption password somewhere safe! +::: \ No newline at end of file diff --git a/docs/Build/Cryptography/_dilithium.md b/docs/Build/Cryptography/_dilithium.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Cryptography/_hashchains.md b/docs/Build/Cryptography/_hashchains.md deleted file mode 100644 index 5943023..0000000 --- a/docs/Build/Cryptography/_hashchains.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -docstatus: DRAFT -id: hashchains -title: QRL Hashchains -hide_title: false -hide_table_of_contents: false -sidebar_label: QRL Hashchains -sidebar_position: 2 -pagination_label: QRL Hashchains -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: QRL Hashchains -keywords: - - docs - - Advanced - - QRL Hashchains -image: /assets/img/icons/yellow.png -slug: /developers/cryptography/hashchains ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: - - -> @theqrl/hashchains - -[![Coverage Status](https://coveralls.io/repos/github/theQRL/hashchains/badge.svg?branch=main)](https://coveralls.io/github/theQRL/hashchains?branch=main) [![Build Status](https://www.travis-ci.com/theQRL/hashchains.svg?branch=main)](https://www.travis-ci.com/theQRL/hashchains) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/ad5f3b6ad4124518be69351feb4a8957)](https://www.codacy.com/gh/theQRL/hashchains/dashboard?utm_source=github.com&utm_medium=referral&utm_content=theQRL/hashchains&utm_campaign=Badge_Grade) - ![npm (scoped)](https://img.shields.io/npm/v/@theqrl/hashchains) ![NPM](https://img.shields.io/npm/l/@theqrl/hashchains) - -There's a [live demo on Codepen](https://codepen.io/jplomas/live/187d9ff57e404c38a76373e39b796eb4) to show the package in use. - -Browser bundle at `dist/hashchains-browser.js` - -Modules in `dist` but installing the npm release and import/requiring @theqrl/hashchains should work with modern toolsets, i.e: - -``` bash -npm install @theqrl/hashchains -``` - -``` javascript -import { HashChain, HashChains } from '@theqrl/hashchains' -``` - -Exposes two classes: - -## 1. HashChain - -``` javascript -const hc = new HashChain(hashRoot, hashFunction, length) -``` - -### hashRoot _(string)_ - -#### required - -The hash of `(secret data + index)` which forms the first hash in the chain and is iteratively hashed. - -### hashFunction _(string)_ - -#### optional, default 'keccack256' - -Currently only `keccak256` is implemented. - -### length - -#### optional, default 64 - -Number of hashes to generate in the chain. - -## 2. HashChains - -``` javascript -const hc = new HashChains(mnemonic, numberToCreate, index, hashFunction, length) -``` - -### mnemomic - -#### required - -Secret data (eg. BIP39 mnemonic or hexstring) which is hashed along with sequential index to be the start of the hashchains. - -### numberToCreate - -#### optional, default 2 - -Number of hashchains to return - -### index - -#### optional, default 0 - -Starting index for hashchains. Starting at index 0 and generating 10 chains then starting at index 8 and generating 5 chains will create two overlapping (i.e. identical) hashchains. - -### hashFunction _(string)_ - -#### optional, default 'keccack256' - -Currently only `keccak256` is implemented. - -### length - -#### optional, default 64 - -Number of hashes to generate per chain created. - -## Also in this repository - -After an `npm install`: -### Live demo - -``` bash -npm run serve -``` -Starts a local vue development environment serving the browser-based demo from the CodePen above. This may be useful in adding more functionality/hash functions. - -### Tests - -``` bash -npm run test -``` - -### Dev environment - -``` bash -npm run dev -``` - -Runs a watched for continuous development: lint code as per repository standards and ensure test cases pass. - -### Build - -``` bash -npm run build -``` - -Outputs cjs/umd/esm and browserified JS modules to `dist/` directory. \ No newline at end of file diff --git a/docs/Build/Cryptography/_kyber.md b/docs/Build/Cryptography/_kyber.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Cryptography/_ots-bitfield.md b/docs/Build/Cryptography/_ots-bitfield.md deleted file mode 100644 index 2225246..0000000 --- a/docs/Build/Cryptography/_ots-bitfield.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -id: ots-bitfield -title: OTS Bitfield Space -hide_title: false -hide_table_of_contents: false -sidebar_label: OTS Bitfield -sidebar_position: 4 -pagination_label: OTS Bitfield -custom_edit_url: https://github.com/theqrl/documentation/edit/master/docs/basics/xmss.md -description: XMSS overview and basics -keywords: - - cryptography - - xmss - - ots -image: /assets/img/icons/yellow.png - ---- - -# OTS Bitfield - -Basic overview of the OTS bitfield tracking and how it helps prevent the mis-reuse of one time keys. - -## Impact from Reuse of OTS Keys - -## What is a Bitfield? - -Explain - -## How QRL Avoids Reuse of keys - -## More on OTS \ No newline at end of file diff --git a/docs/Build/Cryptography/_qrl-cryptography.md b/docs/Build/Cryptography/_qrl-cryptography.md deleted file mode 100644 index 1586cd9..0000000 --- a/docs/Build/Cryptography/_qrl-cryptography.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -docstatus: DRAFT -id: qrl-cryptography -title: QRL Cryptography -hide_title: false -hide_table_of_contents: false -sidebar_label: QRL Cryptography -sidebar_position: 1 -pagination_label: QRL Cryptography -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: QRL Cryptography -keywords: - - docs - - build - - developers - - Cryptography -image: /assets/img/icons/yellow.png -slug: /developers/cryptography/qrl-cryptography ---- - - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Build/Docker/qrl-docker.md b/docs/Build/Docker/qrl-docker.md index 4d541b1..ebff6ab 100644 --- a/docs/Build/Docker/qrl-docker.md +++ b/docs/Build/Docker/qrl-docker.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qrl-docker title: QRL Docker Overview hide_title: false @@ -47,11 +47,6 @@ Each branch contains configuration specific for each platform. The Dockerfile ca ``docker exec -i -t qrl-node qrl wallet_gen --encrypt`` -## Docker desktop - -![CLI](https://i.imgur.com/ukaYP6s.gif) - -[![Docker Desktop](https://i.imgur.com/FibGaaG.png)](https://vimeo.com/387298687) ### Windows user? diff --git a/docs/Build/Ephemeral/_ephemeral.md b/docs/Build/Ephemeral/_ephemeral.md deleted file mode 100644 index 50fb61e..0000000 --- a/docs/Build/Ephemeral/_ephemeral.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -docstatus: DRAFT -id: ephemeral -title: QRL Ephemeral -hide_title: false -hide_table_of_contents: false -sidebar_label: QRL Ephemeral -sidebar_position: 12 -pagination_label: QRL Ephemeral -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: QRL Ephemeral -keywords: - - docs - - Advanced - - QRL Ephemeral -image: /assets/img/icons/yellow.png -slug: /developers/ephemeral ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: - - - -# [Ephemeral Whitepaper](https://github.com/theQRL/ephemeral/raw/master/EMS_whitepaper_v1.pdf) - - -The QRL Ephemeral system relies on the qualities and security provided by the Crystals cryptographic library. - -There is a transaction type allocated to support these public keys, authoring them from a QRL address. This allows a multitude of available opportunities. - -By broadcasting the public lattice keys onto the chain, an address or transaction hash can become a key store allowing 3rd parties to find and use these public keys. - - - - -Dilithium and Kyber provide functionality that XMSS \ No newline at end of file diff --git a/docs/Build/Fundamentals/on-chain-voting.md b/docs/Build/Fundamentals/on-chain-voting.md deleted file mode 100644 index acb4c63..0000000 --- a/docs/Build/Fundamentals/on-chain-voting.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -docstatus: 30% -id: on-chain-voting -title: On-chain Voting -hide_title: false -hide_table_of_contents: false -sidebar_label: On-chain Voting -sidebar_position: 5 -pagination_label: On-chain Voting -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/Build/Fundamentals/on-chain-voting.md -description: QRL On-chain voting system info -keywords: - - On-chain Voting - - decentralized-governance -image: /assets/img/icons/yellow.png -slug: /build/fundamentals/on-chain-voting ---- - - -The QRL has implemented an on-chain voting system to help facilitate decentralized decision making, allowing the user base, coin holders, and the community, a say in the direction and outcome of the core project. - -This voting system has been used to implement changes to the core project related to QRL Improvement Proposals (QIP), allowing a larger audience to input on the outcome of the project. - -:::info QRL Improvement Proposals (QIPs) -The [QIP system is documented here](/build/qip/overview), and all proposals can be seen in the [QIP GitHub Repo](https://github.com/theQRL/qips/). -If you would like to propose an improvement or change to the function of the QRL Core systems, [see the QIP workflow]](https://github.com/theQRL/qips/blob/master/qip-workflow.md). Submissions are welcome! -::: - - -When a change is proposed to the core project the QRL developers will setup a vote, with specific details as outlined in the QRL improvement proposal. This will be reflected in the [vote.theqrl.org/](https://vote.theqrl.org/) site with instructions on when the vote is taking place and how to vote. - -## Vote System Overview - -The voting system utilizes the QRL Messaging system to collect votes from participating members. - -A vote proposal will contain a blockheight that will start the voting period, as well as relevant details about the vote like eligibility, mechanics and the data being voted on. - -This information will be shown in the vote interface found at [vote.TheQRL.org](https://vote.theqrl.org/) when the vote goes live. - -### Participating In A Vote - -In order to participate in a vote, a QRL holder will need to have the eligible amount of QRL held in their address prior to the announced blockheight for the vote snapshot. - -This blockheight will be communicated and announced with plenty of time to allow fund transfers to happen, and at that block any message with the correct information will be counted. - -Once the vote goes live there will be a message hash, or some random data that you will use for the message body of the transaction that will be transmitted from the address containing funds. This transaction does not transfer any funds, only broadcasts your vote metadata on-chain. This will mark your vote in one way. - -:::note Exchange Addresses are not eligible -In order to participate in a vote, the users address must be able to send a message transaction, and this is not typically supported by the exchanges. -::: - -Once the vote is concluded, a tally will be made from all eligible addresses and the vote outcome will be made public. - -### Holding a Vote - -Anyone is able to conduct an on-chain vote which is basically just counting the amount of messages sent with the correct corresponding message hash related to the vote. - -To get started an example is provided with a working Meteor site provided open source and available to fork and modify. Follow the instructions in the [Vote-QRL GitHub repository](https://github.com/theQRL/vote-qrl) to get started. diff --git a/docs/Build/Fundamentals/ots-keys.md b/docs/Build/Fundamentals/ots-keys.md index f1fb418..8d9a7b3 100644 --- a/docs/Build/Fundamentals/ots-keys.md +++ b/docs/Build/Fundamentals/ots-keys.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: ots-keys title: One Time Signature Keys hide_title: false @@ -12,41 +12,42 @@ description: XMSS overview and basics keywords: - cryptography - xmss + - OTS Keys image: /assets/img/icons/yellow.png slug: /build/fundamentals/ots-keys --- -**O**ne **T**ime **S**ignature (**OTS**) keys are a fundamental element of the hash based cryptography XMSS, the underlying cryptography that The Quantum Resistant Ledger uses. +**O**ne **T**ime **S**ignature (**OTS**) key indexes are a fundamental element of the hash based cryptography XMSS, the underlying cryptography that The Quantum Resistant Ledger uses. -The OTS key and how it applies to the QRL can be a little confusing and is different from most other cryptocurrencies. Understanding the basics will help prevent any issues later on. +The OTS key index and how it applies to the QRL can be a little confusing and is different from most other cryptocurrencies. Understanding the basics will help prevent any issues later on. :::note The most important OTS concepts: -- OTS keys can only be used one time -- A default address contains 1,024 OTS keys for outgoing transactions -- Once all keys are used, no other transactions can be preformed from that address -- Incoming transactions **Do Not** consume OTS keys by the receiving address -- OTS keys are used to sign transactions on-chain +- OTS key indexes can only be used one time +- A default address contains 1,024 OTS key indexes for outgoing transactions +- Once all key indexes are used, no other transactions can be preformed from that address +- Incoming transactions **Do Not** consume OTS key indexes by the receiving address +- OTS key indexes are used to sign transactions on-chain ::: :::caution -If an OTS key were to be exposed more than once, the address should be considered compromised and all funds moved to a newly generated address. +If an OTS key index were to be exposed more than once, the address should be considered compromised and all funds moved to a newly generated address. ::: ## What is a One Time Signature? -An OTS key is used to sign a message, or in the QRL's case, to sign a transaction. +An OTS key index is used to sign data or a message. In the QRL's case, we use them to sign a transaction onto the blockchain. -Each OTS key can sign only once, as it reveals some information about the secret key. Not enough data is revealed to compromise the secret key if exposed exactly one time however. +Each OTS key index can sign only once, as it reveals some information about it's secret key. Not enough data is revealed to compromise the seed key if exposed exactly one time however. -An individual address will contain multiple OTS keys (*default of 1024*) all available to sign transactions. This tree height is selected during address creation. +An individual address will contain multiple OTS key indexes (*default of 1024*) all available to sign transactions. This tree height is selected during address creation. ![](assets/img/merkleTreeSig_transparent-grey-sm.png) -*These OTS keys are verifiable and provable to be owned by the master seed as they cannot be generated without the master seed.* +*These OTS key indexes are verifiable and provable to be owned by the master seed as they cannot be generated without the master seed.* -The experts call this stateful cryptography as it is imperative that the state of the exposed keys be kept in order to ensure never to reuse any keys. +The experts call this *stateful cryptography* as it is imperative that the state of the exposed keys be kept in order to ensure never to reuse any keys. ## How is it Secure? @@ -74,7 +75,7 @@ These methods are described in the whitepaper as *Hypertrees*, and documented he ## Tree Height -By default the QRL wallet application generates wallet addresses with a tree height of 10, generating 1024 available OTS keys for signing. This is adjustable, though larger tree's will require some additional time to open a wallet file, as the entire tree must be regenerated each time the address is opened. +By default the QRL wallet application generates wallet addresses with a tree height of 10, generating 1024 available OTS key indexes for signing. This is adjustable, though larger tree's will require some additional time to open a wallet file, as the entire tree must be regenerated each time the address is opened. | Tree Height | Available Keys | Info | |--- | --- |--- | @@ -93,12 +94,12 @@ If you expect the need for larger transaction counts, generate a larger tree or ## How Does This Apply to the QRL? -- Each address is composed of multiple OTS keys, that are generated from a random seed -- An OTS key can be used **exactly one time**, without compromising the entire addresses security +- Each address is composed of multiple OTS key indexes, that are generated from a random seed +- An OTS key index can be used **exactly one time**, without compromising the entire addresses security - QRL Address tree height is chosen during the initial address creation and cannot be changed -- The QRL network nodes will reject any transaction that uses a duplicate OTS key +- The QRL network nodes will reject any transaction that uses a duplicate OTS key index -OTS keys are limited as each address has a finite maximum amount of transactions (*outgoing*) that can be sent from any address. Once all keys are used the address will not be able to sign any further transactions. While limiting, it is also what we owe the advanced security and quantum resistance to. +OTS key indexes are limited as each address has a finite maximum amount of transactions (*outgoing*) that can be sent from any address. Once all keys are used the address will not be able to sign any further transactions. While limiting, it is also what we owe the advanced security and quantum resistance to. diff --git a/docs/Build/Fundamentals/qrl-emission.md b/docs/Build/Fundamentals/qrl-emission.md index 9ffe9e9..08c1260 100644 --- a/docs/Build/Fundamentals/qrl-emission.md +++ b/docs/Build/Fundamentals/qrl-emission.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qrl-emission title: QRL Emission hide_title: false @@ -17,6 +17,10 @@ image: /assets/img/icons/yellow.png slug: /build/fundamentals/qrl-emission --- + + +QRL emissions, or the emission rate, refers to the slow release of the total circulating supply of quanta to miners over time. The decrease in the amount given as a reward for mining a block is the emission rate. + The QRL blockchain is mined using computers running custom mining software, each block in the chain returns a reward to the miner who mints a new coin accepted by the network. The rate that these coins are distributed is defined in the **emission standard** and is set to exponentially decay (reduce) over time as the chain progresses. In simple terms, each new block will pay the miner a little less than the previous block. @@ -32,16 +36,13 @@ See the documentation on [QRL mining](/use/mining) and the [QRandomX mining algo #### Approximate Daily $quanta$ Emissions Curve -![](assets/img/chart1.png) - - +![](assets/img/chart1.png) ### QRL Emission Standards :::note From the [QRL Whitepaper](whitepaper) section 8: Cryptocurrency design parameters - #### 8.6 Coin emission schedule A defining feature of bitcoin is the scarcity and fixed upper limit to issuance of the underlying monetary token. QRL will follow bitcoin in this regard with a fixed upper limit to the coin supply of $105 \cdot 10^6$ $quanta$. A smoothly exponential decay in the block-reward is favored up to the hard ceiling of coin supply. This will eliminate the volatility associated with the bitcoin ’halving’ phenomenon. @@ -62,7 +63,7 @@ $b=Z_{t-1}-Z_t$ The QRL emission schedule, or amount of quanta generated with each block mined, was updated in QIP-16 (*QRL Improvement Proposal*) through a public on-chain vote to reduce the total reward each block paid out by a factor of 60%. -You can read more about the [QIP process here](build/qip/overview), and review the history of this QIP in the GitHub repository. Additional information for the [on-chain voting system can be found here](/build/fundamentals/on-chain-voting) +You can read more about the [QIP process here](build/qip/overview), and review the history of this QIP in the GitHub repository. diff --git a/docs/Build/Fundamentals/whitepaper.md b/docs/Build/Fundamentals/whitepaper.md index c64574d..0e4040e 100644 --- a/docs/Build/Fundamentals/whitepaper.md +++ b/docs/Build/Fundamentals/whitepaper.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: whitepaper title: QRL Whitepaper hide_title: false @@ -18,11 +18,10 @@ slug: /build/fundamentals/whitepaper --- -The QRL Whitepaper was developed during the initial development phase of the project back in 2016 by the core developers and cryptographers working on the project. +The QRL Whitepaper was written during the initial development phase of the project back in 2016 by the core developers and cryptographers working on the project. This paper covers the fundamental building blocks, security decisions and cryptographic functions that make up the core software that governs the core project and blockchain fundamentals. - The whitepaper is hosted on github in multiple language translations and can be found at this link: https://github.com/theQRL/Whitepaper English direct link: https://github.com/theQRL/Whitepaper/raw/master/QRL_whitepaper.pdf or click on an image below. diff --git a/docs/Build/Messages/message-tx-encoding.md b/docs/Build/Messages/message-tx-encoding.md index d481d53..5871cf3 100644 --- a/docs/Build/Messages/message-tx-encoding.md +++ b/docs/Build/Messages/message-tx-encoding.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: message-tx-encoding title: QRL Message Transaction Encoding hide_title: false @@ -17,7 +17,7 @@ image: /assets/img/icons/yellow.png slug: /build/messages/message-tx-encoding --- -The QRL has instituted a standard for encoding data into the `message_tx` function to differentiate encoded data on the blockchain. This highlights the usage and versatility of on-chain tools like messaging when paired with some additional off chain tooling. +The QRL project has instituted a standard for encoding data into the `message_tx` function to differentiate encoded data on the blockchain. This highlights the usage and versatility of on-chain tools like messaging when paired with some additional off chain tooling. [QIP002 - *A standard message encoding format to indicate encoded data in MessageTransaction transactions*](https://github.com/theQRL/qips/blob/master/qips/QIP002.md) set the standard for QRL message encoding that's used to differentiate various message types and their functions on the blockchain. @@ -58,9 +58,9 @@ The remaining 76 bytes contain any data relevant to the encoded message, and sho ## Supported encoding bytes for specific message type (hex) -- 0000 - reserved -- 0001 - reserved -- 0002 - keybase -- 0003 - github -- 0004 - on-chain voting +- `0000` - reserved +- `0001` - reserved +- `0002` - keybase +- `0003` - github +- `0004` - on-chain voting diff --git a/docs/Build/Messages/notarization-message-encoding.md b/docs/Build/Messages/notarization-message-encoding.md index d2158ec..d7129a7 100644 --- a/docs/Build/Messages/notarization-message-encoding.md +++ b/docs/Build/Messages/notarization-message-encoding.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: notarization-message-encoding title: QRL Notarization Message Encoding hide_title: false diff --git a/docs/Build/Mining/_qryptonight.md b/docs/Build/Mining/_qryptonight.md deleted file mode 100644 index b84a043..0000000 --- a/docs/Build/Mining/_qryptonight.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -docstatus: DRAFT -id: qryptonight -title: QRL Qryptonight -hide_title: false -hide_table_of_contents: false -sidebar_label: QRL Qryptonight -sidebar_position: 2 -pagination_label: QRL Qryptonight -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: QRL Qryptonight -keywords: - - docs - - Advanced - - Qryptonight -image: /assets/img/icons/yellow.png -slug: /developers/mining/qryptonight ---- - - -[![PyPI version](https://badge.fury.io/py/pyqryptonight.svg)](https://badge.fury.io/py/pyqryptonight) -[![CircleCI](https://circleci.com/gh/theQRL/qryptonight.svg?style=shield)](https://circleci.com/gh/theQRL/qryptonight) -[![GPL3 licensed](https://img.shields.io/badge/license-GPL3-blue.svg)](https://raw.githubusercontent.com/theQRL/qryptonight/master/LICENSE) - -# Qryptonight - -*WARNING: This is work in progress, changes might not be backward compatible.* - -This library (derived from xmr-stak) currently exposes the following functionality: - -- Python Wrapper for Cryptonight hash -- Mining thread and hybrid callback - -**Platform support** - -| | Linux | OSX 10.12 | Windows 10 | -|-----------|:------------:|:-----------:|:--------:| -|Python 3 | :white_check_mark: | :white_check_mark: | :white_check_mark: | -|Webassembly (JS) | :question: | :question: | :question: | -|Golang | - | - | - | - | - -## Installing - -#### Ubuntu -``` -sudo apt -y install swig3.0 python3-dev build-essential cmake libhwloc-dev libboost-dev -pip3 install pyqryptonight -```` - -#### OSX - -If you dont have brew yet, we think you should :) Install brew following the instructions here: [https://brew.sh/](https://brew.sh/) - -Now install some dependencies - -```bash -brew install cmake python3 swig hwloc boost -pip3 install pyqryptonight -``` - -#### Windows -``` -TBD -``` - -## Building from Source - -#### Windows -For the purposes of these instructions Build Tools for Visual Studio 2017, CMake 3.10.2, Ninja 1.8.2, Python 3.6 and SWIG 3.0.12 were used, also ```c:\src``` was used for source files and ```c:\opt``` for other dependencies, adjust accordingly if choosing differently. - -Note: You can use Microsoft MSBuild instead of Ninja Build by setting environment variable ```CMAKE_VS_GENERATOR=Visual Studio 15 2017 Win64```, however if you choose to install the pyqryptonight package Python setuptools currently will not install it correctly. - -Prerequisites: -- Install [Build Tools for Visual Studio](https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017) selecting the *'Visual C++ build tools'* option, or install [Visual Studio Community Edition](https://www.visualstudio.com/vs/community/) selecting the *'Desktop Development for C++ workload'*. -- Install [Git for Windows](https://gitforwindows.org/) keeping the default option to use git from the command prompt. -- Install the latest stable [CMake x64 for Windows](https://cmake.org/download/), selecting to add CMake to system or user PATH. -- Install [Python 3 Windows x86-64](https://www.python.org/downloads/) selecting the option to '*Add Python 3.x to PATH*'. Optionally change the install location to ```c:\python36```, install the debugging symbols/binaries, and disable the path length limit. -- Download [SWIG](http://swig.org/) *(download swigwin)* and extract archive to ```c:\opt``` -- Download [Ninja Build](https://github.com/ninja-build/ninja/releases) and extract ```ninja.exe``` to ```c:\opt\bin``` - -*Install vcpkg:* -- From the start menu run the *'x64 Native Tools Command Prompt for VS 2017'* and issue these commands: -``` -git clone https://github.com/Microsoft/vcpkg.git c:\opt\vcpkg -cd c:\opt\vcpkg -bootstrap-vcpkg.bat -vcpkg.exe install hwloc:x64-windows boost-multiprecision:x64-windows -``` - -*Build Qrytonight:* -``` -git clone --recursive https://github.com/theQRL/qryptonight.git c:\src\qryptonight -cd \src\qryptonight -set PATH=c:\opt\bin;c:\opt\swigwin-3.0.12;%PATH% -set CMAKE_PREFIX_PATH=C:/opt/vcpkg/installed/x64-windows -set CC=cl.exe -set CXX=cl.exe - -python setup.py build -``` - -If the build succeeded you can perform further steps, issue the command ```python setup.py --help-commands``` to see other options, e.g.: -``` -python setup.py test -python setup.py install -``` - -## License - -*This library is distributed under the GPL3 software license - -Some of the code is based on the xmr-stak implementation. Most of third party code has been included as git submodules for future reference. \ No newline at end of file diff --git a/docs/Build/Mining/qrandomx.md b/docs/Build/Mining/qrandomx.md index f68d8e2..8cb4d00 100644 --- a/docs/Build/Mining/qrandomx.md +++ b/docs/Build/Mining/qrandomx.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qrandomx title: QrandomX hide_title: false diff --git a/docs/Build/Node-CLI/_build-from-source.md b/docs/Build/Node-CLI/_build-from-source.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Node-CLI/_known-issues.md b/docs/Build/Node-CLI/_known-issues.md deleted file mode 100644 index 150fd1a..0000000 --- a/docs/Build/Node-CLI/_known-issues.md +++ /dev/null @@ -1 +0,0 @@ -known-issues.md \ No newline at end of file diff --git a/docs/Build/Node-CLI/_security-considerations.md b/docs/Build/Node-CLI/_security-considerations.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/QEP/_qep-reference.md b/docs/Build/QEP/_qep-reference.md deleted file mode 100644 index a26eaf8..0000000 --- a/docs/Build/QEP/_qep-reference.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -docstatus: DRAFT -id: qep-reference -title: QRL Enhancement Proposal Reference -hide_title: false -hide_table_of_contents: false -sidebar_label: QRL Enhancement Proposal Reference -sidebar_position: 2 -pagination_label: QRL Enhancement Proposal Reference -custom_edit_url: https://github.com/theqrl/documentation/edit/master/docs/basics/xmss.md -description: QRL Enhancement Proposal Reference -keywords: - - cryptography - - xmss -image: /assets/img/icons/yellow.png -slug: /developers/qep-reference ---- \ No newline at end of file diff --git a/docs/Build/QEP/_qep.md b/docs/Build/QEP/_qep.md deleted file mode 100644 index 1d4eee9..0000000 --- a/docs/Build/QEP/_qep.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -docstatus: DRAFT -id: qep -title: QRL Enhancement Proposal (QEPs) -hide_title: false -hide_table_of_contents: false -sidebar_label: QRL Enhancement Proposal -sidebar_position: 1 -pagination_label: QRL Enhancement Proposal -custom_edit_url: https://github.com/theqrl/documentation/edit/master/docs/basics/xmss.md -description: QRL Enhancement Proposal -keywords: - - cryptography - - xmss -image: /assets/img/icons/yellow.png -slug: /developers/qep ---- \ No newline at end of file diff --git a/docs/Build/QIP/qip-reference.md b/docs/Build/QIP/qip-reference.md index 7fccf93..9708c85 100644 --- a/docs/Build/QIP/qip-reference.md +++ b/docs/Build/QIP/qip-reference.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qip-reference title: QIP Reference hide_title: false diff --git a/docs/Build/QIP/qip-specification.md b/docs/Build/QIP/qip-specification.md index 782658e..886609d 100644 --- a/docs/Build/QIP/qip-specification.md +++ b/docs/Build/QIP/qip-specification.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qip-specification title: QIP Specification hide_title: false diff --git a/docs/Build/QIP/qip-template.md b/docs/Build/QIP/qip-template.md index 4233982..9d4c632 100644 --- a/docs/Build/QIP/qip-template.md +++ b/docs/Build/QIP/qip-template.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qip-template title: QIP Template hide_title: false diff --git a/docs/Build/QIP/qip-workflow.md b/docs/Build/QIP/qip-workflow.md index 604e4cc..00b725d 100644 --- a/docs/Build/QIP/qip-workflow.md +++ b/docs/Build/QIP/qip-workflow.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qip-workflow title: QIP Workflow hide_title: false diff --git a/docs/Build/QIP/qip.md b/docs/Build/QIP/qip.md index 623840d..dfe8b25 100644 --- a/docs/Build/QIP/qip.md +++ b/docs/Build/QIP/qip.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qip-overview title: QRL Improvement Proposal (QIP) hide_title: false @@ -21,10 +21,12 @@ QRL Improvement Proposals (QIPs) are open proposals put forward to improve the Q During the process of drafting a QIP, but before the proposal is fully opened, there’s some preliminary discussion held on its specification, implementation and general merits. Some QIPs which are identified as contentious from review of these discussions and community sentiment, will be further put to a vote. Voting is an important aspect of democracy and a way to ensure that the will of the people, including the person reading this, is part of the decision that governs the direction of QRL. -Encouraged ways of participating +**Encouraged ways of participating** Participate in discussions: The more voices there are in a debate, the more opinions being voiced, the better the understanding of the issue at hand. Your voice also carries weight by having a chance to change peoples minds on the way in which they were to vote. + By being informed: Read this synopsis, but don’t stop there. The synopsis only tries to maintain a the body of discussions that have taken place. Continue to read the opinions of others and research into things you’re unsure about. + Finally, Vote: Every vote counts. Don’t feel discouraged if you see the vote going another way & be vote anyway! ## QIPs diff --git a/docs/Build/QRL-CLI/qrl-cli.md b/docs/Build/QRL-CLI/qrl-cli.md index 6e9bc27..014daeb 100644 --- a/docs/Build/QRL-CLI/qrl-cli.md +++ b/docs/Build/QRL-CLI/qrl-cli.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qrl-cli title: QRL-CLI Overview hide_title: false diff --git a/docs/Build/QRL-Helpers/explorer-helpers.md b/docs/Build/QRL-Helpers/explorer-helpers.md index 0f507d2..5cd3979 100644 --- a/docs/Build/QRL-Helpers/explorer-helpers.md +++ b/docs/Build/QRL-Helpers/explorer-helpers.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: explorer-helpers title: QRL Explorer Helpers hide_title: false diff --git a/docs/Build/QRL-Helpers/node-helpers.md b/docs/Build/QRL-Helpers/node-helpers.md index b91f9ee..78aab40 100644 --- a/docs/Build/QRL-Helpers/node-helpers.md +++ b/docs/Build/QRL-Helpers/node-helpers.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: node-helpers title: QRL Node Helpers hide_title: false diff --git a/docs/Build/QRL-Helpers/validate-qrl-address.md b/docs/Build/QRL-Helpers/validate-qrl-address.md index af8742b..0a1f57d 100644 --- a/docs/Build/QRL-Helpers/validate-qrl-address.md +++ b/docs/Build/QRL-Helpers/validate-qrl-address.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: validate-qrl-address title: Validate QRL Address hide_title: false diff --git a/docs/Build/Vote-QRL/vote-qrl.md b/docs/Build/Vote-QRL/vote-qrl.md deleted file mode 100644 index 2adb89d..0000000 --- a/docs/Build/Vote-QRL/vote-qrl.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -docstatus: 30% -id: vote-qrl -title: Vote QRL Overview -hide_title: false -hide_table_of_contents: false -sidebar_label: Vote QRL -sidebar_position: 9 -pagination_label: Vote QRL -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/Build/Vote-QRL/vote-qrl.md -description: Vote QRL -keywords: - - docs - - Advanced - - QRL Vote -image: /assets/img/icons/yellow.png -slug: /build/vote-qrl/overview ---- - - -Deployed at - -## Dependencies - -NodeJS: -Meteor: - -## Building - -1. Clone repo -2. Create a settings file in cloned directory (see **Settings** section below) -3. ```npm install``` -4. ```meteor --settings settings.json``` - -## Settings - -Example ```settings.json``` file: - -```json -{ - "vote": { - "blockheight": 831769, - "originator": "The QRL Foundation", - "title": "Test vote - desktop theme", - "eligibility": "Balance > 1 Quanta", - "excluded": "Nil", - "mechanics": "Simple proportional vote", - "expires": "At end of test period (TBA)" - }, - "options": [ - { - "data": { - "vote": "DARK MODE" - }, - "hash": null - }, - { - "data": { - "vote": "LIGHT MODE" - }, - "hash": null - } - ], - "adminPass": "CHANGEME" -} -``` \ No newline at end of file diff --git a/docs/Build/Wallet/desktop/_build-from-source.md b/docs/Build/Wallet/desktop/_build-from-source.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/desktop/_development-environment.md b/docs/Build/Wallet/desktop/_development-environment.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/desktop/_known-issues.md b/docs/Build/Wallet/desktop/_known-issues.md deleted file mode 100644 index 150fd1a..0000000 --- a/docs/Build/Wallet/desktop/_known-issues.md +++ /dev/null @@ -1 +0,0 @@ -known-issues.md \ No newline at end of file diff --git a/docs/Build/Wallet/desktop/_security-considerations.md b/docs/Build/Wallet/desktop/_security-considerations.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/desktop/_web-wallet-software.md b/docs/Build/Wallet/desktop/_web-wallet-software.md deleted file mode 100644 index 2bb70b5..0000000 --- a/docs/Build/Wallet/desktop/_web-wallet-software.md +++ /dev/null @@ -1 +0,0 @@ -web-wallet-software.md \ No newline at end of file diff --git a/docs/Build/Wallet/ledger/_build-app.md b/docs/Build/Wallet/ledger/_build-app.md deleted file mode 100644 index 563d06e..0000000 --- a/docs/Build/Wallet/ledger/_build-app.md +++ /dev/null @@ -1 +0,0 @@ -build-app.md \ No newline at end of file diff --git a/docs/Build/Wallet/ledger/_known-issues.md b/docs/Build/Wallet/ledger/_known-issues.md deleted file mode 100644 index 150fd1a..0000000 --- a/docs/Build/Wallet/ledger/_known-issues.md +++ /dev/null @@ -1 +0,0 @@ -known-issues.md \ No newline at end of file diff --git a/docs/Build/Wallet/ledger/_ledger-app.md b/docs/Build/Wallet/ledger/_ledger-app.md deleted file mode 100644 index d398586..0000000 --- a/docs/Build/Wallet/ledger/_ledger-app.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -docstatus: DRAFT -id: ledger-app -title: QRL Ledger Nano S App -hide_title: false -hide_table_of_contents: false -sidebar_label: ledger-app -sidebar_position: 1 -pagination_label: ledger-app -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: ledger-app -keywords: - - docs - - Advanced - - QRL ledger-app -image: /assets/img/icons/yellow.png -slug: /developers/wallet/ledger/ledger-app ---- - - -[![CircleCI](https://circleci.com/gh/theQRL/ledger-qrl.svg?style=svg)](https://circleci.com/gh/theQRL/ledger-qrl) -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/e5130886a7e44a23b11844c44fb323ed)](https://www.codacy.com/app/qrl/ledger-qrl?utm_source=github.com&utm_medium=referral&utm_content=theQRL/ledger-qrl&utm_campaign=Badge_Grade) - -This is a prototype of the Ledger Nano S app for Quantum Resistant Ledger. - -It is work in progress and subject to further modifications and testing. - -**WARNING: DO NOT USE THIS APP IN A LEDGER WITH REAL FUNDS.** - -This repo includes: -- Ledger Nano S app/firmware -- C++ unit tests - -## Demo Firmware - -Continuous integration generates a demo.zip. This includes firmware plus a shell script that installs the firmware. - -**WARNING**: Again! Remember to use this ONLY in a ledger without funds and only for testing purposes. - -## More info - -[Build instructions](https://github.com/theQRL/ledger-qrl-app/blob/master/docs/BUILD.md) - -**Specifications** - -- [APDU Protocol](https://github.com/theQRL/ledger-qrl-app/blob/master/docs/PROTOSPEC.md) -- [Transaction format](https://github.com/theQRL/ledger-qrl-app/blob/master/docs/TXSPEC.md) \ No newline at end of file diff --git a/docs/Build/Wallet/ledger/_ledger-hw-app-qrl.md b/docs/Build/Wallet/ledger/_ledger-hw-app-qrl.md deleted file mode 100644 index 9814d2b..0000000 --- a/docs/Build/Wallet/ledger/_ledger-hw-app-qrl.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -docstatus: DRAFT -id: ledger-hw-app-qrl -title: ledger-hw-app-qrl -hide_title: false -hide_table_of_contents: false -sidebar_label: ledger-hw-app-qrl -sidebar_position: 4 -pagination_label: ledger-hw-app-qrl -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: ledger-hw-app-qrl -keywords: - - docs - - Advanced - - QRL ledger-hw-app-qrl -image: /assets/img/icons/yellow.png -slug: /developers/wallet/ledger/ledger-hw-app-qrl ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: - - - - - - -[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) - -Welcome to the QRL's Ledger JavaScript libraries. - -Heavily based on - -[LedgerJS](https://github.com/LedgerHQ/ledgerjs) - -with contributions from the QRL developer community. - -Documentation in progress. \ No newline at end of file diff --git a/docs/Build/Wallet/ledger/_ledger-qrl-app.md b/docs/Build/Wallet/ledger/_ledger-qrl-app.md deleted file mode 100644 index eb3dcb3..0000000 --- a/docs/Build/Wallet/ledger/_ledger-qrl-app.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -docstatus: DRAFT -id: ledger-qrl-app -title: QRL Ledger Nano S App -hide_title: false -hide_table_of_contents: false -sidebar_label: ledger-qrl-app -sidebar_position: 3 -pagination_label: ledger-qrl-app -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: ledger-qrl-app -keywords: - - docs - - Advanced - - QRL ledger-qrl-app -image: /assets/img/icons/yellow.png -slug: /developers/wallet/ledger/ledger-qrl-app ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: - - - -[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/c1136098396444cabd0e6a22ed061dfa)](https://www.codacy.com/app/qrl/ledger-qrl-app?utm_source=github.com&utm_medium=referral&utm_content=theQRL/ledger-qrl-app&utm_campaign=Badge_Grade) - -This is a submodule that only contains the app according to Ledger specs. - -Please refer to the [Ledger-QRL](https://github.com/theQRL/ledger-qrl) for the complete source code (unit tests, integration tests, documentation, etc.) \ No newline at end of file diff --git a/docs/Build/Wallet/ledger/_ledger-qrl-js.md b/docs/Build/Wallet/ledger/_ledger-qrl-js.md deleted file mode 100644 index c169215..0000000 --- a/docs/Build/Wallet/ledger/_ledger-qrl-js.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -docstatus: DRAFT -id: ledger-qrl-js -title: Ledger QRL JS -hide_title: false -hide_table_of_contents: false -sidebar_label: Ledger QRL JS -sidebar_position: 2 -pagination_label: Ledger QRL JS -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Ledger QRL JS -keywords: - - docs - - Advanced - - QRL -image: /assets/img/icons/yellow.png -slug: /developers/ledger/ledger-qrl-js ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: - - - - -For the QRL Ledger Nano S app refer to https://github.com/theQRL/ledger-qrl - ----------- - -## Purpose - -Node and browser communication APIs for Ledger Nano S - -This repo is based on https://github.com/LedgerHQ/ledgerjs - -## Initialization on Node - -The communication API relies on node-hid - -```javascript -ledger.comm_node.create_async().then(function(comm) { - ... -}); -``` - -You can also use list_async and create the communication object manually to pick one specific device if several are connected - -## Initialization on a browser - -The communication API is compatible with every browser supporting FIDO U2F either directly (Chrome, Opera) or through a third party extension (Firefox). Pages shall be served from an HTTPS connection as a requirement of the U2F API. - -Make sure to include browser/ledger.min.js and browser/u2f-api.js in your web page and initialize with - -```javascript -ledger.comm_u2f.create_async().then(function(comm) { - ... -}); -``` - -To re-create the browser bindings, use - -``` -npm run browserify -npm run uglify -npm run browserify-test (to run browser tests) -``` - -## Usage - -Refer to the tests/examples \ No newline at end of file diff --git a/docs/Build/Wallet/ledger/_proto-spec.md b/docs/Build/Wallet/ledger/_proto-spec.md deleted file mode 100644 index 11a6c39..0000000 --- a/docs/Build/Wallet/ledger/_proto-spec.md +++ /dev/null @@ -1 +0,0 @@ -proto-spec.md \ No newline at end of file diff --git a/docs/Build/Wallet/mobile/_android-wallet-software.md b/docs/Build/Wallet/mobile/_android-wallet-software.md deleted file mode 100644 index 2bb70b5..0000000 --- a/docs/Build/Wallet/mobile/_android-wallet-software.md +++ /dev/null @@ -1 +0,0 @@ -web-wallet-software.md \ No newline at end of file diff --git a/docs/Build/Wallet/mobile/_build-from-source.md b/docs/Build/Wallet/mobile/_build-from-source.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/mobile/_development-environment.md b/docs/Build/Wallet/mobile/_development-environment.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/mobile/_ios-wallet-software.md b/docs/Build/Wallet/mobile/_ios-wallet-software.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/mobile/_known-issues.md b/docs/Build/Wallet/mobile/_known-issues.md deleted file mode 100644 index 150fd1a..0000000 --- a/docs/Build/Wallet/mobile/_known-issues.md +++ /dev/null @@ -1 +0,0 @@ -known-issues.md \ No newline at end of file diff --git a/docs/Build/Wallet/mobile/_security-considerations.md b/docs/Build/Wallet/mobile/_security-considerations.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/web/_build-from-source.md b/docs/Build/Wallet/web/_build-from-source.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/web/_development-environment.md b/docs/Build/Wallet/web/_development-environment.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/web/_known-issues.md b/docs/Build/Wallet/web/_known-issues.md deleted file mode 100644 index 150fd1a..0000000 --- a/docs/Build/Wallet/web/_known-issues.md +++ /dev/null @@ -1 +0,0 @@ -known-issues.md \ No newline at end of file diff --git a/docs/Build/Wallet/web/_security-considerations.md b/docs/Build/Wallet/web/_security-considerations.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Build/Wallet/web/_web-wallet-software.md b/docs/Build/Wallet/web/_web-wallet-software.md deleted file mode 100644 index 2bb70b5..0000000 --- a/docs/Build/Wallet/web/_web-wallet-software.md +++ /dev/null @@ -1 +0,0 @@ -web-wallet-software.md \ No newline at end of file diff --git a/docs/Build/_electrify-qrl.md b/docs/Build/_electrify-qrl.md deleted file mode 100644 index 7596d73..0000000 --- a/docs/Build/_electrify-qrl.md +++ /dev/null @@ -1,298 +0,0 @@ ---- -docstatus: DRAFT -id: electrify-qrl -title: Electrify QRL -hide_title: false -hide_table_of_contents: false -sidebar_label: Electrify QRL -sidebar_position: 7 -pagination_label: Electrify QRL -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Electrify QRL -keywords: - - docs - - Advanced - - QRL Electrify -image: /assets/img/icons/yellow.png -slug: /developers/electrify-qrl ---- - -Electron packager for QRL-Wallet. - -Based on https://github.com/Mairu/meteor-electrify - -## TL;DR - -````shell -npm install -g electrify-qrl -cd /your/meteor/app -electrify -```` -## Compatibility - -Works on all Meteor's supported [platforms](https://github.com/meteor/meteor/wiki/Supported-Platforms). - -## Help - -````bash -$ electrify -h - - Usage: electrify [command] [options] - - - Commands: - - run (default) start meteor app within electrify context - bundle bundle meteor app at `.electrify` dir - package bundle and package app to `--output` dir - - Options: - - -h, --help output usage information - -V, --version output the version number - -i, --input meteor app dir | default = . - -o, --output output dir | default = .electrify/.dist - -s, --settings meteor settings file | default = null (optional) - -t, --temp electrify temp folder | default = system temp folder - -a, --arch arch to build for | default = current arch - -p, --platform platform to build for | default = current platform - - Examples: - - # cd into meteor dir first - cd /your/meteor/app - - electrify - electrify run - electrify package - electrify package -o /dist/dir - electrify package -o /dist/dir -s file.json - electrify package -i /app/dir -o /dist/dir -s dev.json - electrify package -- - - # more info about electron packager options: - # ~> https://www.npmjs.com/package/electron-packager - -```` - -## Installation - -````shell -npm install -g electrify-qrl -```` - -> For invoking Electron methods from Meteor, you'll also need to install the -> `arboleya:electrify` meteor package. -> For more info check [Meteor x Electron integration](#meteor-x-electron-integration). - -## Running app - -````shell -cd /your/meteor/app -electrify -```` - -## Packaging - -````shell -cd /your/meteor/app -electrify package -```` - -The packaging process is done under the hood using `electron-packager` -npm package. The following variables are automatically set: - - * `--out` -- *comes from cli option [-o, --out]* - * `--arch` -- *comes from system [current arch]* - * `--platform` -- *comes from system [current platform]* - * `--app-version` -- *comes from .electrify/package.json [current app version]* - * `--electron-version` -- *comes from the used electron npm package* - * `--tmpdir` -- *disabled* - -You can overwrite these default values and also set others by passing custom -arguments directly to `electron-packager` after `--`, i.e: - -````shell -cd /your/meteor/app -electrify package -- --icon=/folder/x/img/icon.png --app-version=x.y.z -```` - -All the available options for `electron-packager` can be found here: -https://github.com/electron-userland/electron-packager/blob/master/usage.txt - - -Alternatively you can add an electronPackager object in package.json of the .electrify folder -with [options for the electron-packager](https://github.com/electron-userland/electron-packager/blob/master/docs/api.md). For the icon property it is possible to provide an object -instead of string to define different icons for the different platforms. -f.e. -```json -{ - "electronPackager": { - "icon": { - "win32": "../something.ico", - "darwin": "../mac.icns" - } - } -} -``` - -### Notes - -The output app will match your current operational system and arch type. - - * To get an **OSX** app, run it from a **Osx** machine. - * To get an **Linux 32bit** app, run it from a **32bit Linux** machine. - * To get an **Linux 64bit** app, run it from a **64bit Linux** machine. - * To get an **Windows 32bit** app, run it from a **32bit Windows** machine. - * To get an **Windows 64bit** app, run it from a **64bit Windows** machine. - -Due to NodeJS native bindings of such libraries such as Fibers -- *which are -mandatory for Meteor*, you'll need to have your Meteor app fully working on the -desired platform before installing this plugin and packaging your app. - -So, at this time, you cannot package your app in a cross-platform fashion from -one single OS. - -Perhaps you can live with it? :) - -> **DO NOT** use options to output for multiple arch/platforms at once, such as -`--arch=all`. It won't work, Electrify can bundle Meteor apps only for the -platform you're running on. - -> **NOTICE** you can use the --arch and --platform of electrify BUT you won't get a working version -for different platforms/archs out of the box. It's possible to make the generated application working -with further steps that are not in scope of this project. - -## Options - -1. `-i, --input` - Meteor app folder, default is current directory (`process.cwd()`). -1. `-o, --output` - Sets output folder for your packaged app, default is -`/your/meteor/app/.dist` -1. `-s, --settings` - Sets path for Meteor -[settings](http://docs.meteor.com/#/full/meteor_settings) file, this will be -available inside your Meteor code both in development and after being packaged. -1. `-t, --temp` - Sets a temp folder other than the system temp folder to prevent moving errors (tmp and destination should be on the same partition) -1. `-a, --arch` - Sets a different arch for building NOTICE: only the current arch will work "out of the box" -1. `-p, --platform` - Sets a different platform for building NOTICE: only the current platform will work "out of the box" - -## Structure - -You'll notice a new folder called `.electrify` in your meteor app dir, its -structure will be like this: - -```` -/your/meteor/app -├── .electrify -│ ├── .gitignore -│ ├── electrify.json -│ ├── index.js -│ └── package.json -├── .meteor -└── ... -```` - -This is a pure Electron project, so you can use the whole Electron API from JS -files in this folder. Also, you can install electron dependencies and store them -in the `package.json` file. Note that the `electrify` package is itself a -dependency. - -See this folder as the `desktop layer` for your Meteor app. Remember to check -out the `index.js` file, it constains the electrify start/stop usage. - -The `electrify.json` file will hold specific preferences for Electrify, such as -plugins and so on. It's still a WIP, but you can get around it. - -### Config (`electrify.json`) - -For now there's only one option here: `preserve_db`. - -Set it to true to preserve database between installs. It works by saving the -mongo data dir inside user's data folder, instead of being self contained within -the app folder (which gets deleted when new version is installed). - -# Customizing - -Let's see how one would be able to do a simple SplashScreen: - -````javascript -const { app, BrowserWindow } = require('electron'); -const electrify = require('electrify-qrl')(__dirname); - -let window; -let splash; - -app.on('ready', function() { - splash = new BrowserWindow({ // starts splash window - // >>> your configs here - }); - splash.loadUrl('./splash.html'); // create the ".electrify/splash.html" file - - // then move along and start electrify - electrify.start(function(meteor_root_url) { - // before opening a new window with your app, destroy the splash window - splash.close(); // >>> or .destroy(), check what works for you - - // from here on, well, nothing changes.. - - // creates a new electron window - window = new BrowserWindow({ - width: 1200, height: 900, - nodeIntegration: false // node integration must to be off - }); - - // open up meteor root url - window.loadURL(meteor_root_url); - }); -}); - -// .... -```` - -## Meteor x Electron integration - -You can seamlessly call Electron methods from your Meteor's client/server code. - -Define your Electron methods inside the `.electrify` folder: - -````javascript -// `.electrify/index.js` file -electrify.methods({ - 'hello.world': function(firstname, lastname, done) { - // do things with electron api, and then call the `done` callback - // as ~> done(err, res); - done(null, 'Hello '+ firstname +' '+ lastname +'!'); - } -}); -```` - -Then, in your Meteor code (client and server), you can use the meteor-electrify-client to call these methods. - -## Upgrading - -When upgrading to newer versions, it's **important** to know that: - -### templates - -Once these files exists on disk, they *will not* be overwritten. - * `.electrify/index.js` - * `.electrify/package.json` - * `.electrify/electrify.json` - * `.electrify/.gitignore.json` - -### api - -As these files above will never be overwritten, in case of any API changes that needs -adjustments, these will have to be made manually. - -### version matching - -Always keep the same electrify version in your Meteor, and inside the -`.electrify` folder, *as per specified in `.electrify/package.json` file*. - -## License - -The MIT License (MIT) - -Copyright for electrify-qrl (c) 2018 The Quantum Resistant Ledger -Copyright (c) 2017 Sebastian Große -Electrify originally created by Copyright (c) 2015 Anderson Arboleya \ No newline at end of file diff --git a/docs/Build/_integration-tests.md b/docs/Build/_integration-tests.md deleted file mode 100644 index 708fe2a..0000000 --- a/docs/Build/_integration-tests.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -docstatus: DRAFT -id: integration-tests -title: QRL Integration Tests -hide_title: false -hide_table_of_contents: false -sidebar_label: QRL Integration Tests -sidebar_position: 8 -pagination_label: QRL Integration Tests -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: QRL Integration Tests -keywords: - - docs - - Advanced - - QRL Integration Tests -image: /assets/img/icons/yellow.png -slug: /developers/integration-tests ---- - -[![CircleCI](https://circleci.com/gh/theQRL/integration_tests.svg?style=svg)](https://circleci.com/gh/theQRL/integration_tests) -[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/theQRL/qrllib/master/LICENSE) - -# QRL Integration Tests - -## How to run integration tests - -Get CircleCI CLI (https://circleci.com/docs/2.0/local-cli/#installing-the-circleci-local-cli-on-macos-and-linux-distros) - -Clone this repo and run: - -```bash -circleci build -``` - -if you want to run some specific group/job, you can select it by using: -```bash -circleci build --job JOB_NAME -``` - -where JOB_NAME is one of the job described in `.circleci/config.yml`. - -Example: -```bash -circleci build --job tests_js -``` - -When running locally, it might be useful to run the `debug` job -Example: -```bash -circleci build --job debug -``` -This job is not run in the CI server but can be used locally to test different scenarios, filter specific tests, etc. \ No newline at end of file diff --git a/docs/Build/_ots-keys.md b/docs/Build/_ots-keys.md deleted file mode 100644 index a7100db..0000000 --- a/docs/Build/_ots-keys.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -docstatus: DRAFT -id: ots -title: OTS Keys -hide_title: false -hide_table_of_contents: false -sidebar_label: OTS Keys -sidebar_position: 2 -pagination_label: OTS Keys -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: OTS Keys documentation for the Quantum Resistant Ledger. -keywords: - - docs - - Advanced - - One Time Signature - - OTS -image: /assets/img/icons/yellow.png -slug: /developers/ots ---- - diff --git a/docs/Build/_overview.md b/docs/Build/_overview.md deleted file mode 100644 index 9cb36ef..0000000 --- a/docs/Build/_overview.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -docstatus: DRAFT -id: developers-overview -title: QRL Developer Documentation -hide_title: false -hide_table_of_contents: false -sidebar_label: Overview -sidebar_position: 1 -pagination_label: Developers Overveiw -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Developers documentation for the Quantum Resistant Ledger. -keywords: - - docs - - Advanced - - Developer -image: /assets/img/icons/yellow.png -slug: /build/overview ---- - -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: - -Building on the QRL extends the secure cryptography and security of an immutable blockchain to developers needs. The project has made available multiple on ramps and compatability software to provide the least abbrasive introduction to quantum resistant blockchain technology. - - diff --git a/docs/Build/qrl-status.md b/docs/Build/qrl-status.md index 76a128f..5b52465 100644 --- a/docs/Build/qrl-status.md +++ b/docs/Build/qrl-status.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qrl-status title: QRL Services Status hide_title: false @@ -17,9 +17,7 @@ image: /assets/img/icons/yellow.png slug: /build/qrl-status --- -The QRL foundation monitors and maintains multiple services related to the Quantum Resistant Ledger and it's functional operation. - -These services can be seen on the [QRL Service Status Dashboard](https://status.theqrl.org/). +The QRL foundation monitors and maintains multiple services related to the Quantum Resistant Ledger and it's functional operation. These services can be seen on the [QRL Service Status Dashboard](https://status.theqrl.org/). This dashboard gives insight to critical services such as the Web Wallet, Block Explorer, and various QRL Nodes for these services. diff --git a/docs/Build/qrllib.md b/docs/Build/qrllib.md index 698c195..c32344b 100644 --- a/docs/Build/qrllib.md +++ b/docs/Build/qrllib.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qrllib title: QRLLIB - The QRL Core Library hide_title: false @@ -30,7 +30,7 @@ import TabItem from '@theme/TabItem'; QRL Core Library

Providing QRL Core Functions to Developers

+ title="GitHub Repository link">GitHub repository link for the QRL Core Library

diff --git a/docs/Build/security.md b/docs/Build/security.md index 77395f0..f08177e 100644 --- a/docs/Build/security.md +++ b/docs/Build/security.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: security title: QRL Security hide_title: false @@ -31,13 +31,13 @@ From validating releases for the QRL wallet to providing a secure means to repor
diff --git a/docs/Learn/Blockchain/_blockchain-immutability.md b/docs/Learn/Blockchain/_blockchain-immutability.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/Blockchain/_blockchain-transactions.md b/docs/Learn/Blockchain/_blockchain-transactions.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/Blockchain/_proof-of-stake.md b/docs/Learn/Blockchain/_proof-of-stake.md deleted file mode 100644 index eca1395..0000000 --- a/docs/Learn/Blockchain/_proof-of-stake.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -docstatus: DRAFT - -id: pos-overview -title: Proof Of Steak -hide_title: false -hide_table_of_contents: false -sidebar_label: Proof Of Steak -sidebar_position: 6 -pagination_label: Proof Of Steak -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Proof Of Steak -keywords: - - docs - - mining -image: /assets/img/icons/yellow.png -slug: /learn/blockchain/proof-of-stake ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: - -Blockchain proof-of-stake (POS) is a type of consensus algorithm that is used to achieve distributed consensus in a blockchain network. - -In a proof-of-stake system, the creator of the next block on the chain is chosen based on their stake, or how many coins they hold, in the network. - -This is in contrast to proof-of-work (POW) systems, where the creator of the next block is chosen based on their computational power. - -There are several advantages to using proof-of-stake (POS) consensus over proof-of-work (POW). - -One of the main advantages is that POS systems are generally more energy-efficient than POW systems. - -This is because in a POW system, miners need to use a significant amount of computational power to solve complex mathematical problems in order to create new blocks, which consumes a lot of energy. - -In a POS system, on the other hand, the creator of the next block is chosen based on their stake in the network, so the process of creating new blocks is less resource-intensive. \ No newline at end of file diff --git a/docs/Learn/Blockchain/_proof-of-work.md b/docs/Learn/Blockchain/_proof-of-work.md deleted file mode 100644 index fa95a7a..0000000 --- a/docs/Learn/Blockchain/_proof-of-work.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -docstatus: DRAFT - -id: pow-overview -title: Proof Of Work Overveiw -hide_title: false -hide_table_of_contents: false -sidebar_label: Proof Of Work -sidebar_position: 5 -pagination_label: Proof Of Work -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Proof Of Work (POW) overveiw -keywords: - - docs - - mining - - proof-of-work -image: /assets/img/icons/yellow.png -slug: /learn/blockchain/proof-of-work ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: - - -In a proof-of-work (POW) system, the creator of the next block on the blockchain is chosen based on their computational power, in a process known as mining. -Miners compete to solve a computationally difficult problem in order to validate transactions and create new blocks on the blockchain. - -The first miner to solve the problem is rewarded with a certain number of coins, and a new block is added to the blockchain. This reward serves as an incentive for miners to continue participating in the network and contributing their computational power to maintain its integrity and security. - -:::info -Get started mining QRL either using a [Pool](#) or try your luck with [solo mining](#). -::: - -The problem that miners need to solve is designed to be difficult to compute but easy to verify. This means that it takes a lot of computing power to find a solution, but once a solution is found, it can be easily verified by other miners to ensure its validity. - -The difficulty of the problem is adjusted dynamically, based on the overall computing power of the network, in order to maintain a consistent rate of block creation. This means that as more miners join the network and the total computing power increases, the difficulty of the problem increases as well, making it more difficult for any individual miner to solve the problem and earn the reward. - -In this way, PoW systems ensure that validating transactions and creating new blocks on the blockchain is a competitive and costly process, which helps to secure the network and prevent malicious actors from attacking it. - - -#### RandomX - -RandomX is a proof-of-work (PoW) mining algorithm designed to be resistant to the specialized hardware used in many other PoW algorithms. It is used by the QRL to secure the blockchain and prevent attackers from gaining control of the network. - -RandomX uses a combination of random code execution and memory-hard techniques to make it difficult for specialized hardware, such as Application-Specific Integrated Circuits (ASICs), to perform well. - -This means that it is more accessible to miners using standard computer hardware, such as a CPU or GPU. - -The goal of using a mining algorithm like RandomX is to create a more decentralized network, where a wider range of participants can contribute to the security and stability of the blockchain. - -This can help to prevent a small group of miners from gaining too much control over the network, and can make it more difficult for attackers to launch successful attacks - diff --git a/docs/Learn/Blockchain/_transaction-fees.md b/docs/Learn/Blockchain/_transaction-fees.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/Blockchain/_what-is-blockchain.md b/docs/Learn/Blockchain/_what-is-blockchain.md deleted file mode 100644 index cdecac5..0000000 --- a/docs/Learn/Blockchain/_what-is-blockchain.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -docstatus: DRAFT -id: what-is-blockchain -title: What is Blockchain -hide_title: false -hide_table_of_contents: true -sidebar_label: What Is Blockchain -sidebar_position: 1 -pagination_label: What Is Blockchain -custom_edit_url: -description: Explination of blockchain in relation to the Quantum Resistant Ledger -keywords: - - docs - - Basics - - Blockchain -image: /assets/img/icons/yellow.png -slug: /basics/blockchain/what-is-blockchain ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Learn/cryptography/_extensible-cryptography.md b/docs/Learn/cryptography/_extensible-cryptography.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/cryptography/_proving-quantum-resistance.md b/docs/Learn/cryptography/_proving-quantum-resistance.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/cryptography/_qrl-cryptography.md b/docs/Learn/cryptography/_qrl-cryptography.md deleted file mode 100644 index 0228524..0000000 --- a/docs/Learn/cryptography/_qrl-cryptography.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -docstatus: DRAFT -id: qrl-cryptography -title: QRL Cryptography -hide_title: false -hide_table_of_contents: false -sidebar_label: QRL Cryptography -sidebar_position: 1 -pagination_label: QRL Cryptography -custom_edit_url: https://github.com/theqrl/documentation/edit/master/docs/basics/xmss.md -description: QRL Cryptography overview and basics -keywords: - - cryptography - - xmss - - QRL Cryptography -image: /assets/img/icons/yellow.png -slug: /basics/cryptography ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Learn/cryptography/_stateful.md b/docs/Learn/cryptography/_stateful.md deleted file mode 100644 index 8045160..0000000 --- a/docs/Learn/cryptography/_stateful.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -docstatus: DRAFT -id: stateful-cryptography -title: Stateful Cryptography -hide_title: false -hide_table_of_contents: false -sidebar_label: Stateful Cryptography -sidebar_position: 1 -pagination_label: Stateful Cryptography -custom_edit_url: https://github.com/theqrl/documentation/edit/master/docs/basics/xmss.md -description: Stateful Cryptography overview and basics -keywords: - - cryptography - - xmss - - Stateful Cryptography -image: /assets/img/icons/yellow.png -slug: /basics/cryptography/stateful ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Learn/cryptography/_what-makes-qrl-qr.md b/docs/Learn/cryptography/_what-makes-qrl-qr.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/cryptography/_xmss.md b/docs/Learn/cryptography/_xmss.md deleted file mode 100644 index f357c4d..0000000 --- a/docs/Learn/cryptography/_xmss.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -docstatus: DRAFT -id: xmss -title: eXtended Merkle Signature Scheme (XMSS) -hide_title: false -hide_table_of_contents: false -sidebar_label: XMSS Overview -sidebar_position: 2 -pagination_label: XMSS Overview -custom_edit_url: https://github.com/theqrl/documentation/edit/master/docs/basics/xmss.md -description: XMSS overview and basics -keywords: - - cryptography - - xmss -image: /assets/img/icons/yellow.png -slug: /basics/cryptography/xmss ---- - - - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! - - -### NEEDS - -- Discuss in basic terms how xmss works and provides QR to the project -- Graphics -- Links to whitepapers -- Links to videos and resources - -::: diff --git a/docs/Learn/quantum/_how-is-a-qc-faster.md b/docs/Learn/quantum/_how-is-a-qc-faster.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/quantum/_how-qc-breakes-cryptography.md b/docs/Learn/quantum/_how-qc-breakes-cryptography.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/quantum/_how-qc-changes-blockchain.md b/docs/Learn/quantum/_how-qc-changes-blockchain.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/quantum/_quantum-threat.md b/docs/Learn/quantum/_quantum-threat.md deleted file mode 100644 index f30f0fb..0000000 --- a/docs/Learn/quantum/_quantum-threat.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -docstatus: DRAFT -id: quantum-threat -title: Quantum Threat -hide_title: false -hide_table_of_contents: false -sidebar_label: Quantum Threat -sidebar_position: 5 -pagination_label: Quantum Threat -custom_edit_url: https://github.com/theqrl/documentation/edit/master/docs/basics/xmss.md -description: Quantum Threat -keywords: - - cryptography - - qrl - - Quantum Threat -image: /assets/img/icons/yellow.png - ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Learn/quantum/_what-is-a-quantum-computer.md b/docs/Learn/quantum/_what-is-a-quantum-computer.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Learn/quantum/_why-is-btc-vulnerable.md b/docs/Learn/quantum/_why-is-btc-vulnerable.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Tutorials/Node/_automated-hypertree-wallet.md b/docs/Tutorials/Node/_automated-hypertree-wallet.md deleted file mode 100644 index cf55871..0000000 --- a/docs/Tutorials/Node/_automated-hypertree-wallet.md +++ /dev/null @@ -1 +0,0 @@ -_automated-hypertree-wallet.md \ No newline at end of file diff --git a/docs/Tutorials/_fullNode.md b/docs/Tutorials/_fullNode.md deleted file mode 100644 index 6217ccb..0000000 --- a/docs/Tutorials/_fullNode.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -sidebar_position: 2 ---- - - diff --git a/docs/Tutorials/_getBlock.md b/docs/Tutorials/_getBlock.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Tutorials/_on-chain-vote.md b/docs/Tutorials/_on-chain-vote.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Tutorials/_qrl-cli.md b/docs/Tutorials/_qrl-cli.md deleted file mode 100644 index 0afc217..0000000 --- a/docs/Tutorials/_qrl-cli.md +++ /dev/null @@ -1 +0,0 @@ -qrl-cli.md diff --git a/docs/Tutorials/_sendTransaction.md b/docs/Tutorials/_sendTransaction.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Tutorials/_zeusProxy.md b/docs/Tutorials/_zeusProxy.md deleted file mode 100644 index 90e6d24..0000000 --- a/docs/Tutorials/_zeusProxy.md +++ /dev/null @@ -1 +0,0 @@ -zeusProxy.md \ No newline at end of file diff --git a/docs/Tutorials/notarize-qrl-cli.md b/docs/Tutorials/notarize-qrl-cli.md index 37812f0..cfb09a2 100644 --- a/docs/Tutorials/notarize-qrl-cli.md +++ b/docs/Tutorials/notarize-qrl-cli.md @@ -24,7 +24,7 @@ The notarization system is simple and very straightforward to use. Additionally - It allows a file of any size to be notarized on the blockchain - There are both front end tools and command line tools available - The notarization will never expire or fail to verify, being part of the blockchain -- These notarizations are considered post quantum secure, using hash based cryptography +- These notarization's are considered post quantum secure, using hash based cryptography While not exactly a true notarization, as there is no trusted party involved to witness the transaction and verify my identity, for my purposes it is secure enough. diff --git a/docs/Use/Mining/_mining-software.md b/docs/Use/Mining/_mining-software.md deleted file mode 100644 index d386e1a..0000000 --- a/docs/Use/Mining/_mining-software.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: mining-software -title: Mining Software QRL -hide_title: false -hide_table_of_contents: false -sidebar_label: Mining Software QRL -sidebar_position: 4 -pagination_label: Mining Software QRL -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Mining QRL -keywords: - - docs - - mining -image: /assets/img/icons/yellow.png - ---- \ No newline at end of file diff --git a/docs/Use/Mining/mining-qrl.md b/docs/Use/Mining/mining-qrl.md index 034c279..7c103f3 100644 --- a/docs/Use/Mining/mining-qrl.md +++ b/docs/Use/Mining/mining-qrl.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: mining-qrl-overview title: Mining QRL Overview hide_title: false @@ -38,9 +38,9 @@ As a general rule, you will have a better chance at finding blocks using a pool. Solo mining is referred to a QRL node that is also used for mining new blocks. This method uses the CPU of the node for hashing and is working alone to solve blocks on the network. -Any found block is submitted through the locally synced QRL node and adds to the decentralization of the network by adding additional validation to the chain. This method is limited to the hash power of the local CPU. +Any block found is submitted through the locally synced QRL node and adds to the decentralization of the network by adding additional validation to the chain. This method is limited to the hash power of the local CPU. -If solo mining node discovers a block that is accepted into the chain the full block reward is given to the miner. This has a larger payout however is less likely to happen when compared to pool mining. +If solo mining node discovers a block that is accepted into the chain the full block reward is given to the miner. This has a larger payout, however is less likely to happen when compared to pool mining. :::tip Solo Mining Docs Learn more in our [solo-mining](/use/mining/solo-mining) guide and get started syncing a full QRL node with the [QRL Node Documentation](/use/node/overview) diff --git a/docs/Use/Mining/pool-mining.md b/docs/Use/Mining/pool-mining.md index 46bf2c6..50ada49 100644 --- a/docs/Use/Mining/pool-mining.md +++ b/docs/Use/Mining/pool-mining.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: pool-mining title: Pool Mining QRL hide_title: false @@ -18,7 +18,7 @@ slug: /use/mining/pool-mining --- -Pool mining is the process of multiple users pooling their CPU resources in order to create a larger processing power. The miners then split the rewards they collect as the pool evenly depending on the amount of input. +Pool mining is the process of multiple users pooling their CPU resources in order to create larger processing power. The miners then split the rewards the pool collects, distributed relative to the input of each miner. In order to mine QRL using a PC without syncing the entire blockchain, you can connect to a QRL Pool and offer your hash power to the pool. This will allow you to utilize almost any piece of hardware without the need to run a full node. diff --git a/docs/Use/Mining/solo-mining.md b/docs/Use/Mining/solo-mining.md index 80859fa..0058b72 100644 --- a/docs/Use/Mining/solo-mining.md +++ b/docs/Use/Mining/solo-mining.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: solo-mining title: Solo Mining QRL hide_title: false diff --git a/docs/Use/Node/config.yml b/docs/Use/Node/config.yml index 24a372b..55ec22f 100644 --- a/docs/Use/Node/config.yml +++ b/docs/Use/Node/config.yml @@ -4,26 +4,26 @@ ## It is typically found in the ~/.qrl/ directory ## Default settings are shown below. ## All commands begin with single(#) -## Uncomment and adjust to suit your needs +## Un-comment and adjust to suit your needs ## -##====================================== +## ====================================== ## Mining Configuration -##====================================== +## ====================================== # mining_enabled: False # mining_address: '' # mining_thread_count: 0 # 0 to auto detect thread count based on CPU/GPU number of processors # -##====================================== +## ====================================== ## Ephemeral Configuration -##====================================== +## ====================================== # accept_ephemeral: True # Cache Size # lru_state_cache_size: 10 # max_state_limit: 10 # -##====================================== +## ====================================== ## PEER Configuration -##====================================== +## ====================================== # max_redundant_connections: 5 # Number of connections allowed from nodes having same IP # enable_peer_discovery: True # Allows to discover new peers from the connected peers # peer_list: @@ -53,59 +53,59 @@ # stale_transaction_threshold: 15 # 15 Blocks # _qrl_dir: "~/.qrl" # -##====================================== +## ====================================== ## ADMIN API CONFIGURATION -##====================================== +## ====================================== # admin_api_enabled: False # admin_api_host: "127.0.0.1" # admin_api_port: 19008 # admin_api_threads: 1 # admin_api_max_concurrent_rpc: 100 # -##====================================== +## ====================================== ## PUBLIC API CONFIGURATION -##====================================== +## ====================================== # public_api_enabled: True # public_api_host: "127.0.0.1" # public_api_port: 19009 # public_api_threads: 1 # public_api_max_concurrent_rpc: 100 # -##====================================== +## ====================================== ## MINING API CONFIGURATION -##====================================== +## ====================================== # mining_api_enabled: False # mining_api_host: "127.0.0.1" # mining_api_port: 19007 # mining_api_threads: 1 # mining_api_max_concurrent_rpc: 100 # -##====================================== +## ====================================== ## DEBUG API CONFIGURATION -##====================================== +## ====================================== # debug_api_enabled: False # debug_api_host: "127.0.0.1" # debug_api_port: 52134 # debug_api_threads: 1 # debug_api_max_concurrent_rpc: 100 # -##====================================== +## ====================================== ## GRPC PROXY CONFIGURATION -##====================================== +## ====================================== # grpc_proxy_host: "127.0.0.1" # grpc_proxy_port: 18090 # -##====================================== +## ====================================== ## WALLET DAEMON CONFIGURATION -##====================================== +## ====================================== # public_api_server: "127.0.0.1:19009" # wallet_daemon_host: "127.0.0.1" # wallet_daemon_port: 18091 # number_of_slaves: 3 # -##====================================== +## ====================================== ## WALLET API CONFIGURATION -##====================================== +## ====================================== # wallet_api_host: "127.0.0.1" # wallet_api_port: 19010 # wallet_api_threads: 1 diff --git a/docs/Use/Node/minimum-node-requirements.md b/docs/Use/Node/minimum-node-requirements.md index 6a1251f..50c6752 100644 --- a/docs/Use/Node/minimum-node-requirements.md +++ b/docs/Use/Node/minimum-node-requirements.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: node-requirements title: QRL Node Requirements hide_title: false @@ -50,7 +50,6 @@ The prompt will show compatible support if available. Enough storage is required for the current () and future chain growth. The node software will sync each block from the genesis block on June 2018 till current block height as agreed across the network. -> NEED TO ADD SOME REFERENCE INFORMATION ON BLOCKCHAIN AND LINK ABOVE ^^^^^ ALSO Chain Size ### Reliable Network Connection @@ -62,7 +61,6 @@ The node will send information and request information from other nodes in the n Advanced configuration is required for the node to validate blocks and share block information via the p2p network. Additional ports need to be reachable and a static IP address is preferred -> NEED LINKS TO AN ADVANCED NETWORK CONFIGURATION GUIDE FOR EXTERNAL REACHABLE NODE ABOVE ^^^^ ### Modern 64 bit Processor diff --git a/docs/Use/Node/node-cli/backup-cli-wallet.md b/docs/Use/Node/node-cli/backup-cli-wallet.md index 506f137..e92ee53 100644 --- a/docs/Use/Node/node-cli/backup-cli-wallet.md +++ b/docs/Use/Node/node-cli/backup-cli-wallet.md @@ -1,6 +1,6 @@ --- id: backup-cli-wallet -docstatus: 30% +docstatus: 90% title: Node CLI Wallet - Backup hide_title: false hide_table_of_contents: false @@ -20,10 +20,12 @@ image: /assets/img/icons/yellow.png slug: /use/node/node-cli/backup-cli-wallet --- -Backing up a QRL CLI wallet is similar to the GUI wallets offered. Simply print the secret keys and store them somewhere safe. Additionally the `wallet.json` file can be encrypted using AES encryption and stored digitally until needed. +Backing up a QRL CLI wallet is similar to the GUI wallets offered. Print the secret keys and store them somewhere safe. + +Additionally the `wallet.json` file can be encrypted using AES encryption and stored digitally until needed. :::tip -It's recommended that you store a copy of your private keys in at least 2 physical locations in case of catastrophe. If lost no one can help you. +It's recommended that you store a copy of your private keys in at least 2 physical locations in case of catastrophe. ::: ## wallet.json Secrets @@ -54,8 +56,6 @@ qrl wallet_secret This requires a QRL wallet has already been generated and is in the local directory. To specify an additional directory location for the wallet.json file use the `--wallet_dir {PATH}` flag. ::: - - After successful decryption the private key information will be printed. ```bash {3,5} diff --git a/docs/Use/Node/node-cli/node-cli-slave-xmss.md b/docs/Use/Node/node-cli/node-cli-slave-xmss.md index 44badea..a4c44d9 100644 --- a/docs/Use/Node/node-cli/node-cli-slave-xmss.md +++ b/docs/Use/Node/node-cli/node-cli-slave-xmss.md @@ -1,6 +1,6 @@ --- id: node-cli-slave-xmss -docstatus: 30% +docstatus: 90% title: QRL Node CLI Wallet - Slave keys hide_title: false hide_table_of_contents: false @@ -20,7 +20,7 @@ slug: /use/node/node-cli/node-cli-slave-xmss --- -The QRL wallet is an XMSS Merkle tree constructed using the private key to generate leaves of this tree. Each "leaf" can also generate a tree of OTS Slave keys that can be used to sign transactions. This allows further expansion of a QRL wallet extending the number of transactions you can process before needing to regenerate a new wallet. +The QRL wallet is an XMSS Merkle tree constructed using the private key to generate leaves. Each "leaf" can also generate a tree of OTS Slave keys that can be used to sign transactions. This allows further expansion of a QRL wallet extending the number of transactions you can process before needing to regenerate a new wallet. > To create a slaves.json file you will need a QRL wallet.json file and a working installation of QRL. See the guide for creating a [QRL CLII Wallet](use/node/node-cli/overview) {: .info} diff --git a/docs/Use/Node/node-cli/node-cli.md b/docs/Use/Node/node-cli/node-cli.md index 3603aec..a7f48f4 100644 --- a/docs/Use/Node/node-cli/node-cli.md +++ b/docs/Use/Node/node-cli/node-cli.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: node-cli title: QRL Node Command Line Interface hide_title: false @@ -136,7 +136,6 @@ Slave transaction allow an extension to the master address, allowing an entirely See the [Slave Tree Documentation](#) for complete explanation of deterministic OTS key trees and how QRL has extend the life of an XMSS address to an almost infinite amount of OTS keys. ::: -> NEED TO ADD REFERENCE TO THE SLAVE DOCUMENTATION ^^^ #### slave_tx_generate Help @@ -170,7 +169,6 @@ Options: | --ots_key_index | *Yes* | INTEGER | OTS Key Index used to sign the transaction, must be an UNUSED OTS for the `--src` address | -> NEED TO ADD CLARIFICATION ON OPTIONS ^^^ #### Example Command @@ -473,7 +471,6 @@ Options: | --fee | *Yes* | DECIMAL | Transaction fee to send the transaction| | --ots_key_index | *Yes* | INTEGER | OTS Key Index used to sign the transaction, must be an UNUSED OTS for the `--src` address| -> NEED TO SORT THE LIST FORMAT ABOVE for the dsts address and amounts ^^^^ #### Example Command @@ -500,7 +497,6 @@ tx_hash: "\322\242\021>\201U\375\313\240\200U\326\356\204>sp\317\2636\326]\373\2 Push a signed transaction blob to a node for broadcasting. -> NEED TO FIX ^^^ What is the txblob format and how do we sign a tx without sending it? Signed or unsigned? #### Help @@ -548,7 +544,6 @@ qrl tx_push --txblob ......... ``` -> FIX THIS OUTPUT ^^^ Need to send a txblob that has not been signed and broadcast on network. This one is not a valid tx, key reuse ### tx_token @@ -585,7 +580,6 @@ Options: | --fee | *Yes* | DECIMAL | Transaction fee to send the transaction| | --ots_key_index | *Yes* | INTEGER | OTS Key Index used to sign the transaction, must be an UNUSED OTS for the `--src` address| -> NEED TO FIX DECIMALS COMMENTS ABOVE ^^^ #### Example Command @@ -745,7 +739,6 @@ Options: | --fee | *Yes* | DECIMAL | Transaction fee to send the transaction| | --ots_key_index | *Yes* | INTEGER | OTS Key Index used to sign the transaction, must be an UNUSED OTS for the `--src` address| -> NEED TO FIX DECIMALS COMMENTS ABOVE ^^^ #### Example Command diff --git a/docs/Use/Node/node-configuration.md b/docs/Use/Node/node-configuration.md index 617d14e..48d1475 100644 --- a/docs/Use/Node/node-configuration.md +++ b/docs/Use/Node/node-configuration.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: node-config title: QRL Node Configuration hide_title: false @@ -71,11 +71,6 @@ mining_address: 'Q01050040b1f8b6e87e3c114f61f921f25b9e392f5ae90b7a1e8bbc0551dabd mining_thread_count: 0 ``` - - - - - ### Ephemeral Config Ephemeral messaging configuration details are shown below. @@ -84,9 +79,6 @@ Ephemeral messaging configuration details are shown below. ::: - - - #### `accept_ephemeral` Set this to true to enable ephemeral traffic on the node. @@ -115,7 +107,6 @@ accept_ephemeral: True outgoing_message_expiry: 90 ``` - ### P2P Config Configure the Peer to Peer settings. @@ -171,15 +162,6 @@ May require additional firewall port forward settings depending on the network c | p2p_q_size | *10000* | | - - - -> FIXME! What is this directive for? ^^^ - - - - - #### `peer_rate_limit` Maximum number of messages that can be sent between peers. @@ -197,16 +179,12 @@ Number of minutes to ban offending peer IP addresses. |:----------|:-------:|:------------| | ban_minutes | *20* | Allows to ban a peer's IP who is breaking protocol | - -> FIXME! What defines breaking protocol? - #### `monitor_connections_interval` | Directive | Default | Description | |:----------|:-------:|:------------| | monitor_connections_interval | *30* | Monitor connection every 30 seconds | -> FIXME! What is this directive for? ^^^ #### `max_peers_limit` @@ -248,10 +226,6 @@ List of NTP servers for the node to use | chain_state_timeout | *180* | | -> FIXME! What is this directive for? ^^^ - - - #### `chain_state_broadcast_period` | Directive | Default | Description | @@ -259,10 +233,6 @@ List of NTP servers for the node to use | chain_state_broadcast_period | *180* | must be less than ping_timeout | - -> FIXME! What is this directive for? ^^^ - - #### `transaction_pool_size` | Directive | Default | Description | @@ -270,12 +240,6 @@ List of NTP servers for the node to use | transaction_pool_size | *25000* | | - -> FIXME! What is this directive for? ^^^ - - - - #### `transaction_minimum_fee` Minimum fee allowed by the node to be accepted into a block. @@ -291,12 +255,6 @@ Minimum fee allowed by the node to be accepted into a block. | pending_transaction_pool_size | *75000* | 1% of the pending_transaction_pool will be reserved for moving stale txn | - - -> FIXME! What is this directive for? ^^^ - - - #### `pending_transaction_pool_reserve` | Directive | Default | Description | @@ -304,9 +262,6 @@ Minimum fee allowed by the node to be accepted into a block. | pending_transaction_pool_reserve | *75* | `int(self.pending_transaction_pool_size * 0.01)` | -> FIXME! What is this directive for? ^^^ - - #### `stale_transaction_threshold` Threshold before considering a transaction stale and rejecting. @@ -353,7 +308,6 @@ stale_transaction_threshold: 15 ### Admin API Config -> FIXME! What is this directive for? ^^^ #### `admin_api_enabled` @@ -450,7 +404,6 @@ public_api_max_concurrent_rpc: 100 ``` - ### Mining API Config #### `mining_api_enabled` diff --git a/docs/Use/Node/node-installation.md b/docs/Use/Node/node-installation.md index c1c3f96..97d3ae3 100644 --- a/docs/Use/Node/node-installation.md +++ b/docs/Use/Node/node-installation.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: node-installation title: QRL Node Installation hide_title: false @@ -98,8 +98,6 @@ pip3 install --user service-identity==21.1.0 pip3 install -U qrl ``` -> FIXME!! Need to update install instructions for MacOS -
@@ -142,9 +140,6 @@ pip3 install --user -U setuptools pip3 install --user -U qrl ``` -> FIXME!! Need to update install instructions for Redhat - -
diff --git a/docs/Use/Node/node-update.md b/docs/Use/Node/node-update.md index 64e727c..3417885 100644 --- a/docs/Use/Node/node-update.md +++ b/docs/Use/Node/node-update.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: node-update title: QRL Node Update hide_title: false @@ -22,7 +22,7 @@ import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; -Running a QRL node requires maintenance from time to time. Follw these instructions to update. +Running a QRL node requires maintenance from time to time. Follow these instructions to update. ## Updating @@ -161,6 +161,4 @@ start_qrl ### State Migration -Any time there is a major update there will be a state migration the happens once you start the node. - -> FIXME! What happens with state migration and when is it needed? \ No newline at end of file +Any time there is a major update there will be a state migration the happens once you start the node. \ No newline at end of file diff --git a/docs/Use/Node/node-uses.md b/docs/Use/Node/node-uses.md index 79c9ce5..59ce91d 100644 --- a/docs/Use/Node/node-uses.md +++ b/docs/Use/Node/node-uses.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: node-uses title: QRL Node Uses hide_title: false @@ -32,7 +32,6 @@ In addition to the network security provided by as many nodes on network as poss Running a transaction through a local, secure node ensures that the transaction can not be modified and will be broadcast to the active and accepted network and chain. -> FIX THIS - Add information on how this security is provided through running a node ## Wallet Functions @@ -41,7 +40,6 @@ One of the main uses of a node is to broadcast signed transactions to the networ Any transaction that consumes an OTS key, requiring a signature has to be sent through a node. This includes sending quanta, sending message transactions, notarizing data, or creating a colored token. All of these transactions can be sent through a local node. Depending on how you are interacting with the system, the means to signify a custom node vary, however the functionality is present in all QRL wallet tools - ## Chain Analytics Functions To ensure the data provided is correct and provided with no worries of bandwidth a local node should be run to provide this data. This will allow a developer to gather historical data or provide all new chain data to an integrated system. @@ -71,7 +69,3 @@ If there are enough funds in the address to cover the fee and any fund transfer When an address balance is looked up or a transaction is verified, this is simply looking at the history in the chain for the address/transaction involved. All of this data is stored on the chain and is validated and agreed upon by a majority of nodes in the network. These transactions are stored in the nodes chain state files which compose a level database that has been verified through a P2P syncing process. These historical transactions are validated by verifying cryptographic hashes provided by peers on the network. - - - -> FIX ME - Need to improve these explanations with references and additional examples of usage \ No newline at end of file diff --git a/docs/Use/Node/qrl-maintenance.md b/docs/Use/Node/qrl-maintenance.md index 978d122..956f89a 100644 --- a/docs/Use/Node/qrl-maintenance.md +++ b/docs/Use/Node/qrl-maintenance.md @@ -1,5 +1,5 @@ --- -docstatus: 30% +docstatus: 90% id: qrl-maintenance title: QRL Node Maintenance hide_title: false diff --git a/docs/Use/Node/qrl-node.md b/docs/Use/Node/qrl-node.md index 269571f..9640bb7 100644 --- a/docs/Use/Node/qrl-node.md +++ b/docs/Use/Node/qrl-node.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: overview title: QRL Node Overview hide_title: false @@ -19,12 +19,10 @@ slug: /use/node/overview A QRL node is a dedicated computer running software developed by the QRL team. These computers make up the core building blocks of the network and strengthen the chain by helping to agree on the immutable consensus of each block. - Each node works in conjunction with other nodes to form a an agreed upon chain, gaining consensus on what the next valid block is in the chain. Additionally they are responsible for collecting and inserting transactions into the chains history from the transaction mempool. This is what makes up the distributed ledger and forms the core blockchain. - :::info For more information on the p2p interaction between nodes take a look at the QRL [White Paper](/build/fundamentals/whitepaper) ::: @@ -53,11 +51,10 @@ A node is interacted with every time a transaction is sent to the network, no ma For instance, the wallet software uses a private key to sign a transaction which is then sent to the network via a QRL node operated by the foundation. The node listens for these incoming transactions from the wallet application from users and broadcasts them to be minted into a future block. - When a new transaction is created the node runs through a few verification checks prior to sending the transaction to the mempool. If the address OTS key used to sign the transaction is already known to the blockchain the node will reject the transaction, protecting the address from broadcasting a OTS key re-use. :::info -OTS key information can be found in the [OTS Key Documentation](#) +OTS key information can be found in the [OTS Key Documentation](/build/fundamentals/ots-keys) ::: If there are enough funds in the address to cover the fee and any fund transfer the node will send the transaction to it's peers to be added to the next available block. diff --git a/docs/Use/Tools/Integrations/qrl-integrations.md b/docs/Use/Tools/Integrations/_qrl-integrations.md similarity index 100% rename from docs/Use/Tools/Integrations/qrl-integrations.md rename to docs/Use/Tools/Integrations/_qrl-integrations.md diff --git a/docs/Use/Tools/Integrations/enqlave/_create-PQ-address.md b/docs/Use/Tools/Integrations/enqlave/_create-PQ-address.md deleted file mode 100644 index 4c1bf59..0000000 --- a/docs/Use/Tools/Integrations/enqlave/_create-PQ-address.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: create-PQ-address -title: Create a PQ Address -hide_title: false -hide_table_of_contents: false -sidebar_label: Create a PQ Address -sidebar_position: 3 -pagination_label: Create a PQ Address -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Create a PQ Address for The QRL enQlave system -keywords: - - docs - - enQlave -image: /assets/img/icons/yellow.png - ---- \ No newline at end of file diff --git a/docs/Use/Tools/Integrations/enqlave/_eQRT.md b/docs/Use/Tools/Integrations/enqlave/_eQRT.md deleted file mode 100644 index 92be37f..0000000 --- a/docs/Use/Tools/Integrations/enqlave/_eQRT.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: eqrt -title: eQRT -hide_title: false -hide_table_of_contents: false -sidebar_label: eQRT -sidebar_position: 2 -pagination_label: eQRT -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Overview of the eQRT ethereum Quantum Resistant Token -keywords: - - docs - - eQRT -image: /assets/img/icons/yellow.png - ---- \ No newline at end of file diff --git a/docs/Use/Tools/Integrations/enqlave/_enQlave.md b/docs/Use/Tools/Integrations/enqlave/_enQlave.md deleted file mode 100644 index 0142188..0000000 --- a/docs/Use/Tools/Integrations/enqlave/_enQlave.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: enqlave -title: enQlave -hide_title: false -hide_table_of_contents: false -sidebar_label: enQlave -sidebar_position: 1 -pagination_label: enQlave -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Overview of the enQlave system -keywords: - - docs - - enQlave -image: /assets/img/icons/yellow.png ---- \ No newline at end of file diff --git a/docs/Use/Tools/Integrations/enqlave/_hashchains.md b/docs/Use/Tools/Integrations/enqlave/_hashchains.md deleted file mode 100644 index cb3294a..0000000 --- a/docs/Use/Tools/Integrations/enqlave/_hashchains.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -id: hashchains -title: Hashchains -hide_title: false -hide_table_of_contents: false -sidebar_label: Hashchains -sidebar_position: 5 -pagination_label: Hashchains -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Using Hashchains for The QRL enQlave system -keywords: - - docs - - enQlave - - hashchains -image: /assets/img/icons/yellow.png - ---- \ No newline at end of file diff --git a/docs/Use/Tools/Integrations/enqlave/_xmss-signature.md b/docs/Use/Tools/Integrations/enqlave/_xmss-signature.md deleted file mode 100644 index ff305e2..0000000 --- a/docs/Use/Tools/Integrations/enqlave/_xmss-signature.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -id: xmss-signature -title: XMSS Signature -hide_title: false -hide_table_of_contents: false -sidebar_label: XMSS Signature -sidebar_position: 4 -pagination_label: XMSS Signature -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Using an XMSS Signature for The QRL enQlave system -keywords: - - docs - - enQlave - - XMSS -image: /assets/img/icons/yellow.png - ---- \ No newline at end of file diff --git a/docs/Use/Tools/explorer/address-lookup.md b/docs/Use/Tools/explorer/address-lookup.md index b9c66c5..a0095ec 100644 --- a/docs/Use/Tools/explorer/address-lookup.md +++ b/docs/Use/Tools/explorer/address-lookup.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: address-lookup title: Explorer Address Lookup hide_title: false diff --git a/docs/Use/Tools/explorer/block-lookup.md b/docs/Use/Tools/explorer/block-lookup.md index 1f8030d..1436911 100644 --- a/docs/Use/Tools/explorer/block-lookup.md +++ b/docs/Use/Tools/explorer/block-lookup.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: block-lookup title: QRL Explorer Block Lookup hide_title: false diff --git a/docs/Use/Tools/explorer/qrl-explorer.md b/docs/Use/Tools/explorer/qrl-explorer.md index 7c5c2f6..0e1fb28 100644 --- a/docs/Use/Tools/explorer/qrl-explorer.md +++ b/docs/Use/Tools/explorer/qrl-explorer.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: qrl-explorer title: QRL Explorer Overview hide_title: false diff --git a/docs/Use/Tools/explorer/token-lookup.md b/docs/Use/Tools/explorer/token-lookup.md index 31fea2c..3538d74 100644 --- a/docs/Use/Tools/explorer/token-lookup.md +++ b/docs/Use/Tools/explorer/token-lookup.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: token-lookup title: QRL Token Lookup hide_title: false diff --git a/docs/Use/Tools/explorer/transaction-lookup.md b/docs/Use/Tools/explorer/transaction-lookup.md index 908b2f4..3e8587a 100644 --- a/docs/Use/Tools/explorer/transaction-lookup.md +++ b/docs/Use/Tools/explorer/transaction-lookup.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: transaction-lookup title: QRL Explorer Transaction Lookup hide_title: false @@ -26,7 +26,7 @@ This lookup gives detailed information on the transaction and will vary dependin :::info A transaction hash is a hexadecimal string that is unique to that transaction. Example txhash - *269f1f53a87dcaa87aa27ca6abf945109abf5d11cf28a6e3f9dae6bc73a2e606* -For a detailed list of transaction types and their usage see the [developer documentation](#) +For a detailed list of transaction types and their usage see the [developer documentation](/api/qrl-public-api#transaction) ::: At the top of the transaction search screen is a list of general information related to the transaction that was queried. diff --git a/docs/Use/Tools/messages/_message-structure.md b/docs/Use/Tools/messages/_message-structure.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/messages/_message-uses-case.md b/docs/Use/Tools/messages/_message-uses-case.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/messages/_send-on-chain-message.md b/docs/Use/Tools/messages/_send-on-chain-message.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/messages/messages.md b/docs/Use/Tools/messages/messages.md index 630635f..b668427 100644 --- a/docs/Use/Tools/messages/messages.md +++ b/docs/Use/Tools/messages/messages.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: messages title: QRL Message Overview hide_title: false diff --git a/docs/Use/Tools/multisig/_create-multi-sig-address.md b/docs/Use/Tools/multisig/_create-multi-sig-address.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/multisig/_deposit-to-multi-sig-address.md b/docs/Use/Tools/multisig/_deposit-to-multi-sig-address.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/multisig/_multi-sig-consensus.md b/docs/Use/Tools/multisig/_multi-sig-consensus.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/multisig/_multi-sig-weight.md b/docs/Use/Tools/multisig/_multi-sig-weight.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/multisig/_withdraw-from-multi-sig-address.md b/docs/Use/Tools/multisig/_withdraw-from-multi-sig-address.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/multisig/multisig-generate.md b/docs/Use/Tools/multisig/multisig-generate.md index dfd869d..56a26f3 100644 --- a/docs/Use/Tools/multisig/multisig-generate.md +++ b/docs/Use/Tools/multisig/multisig-generate.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: multisig-generate title: Generate Multisig Address hide_title: false diff --git a/docs/Use/Tools/multisig/multisig-spend-proposal.md b/docs/Use/Tools/multisig/multisig-spend-proposal.md index 06e8d63..8305f78 100644 --- a/docs/Use/Tools/multisig/multisig-spend-proposal.md +++ b/docs/Use/Tools/multisig/multisig-spend-proposal.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: Multisig-spend-proposal title: Multisig Spend Proposal hide_title: false diff --git a/docs/Use/Tools/multisig/multisig-vote.md b/docs/Use/Tools/multisig/multisig-vote.md index 4d8f094..9cd6412 100644 --- a/docs/Use/Tools/multisig/multisig-vote.md +++ b/docs/Use/Tools/multisig/multisig-vote.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: multisig-vote title: QRL Multi-Signature Vote hide_title: false @@ -44,9 +44,9 @@ From within an open wallet, select the "Tools" tab, select "Multisig" and find t Select the transaction which you intend to vote on from the popup window. If no transactions are shown, either the spend proposal is still pending or the address is not associated with this multisig address. Ensure you have the correct address. - Once the correct transaction is selected, you will be presented with the spend proposal details and 2 options, APPROVE or REJECT. Select the intended vote here and verify the Fee and OTS are correct. +Once the correct transaction is selected, you will be presented with the spend proposal details and 2 options, APPROVE or REJECT. Select the intended vote here and verify the Fee and OTS are correct. - Confirm and validate the information is correct, then select the "Click To Send" button at the bottom of this page. +Confirm and validate the information is correct, then select the "Click To Send" button at the bottom of this page. This will register the vote onto the chain, and count towards the threshold required to approve. diff --git a/docs/Use/Tools/multisig/multisig.md b/docs/Use/Tools/multisig/multisig.md index 5351ad6..1671f77 100644 --- a/docs/Use/Tools/multisig/multisig.md +++ b/docs/Use/Tools/multisig/multisig.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: multisig title: QRL Multi-Signature Overview hide_title: false @@ -60,8 +60,6 @@ graph LR end ``` - - ## Important Concepts There are a few nuances with multi-signature addresses that are good to know. @@ -91,13 +89,9 @@ There are a few nuances with multi-signature addresses that are good to know. | **Spend** | A proposal to spend funds allocated to the address, must be initiated by an address associated with the multisig address | | **Expiry Block Number** | A block number in the future where, if the threshold is not met, the spend proposal expires without approval | - - ### Spend Proposal ![Spend Multisig Flow](./assets/img/spend-vote.png) - - ### OTS Key Usage OTS keys are used at various stages and from various addresses in the lifetime of a multisig addresses. All transaction on-chain require a valid OTS key and is used from the address sending the transaction, regardless of the transaction type. @@ -106,8 +100,6 @@ OTS keys are used at various stages and from various addresses in the lifetime o - One key is used to create the spend tx (*spend vote initiator address*) - one key is used for each vote of the multisig (*each signatory that votes*) - - ## References - Create a new multisig address @@ -117,8 +109,6 @@ OTS keys are used at various stages and from various addresses in the lifetime o - Reject a spend proposal - Multi-sig transaction type - - ## Multi-Signature Example Uses Here are some examples of uses for multisig addresses. diff --git a/docs/Use/Tools/nft/mint-nft.md b/docs/Use/Tools/nft/_mint-nft.md similarity index 100% rename from docs/Use/Tools/nft/mint-nft.md rename to docs/Use/Tools/nft/_mint-nft.md diff --git a/docs/Use/Tools/nft/nft-metadata.md b/docs/Use/Tools/nft/_nft-metadata.md similarity index 100% rename from docs/Use/Tools/nft/nft-metadata.md rename to docs/Use/Tools/nft/_nft-metadata.md diff --git a/docs/Use/Tools/nft/nft.md b/docs/Use/Tools/nft/_nft.md similarity index 100% rename from docs/Use/Tools/nft/nft.md rename to docs/Use/Tools/nft/_nft.md diff --git a/docs/Use/Tools/nft/transfer-nft.md b/docs/Use/Tools/nft/_transfer-nft.md similarity index 100% rename from docs/Use/Tools/nft/transfer-nft.md rename to docs/Use/Tools/nft/_transfer-nft.md diff --git a/docs/Use/Tools/notarize/_notarisation-limitations.md b/docs/Use/Tools/notarize/_notarisation-limitations.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/notarize/_notarisation-use-case.md b/docs/Use/Tools/notarize/_notarisation-use-case.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/notarize/notarization.md b/docs/Use/Tools/notarize/notarization.md index 2d8362d..a929b8a 100644 --- a/docs/Use/Tools/notarize/notarization.md +++ b/docs/Use/Tools/notarize/notarization.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: notarization-overview title: QRL Notarization Overview hide_title: false @@ -18,10 +18,10 @@ slug: /use/tools/notarize/overview --- -The QRL's notarization system is a secure and decentralized way of proving the existence and integrity of a document or message at a specific point in time. It is designed to provide a trustworthy method of verifying information without relying on a central authority utilizing blockchain technology. +The QRL's notarization system provides a secure and decentralized way of proving the existence and integrity of a document or message at a specific point in time. It is designed to provide a trustworthy method of verifying information without relying on a central authority utilizing blockchain technology. -When a user wants to notarize a document or message, they can submit it to the QRL network using the [QRL Wallet Tools](#) featured in the [Desktop and Web wallet](/use/wallet). The system then creates a cryptographic hash of the document, which is a unique representation of its contents. +When a user wants to notarize a document or message, they can submit it to the QRL network using the QRL Wallet Tools featured in the [Desktop and Web wallet](/use/wallet). The system then creates a cryptographic hash of the document, which is a unique representation of its contents. This cryptographic hash is then stored on the QRL blockchain, making it a part of the public record. The hash serves as a digital fingerprint of the document and can be used to verify its integrity in the future. Since the blockchain is decentralized and replicated across multiple nodes, it is extremely difficult to tamper with the stored information. @@ -64,7 +64,9 @@ To verify the integrity of the document, you simply pass it through the same has :::tip -It is important to point out that this does NOT load the file to the blockchain, only a cryptographic representation (Hash) of the data in the file. An original copy of the file will be needed to verify the notarization. +It is important to point out that this does **NOT** load the file to the blockchain, only a cryptographic representation (Hash) of the data in the file. An original copy of the file will be needed to verify the notarization. :::caution -Overall, the QRL's notarization system offers a decentralized and secure way to prove the existence and integrity of documents or messages. It leverages blockchain technology to create an immutable record that can be verified by anyone, without the need for a central authority. The provided tools and API make it easy for users to notarize and retrieve information, while the technical documentation gives developers insights into the system's implementation. \ No newline at end of file +Overall, the QRL's notarization system offers a decentralized and secure way to prove the existence and integrity of documents or messages. It leverages blockchain technology to create an immutable record that can be verified by anyone, without the need for a central authority. + +The provided tools and API make it easy for users to notarize and retrieve information, while the technical documentation gives developers insights into the system's implementation. \ No newline at end of file diff --git a/docs/Use/Tools/notarize/notarize-data.md b/docs/Use/Tools/notarize/notarize-data.md index 8dfce99..366abca 100644 --- a/docs/Use/Tools/notarize/notarize-data.md +++ b/docs/Use/Tools/notarize/notarize-data.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: notarization-data title: QRL - Notarize Data hide_title: false diff --git a/docs/Use/Tools/notarize/verify-data.md b/docs/Use/Tools/notarize/verify-data.md index 1594d7e..bd731f9 100644 --- a/docs/Use/Tools/notarize/verify-data.md +++ b/docs/Use/Tools/notarize/verify-data.md @@ -1,12 +1,12 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: notarization-verification title: QRL - Notarization Verification hide_title: false hide_table_of_contents: false -sidebar_label: Notarization Verification +sidebar_label: Verification sidebar_position: 1 -pagination_label: Notarization Verification +pagination_label: Verification custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/Use/notarize/verify-data.md description: QRL Notarisation verification guide keywords: @@ -17,7 +17,6 @@ image: /assets/img/icons/yellow.png slug: /use/tools/notarize/noatrization-verification --- - Verifying a document that has been notarized on the QRL blockchain is simple and can be done using a web browser. :::info diff --git a/docs/Use/Tools/tokens/_check-token-balance.md b/docs/Use/Tools/tokens/_check-token-balance.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/tokens/_token-use-case.md b/docs/Use/Tools/tokens/_token-use-case.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/tokens/_what-is-a-token.md b/docs/Use/Tools/tokens/_what-is-a-token.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Tools/tokens/create-token.md b/docs/Use/Tools/tokens/create-token.md index 5c8546a..38b5779 100644 --- a/docs/Use/Tools/tokens/create-token.md +++ b/docs/Use/Tools/tokens/create-token.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: create-token title: QRL Token - Create hide_title: false @@ -19,14 +19,15 @@ slug: /use/tools/tokens/create The QRL supports QRT or Quantum Resistant Ledger Tokens. These tokens share the same cryptography and Quantum Resistance as the main QRL blockchain. -You can create tokens either by using the `qrl` command line, API, or through a GUI by browsing to the qrl web wallet application hosted at [wallet.theqrl.org](https://wallet.theqrl.org). Open your wallet, or create a new one to begin with this guide. +You can create tokens either by using the `qrl` command line, API, or through a GUI by browsing to the qrl web wallet application hosted at [https://wallet.theqrl.org](https://wallet.theqrl.org). -Creating a new token is easy. Once you have all of the details entered and the fee paid, the network takes care of the rest. +Open your wallet, or create a new one to begin with this guide. ### Token Creation -To create a token you will need to provide the following information: +Creating a new token is easy. Once you have all of the details entered and the fee paid, the network takes care of the rest. +To create a token you will need to provide the following information: | Field | Details | | :--: | :--- | @@ -46,14 +47,12 @@ This will broadcast the creation of your token across the QRL network and send t You will see a confirmation page that shows the details of the transaction. Verify the information is correct and press "Confirm Token Creation" - The confirmation screen will print the details of the transaction. ### Checking Token Balance You can check the balance of any tokens you have in your wallet by selecting the tokens tab in the top bar of the "Send and Receive" tab in the web wallet. - You can also see the recent transactions on the right of the balance screen. -You can receive tokens at your main QRL address, no need for anything special to receive. +You can receive tokens at your main QRL address, no need for anything special to receive. \ No newline at end of file diff --git a/docs/Use/Tools/tokens/qrl-tokens.md b/docs/Use/Tools/tokens/qrl-tokens.md index c7978ef..ff4ef17 100644 --- a/docs/Use/Tools/tokens/qrl-tokens.md +++ b/docs/Use/Tools/tokens/qrl-tokens.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: qrl-tokens-overview title: QRL Token Overview hide_title: false @@ -17,7 +17,7 @@ image: /assets/img/icons/yellow.png slug: /use/tools/tokens/overveiw --- -QRL supports the generation of colored tokens, allowing a multitude of functionality in addition to the typical blockchain functions. +QRL supports the generation of *colored* tokens, allowing a multitude of functionality in addition to the typical blockchain functions. These tokens are generated and sent in separate transaction types *([`RelayTokenTxn`](/api/wallet-api#relaytokentxn) and [`RelayTransferTokenTxn`](/api/wallet-api#relaytransfertokentxn))* allowing additional versatility as they are not tied to any QRL funds and can be transferred interdependently from an QRL coins. @@ -63,14 +63,6 @@ This section covers the GUI interface through the web wallet tools section. For automated token functionality, including using slave OTS keys to generate and send see the [API Documentation](/api/wallet-api) as well as the [QRL Command Line Documentation](/use/node/node-cli/overview) ::: - - - - - - - - ## Send Tokens Tokens can be transferred between addresses on the QRL blockchain. These tokens can be split into derivatives and fractionally split as well depending on the initial criteria set during the token creation. diff --git a/docs/Use/Tools/tokens/send-token.md b/docs/Use/Tools/tokens/send-token.md index 2f4bf31..b7a2d07 100644 --- a/docs/Use/Tools/tokens/send-token.md +++ b/docs/Use/Tools/tokens/send-token.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: send-token title: QRL Token - Send hide_title: false diff --git a/docs/Use/Wallet/Ledger/_initial-ledger-setup.md b/docs/Use/Wallet/Ledger/_initial-ledger-setup.md deleted file mode 100644 index 1851d5d..0000000 --- a/docs/Use/Wallet/Ledger/_initial-ledger-setup.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -docstatus: DRAFT # one of {DRAFT, 30%, 90%, COMPLETE} -id: initial-ledger-setup -title: Initial Ledger Setup -hide_title: false -hide_table_of_contents: false -sidebar_label: Initial Ledger Setup -sidebar_position: 2 -pagination_label: Initial Ledger Setup -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: The QRL Ledger Nano Wallet documentation -keywords: - - docs - - wallet - - ledger -image: /assets/img/icons/yellow.png -slug: /wallet/ledger/initial-ledger-setup ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Use/Wallet/Ledger/_recover-ledger.md b/docs/Use/Wallet/Ledger/_recover-ledger.md deleted file mode 100644 index 48c94c9..0000000 --- a/docs/Use/Wallet/Ledger/_recover-ledger.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -docstatus: DRAFT # one of {DRAFT, 30%, 90%, COMPLETE} -id: ledger-wallet-recover -title: QRL Ledger Wallet - Recover -hide_title: false -hide_table_of_contents: false -sidebar_label: Recover -sidebar_position: 6 -pagination_label: Ledger Wallet - Recover -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: Recover a QRL address on a Ledger device. -keywords: - - docs - - wallet - - ledger - - recover -image: /assets/img/icons/yellow.png -slug: /use/wallet/ledger/recover ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Use/Wallet/Offline/_backup-offline-wallet.md b/docs/Use/Wallet/Offline/_backup-offline-wallet.md deleted file mode 100644 index 6693db7..0000000 --- a/docs/Use/Wallet/Offline/_backup-offline-wallet.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -docstatus: DRAFT # one of {DRAFT, 30%, 90%, COMPLETE} -id: offline-wallet-backup -title: QRL Offline Wallet - Backup -hide_title: false -hide_table_of_contents: false -sidebar_label: Backup -sidebar_position: 4 -pagination_label: Offline Wallet - Backup -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: QRL Offline Wallet -keywords: - - docs - - Offline Wallet -image: /assets/img/icons/yellow.png -slug: /use/wallet/offline/backup ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Use/Wallet/Offline/_cold-wallet.md b/docs/Use/Wallet/Offline/_cold-wallet.md deleted file mode 100644 index cdcfd38..0000000 --- a/docs/Use/Wallet/Offline/_cold-wallet.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -docstatus: DRAFT # one of {DRAFT, 30%, 90%, COMPLETE} -id: cold-wallet -title: Cold Wallet Setup -hide_title: false -hide_table_of_contents: false -sidebar_label: QRL Cold Wallet -sidebar_position: 1 -pagination_label: QRL Cold Wallet -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: QRL Cold Wallet -keywords: - - docs - - wallet - - Cold Wallet -image: /assets/img/icons/yellow.png -slug: /wallet/offline/cold-wallet ---- - - - -**IMPORTANT** - -*This document is not complete yet!* - -We are waiting for work to complete on web wallet and final code base to be released to finish this document. It \*should work as is. - -This guide will create a wallet routed through the **TOR** network which should add a level of security when generating on the web wallet. It will also remove the worry of having a virus or key-logger installed on your local computer. This guide will give you a brand new OS to run the wallet in. - -In order to fully secure your QRL, follow best practices and generate your private keys off-line. This will prevent anyone from viewing your private keys while you record and safely save the wallet. - -In order to fully secure your QRL, follow best practices and generate your private keys off-line. This will prevent anyone from viewing your private keys while you record and safely save the wallet. - -It is a bit more work to set this all up, but in the long run it is worth it. Once "Tails" is set up, you can generate cold wallets for all of your other coins that you want to hold in secure cold wallets. - -## Tails - -This guide will use the **Tails** operating system to create a safe environment to generate a new secure wallet. You will install Tails on a [Live USB drive](https://en.wikipedia.org/wiki/Live_USB) and boot from this USB to create your new QRL wallet. - -You will also use the "anonymity" features that come packaged to grab the wallet files and check their validity. Using "anonymous" tools makes it much more difficult for someone to find what you are doing or play Man-In-The-Middle and collect the private keys. - - -![Tails Logo](/assets/wallet/cold/tailsLogo-strech.png) - - -Tails is a live operating system that you can start on almost any computer from a USB stick or a DVD. It is free software based on Debian GNU/Linux. Tails aims at preserving your privacy and anonymity, and helps you to use the internet anonymously and circumvent censorship. - -All connections to the internet use the [Tor network](https://www.torproject.org/). - -#### Requirements for this guide - -Use the Tails website. - -![Tails Logo](/assets/wallet/cold/tailsCombined.png) - -Once you have the basic requirements together, follow the instructions on the Tails website. If you need help you can refer to the Tails Documentation on their main site. - -Once you have the basic requirements together, follow the instructions on the Tails website. If you need help you can refer to the [Tails Documentation](https://tails.boum.org/doc/index.en.html) on the main site. - -#### Basic Install Overview - -1. Download and install the Tails installer onto a USB drive -2. Boot into this install USB and install Tails onto USB drive 2 -3. Reboot into USB 2 with new Tails OS -4. Generate QRL wallet -5. Save your Public and Private keys offline and destroy the wallet -6. Feel good! Go plant a tree or volunteer, knowing that your Quanta is safe. - -### Get Tails - -You will need two USB drives - one to burn the installer to, and another for the OS to run from. Everything will be wiped from the USB drives, so make sure you backup. A 16G USB drive works for Tails, but anything above 8G will do. A bigger drive gives you more space for the persistent volume that we will create. - - -Go to the [Tails Homepage](https://tails.boum.org/install/index.en.html) to get started. They have made he install as painless as possible. Follow the guide there and install from the OS you are using. - - -#### To Get started directly use a link from below based on your operating system - -* [Install from Windows](https://tails.boum.org/install/win/usb-overview/index.en.html) -* [Install from MacOS](https://tails.boum.org/install/mac/index.en.html) -* [Install from Linux (Debian based)](https://tails.boum.org/install/debian/index.en.html) -* [Other Linux (Red Hat, Fedora, ETC.)](https://tails.boum.org/install/linux/index.en.html) - -Set up an encrypted persistent volume on the USB to hold the wallet file generators and any other documents you want to keep safe. Best practice dictates that you write the hexseed and mnemonic on a nice sheet of paper and place it somewhere safe from fire, water, or other acts of nature. You can store a copy on the encrypted drive, but it is not as safe. - -Once you have booted into Tails you can create a persistent volume. A persistent volume is an encrypted partition protected by a passphrase on the USB. Once the persistent volume is created, you can choose to activate it or not each time you start Tails. Once you have setup the USB with their guide you will boot into the secure OS and setup the persistent drive. - -### Boot Into Tails - -You need to have access to the computer's BIOS system. This can be accomplished by hitting one of the f1 - f12 keys at initial boot. Search for your computer model, laptop or motherboard for instructions on how to access your BIOS. - - -Once you have the bios pulled up, look for the boot options and allow the PC to boot from a USB drive. You may need to toggle the security features. You can change back any settings that may have broken other OS’s. Windows can be picky about letting another OS boot. - -Boot into the USB and you will be greeted with a Tails screen with two selections. Choose the default settings and boot. - -At the next screen you will see a list of options. Use the default settings for now and continue. **Welcome to Tails!** - -### Persistent Data - -Now start the persistent volume assistant at "Applications/Tails/Configure persistent volume" You need to select at minimum: - -* Personal Data - -Other recommended selections are: -* GnuPG -* GNOME Keyring -* Network Connections -* Bitcoin Client -* Printers - -Don't load email or chat clients or install any other software than what you need. The great people at Tails are doing their best to keep your digital life safe, no need to make it harder. - - -Follow along and add the remaining drive space to the encrypted volume. You must remember the password you setup here, and make it tough. This cannot be recovered. - - You will have to restart for the persistent changes to take effect. - -Once created you will select this persistent option and enter your password any time you want to access this data. Feel good about encrypting your files! - -### Create a QRL Wallet - -Connect to a network and allow Tails to run through connecting over Tor to the Onion network. Once this is done, you may browse the internet. - -Open the browser and go to [https://wallet.theqrl.org](https://wallet.theqrl.org) to create a new wallet. - -When prompted to save a wallet file, choose the "Save a Secure Copy" option and download it into the persistent drive you created earlier. - - -It's recommended to write down the mnemonic and hexseed on a piece of paper to later recover the wallet. Store this in a safe place. - - -{::comment} - -Once there is a clean way to install from offline files continue this - -### Get the Wallet Files - -There are a few ways you can do this. If your ultra paranoid you can leave the persistent drive locked when you boot, connect to github through the TOR network and download to an external USB. Then reboot and unlock the persistent drive and copy the files over. - -If not simply grab the offline generators from github or the official source and verify the hash matches what you downloaded. Then simply copy this over to the unlocked persistent drive and generate the wallet offline. - -Never boot with a decrypted drive and connect to the internet. One or the other. If you leave it locked there is little to no chance for someone to install nasty things there. - -Links to QRL wallet files: - -* [Github Wallet File](https://github.com/theQRL/qrl-wallet) -* [My-Ether-Wallet](https://github.com/kvhnuke/etherwallet/releases/tag/v3.11.3.2) - - -### Create the Wallet offline - -Making sure the computer is not connected to the internet, open the file with your offline wallet generator in it. You will need to place them in the tor browser allowed folder in order for the browser to run the files. - -Generate an address like you would normally and write the details down in a notebook. This will never be seen by another computer until you are ready to move your coins. Make sure you get everything right here, CasE mattErs! - -You can look up the public address to check the balance and see if transfers are going into the wallet at [QRL Block Explorer](https://explorer.theqrl.org/). - - -{:/comment} \ No newline at end of file diff --git a/docs/Use/Wallet/Offline/_deposit-to-offline-wallet.md b/docs/Use/Wallet/Offline/_deposit-to-offline-wallet.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/Use/Wallet/Offline/_open-offline.md b/docs/Use/Wallet/Offline/_open-offline.md deleted file mode 100644 index 6c56e2e..0000000 --- a/docs/Use/Wallet/Offline/_open-offline.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -docstatus: DRAFT # one of {DRAFT, 30%, 90%, COMPLETE} -id: offline-wallet-open -title: QRL Offline Wallet - Open -hide_title: false -hide_table_of_contents: false -sidebar_label: Open -sidebar_position: 5 -pagination_label: Offline Wallet - Open -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: QRL Offline Wallet -keywords: - - docs - - Offline Wallet -image: /assets/img/icons/yellow.png -slug: /use/wallet/offline/open ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Use/Wallet/Offline/_send-offline-wallet-funds.md b/docs/Use/Wallet/Offline/_send-offline-wallet-funds.md deleted file mode 100644 index 43ad843..0000000 --- a/docs/Use/Wallet/Offline/_send-offline-wallet-funds.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -docstatus: DRAFT # one of {DRAFT, 30%, 90%, COMPLETE} -id: offline-wallet-send -title: QRL Offline Wallet - Send -hide_title: false -hide_table_of_contents: false -sidebar_label: Send -sidebar_position: 6 -pagination_label: Offline Wallet - Send -custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/ -description: QRL Offline Wallet -keywords: - - docs - - Offline Wallet -image: /assets/img/icons/yellow.png -slug: /use/wallet/offline/send ---- - -:::caution DOCUMENT STATUS -This document is in: {frontMatter.docstatus} status and needs additional input! -::: \ No newline at end of file diff --git a/docs/Use/Wallet/Web/web-wallet.md b/docs/Use/Wallet/Web/web-wallet.md index 5ea8ef0..eddec8f 100644 --- a/docs/Use/Wallet/Web/web-wallet.md +++ b/docs/Use/Wallet/Web/web-wallet.md @@ -33,13 +33,13 @@ Private keys stay in the memory space of the XMSS object, which is destroyed the Being Quantum Resistant comes with some inherent challenges. Before creating your new wallet, there are a few quirks worth noting about QRL. * The QRL uses hash based cryptography, and due to this requires a new signature for each transaction. -* One Time Signature Keys (*OTS Keys*) must never be used more than 1 time. -* Once all OTS Keys are consumed the address will no longer be able to send outbound transactions +* One Time Signature Key indexes (*OTS Keys*) must never be used more than 1 time. +* Once all OTS Key indexes are consumed the address will no longer be able to send outbound transactions ### Best Wallet Practices -* Track all OTS Keys used in a spreadsheet *(ledger)* or paper file +* Track all OTS Key indexes used in a spreadsheet *(ledger)* or paper file * Backup the wallet onto paper or other physical media * Store your private keys somewhere safe offline @@ -50,7 +50,7 @@ When you create a new wallet you create an XMSS tree, which is comprised of many **The OTS key index is limited.** -You can only use each key **ONCE**. When you've used your last key, you will no longer be able to sign transactions. This can not be stressed enough! +You can only use each key index **ONCE**. When you've used your last key index, you will no longer be able to sign transactions. This can not be stressed enough! :::caution If you use all of your OTS Key Indexes with funds in the wallet, these funds will be **lost FOREVER**! @@ -128,9 +128,9 @@ If you need to find the remaining OTS keys for an address, you can see them in t #### OTS Bitfield -Once you have passed the OTS Bitfield of 4096 OTS keys you will need to use the keys in order, sequentially. If you skip a number you will not be able to go back and use it past the Bitfield. +The wallet applications will track the OTS key indexes in a given address using a bitfield. | Keys | Info | |:----:|:----:| |0 --> 4095 | Bitfield tracks the use. May be used in any order | -| 4096 --> Last OTS | Must be used in ascending order, advances OTS from largest key used | \ No newline at end of file +| 4095 --> Last OTS Key Index | Advances OTS key index from largest index used | \ No newline at end of file diff --git a/docs/Use/Wallet/overview.md b/docs/Use/Wallet/overview.md index d719bb6..57d3b71 100644 --- a/docs/Use/Wallet/overview.md +++ b/docs/Use/Wallet/overview.md @@ -24,10 +24,10 @@ The Quantum Resistant Ledger's wallet functions similar to other cryptocurrencie The QRL uses [eXtended Merkle Signature Scheme *(XMSS)*](https://eprint.iacr.org/2011/484), a hash based cryptography that's been around since the 70's and recently [approved for use in cryptographic systems by NIST](https://csrc.nist.gov/publications/detail/sp/800-208/final). -XMSS is considered to be one of the most secure quantum resistant algorithms in use today. There is one drawback to hash based cryptography however, a signature key may only be used one time. +XMSS is considered to be one of the most secure quantum resistant algorithms in use today. There is one drawback to hash based cryptography however, a signature key index may only be used one time. -:::info **OTS** *(One Time Signature Keys)* -OTS keys can only be used to sign one transaction. There are limited keys for an address depending on tree height selected during address creation. +:::info **OTS** *(One Time Signature)* Key Index +OTS key indexes can only be used to sign one transaction. There are limited keys for an address depending on tree height selected during address creation. See the [OTS Documentation](/build/fundamentals/ots-keys) for more information. ::: @@ -40,12 +40,12 @@ There are a few optional configuration properties that may be useful. The defaul This option allows you to create a wallet with varying tree size. In other words this controls the amount of signatures your wallet can use for transactions safely on the blockchain. -By default an XMSS Tree height of 10 provides 1024 One Time Signatures. You may chose to create a wallet with more or less OTS keys used to sign transactions on the QRL network. +By default an XMSS Tree height of 10 provides 1024 One Time Signatures, or OTS key indexes. You may chose to create a wallet with more or less OTS keys used to sign transactions on the QRL network. -The only disadvantage for creating a larger tree height is the time required to generate the additional keys. -This can be configured only when a wallet is created. +One of the main disadvantages to creating a larger tree height (*amount of OTS Key Indexes*) is the time required to generate the additional keys. Each time you access the wallet the keys must be calculated and thus adding time to opening a larger address. +These parameters can only be configured when a wallet is created. *The height of the tree is fundamental to the OTS key index creation and adds to the uniqueness of a private key.* | Tree Height | Available Keys | Notes | |:---------: | :----------: | :--- | @@ -416,11 +416,11 @@ There is an additional address space that can be unlocked to extend the amount o ## QRL Wallet Security -All QRL wallets are made up of a cryptographic key pair, or *public* and *private* keys, from which the Merkle tree of One Time Signature keys are generated. These OTS keys are then used to sign user transactions, never exposing the root secret "private" key. +All QRL wallets are made up of a cryptographic key pair, or *public* and *private* keys, from which the Merkle tree of One Time Signature key indexes are generated. These OTS key indexes are then used individually to sign outgoing user transactions, never exposing the root secret "private" key. :::caution -Correctly recording and securing recovery keys is the most important thing a user needs to do before interacting with the QRL network. +Correctly recording and securing private recovery keys (*mnemonic or hexphrase*) and then verifying the recovery keys work, is the most important thing a user needs to do before interacting with the QRL network. This ensures that funds are not sent to an address out of your control. ::: ### Public Keys diff --git a/docs/getting-started.md b/docs/getting-started.md index 109ac33..14a88f3 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,5 +1,5 @@ --- -docstatus: 30% # one of {DRAFT, 30%, 90%, COMPLETE} +docstatus: 90% # one of {DRAFT, 30%, 90%, COMPLETE} id: getting-started title: The QRL Documentation hide_title: false @@ -7,7 +7,7 @@ hide_table_of_contents: true sidebar_label: Getting Started sidebar_position: 1 pagination_label: Getting Started -custom_edit_url: https://github.com/fr1t2/documentation/edit/main/docs/getting-started.md +custom_edit_url: https://github.com/theqrl/documentation/edit/main/docs/getting-started.md description: Getting started with the QRL Blockchain and ecosystem keywords: - docs @@ -35,7 +35,8 @@ The docs are broken into 3 main categories, [Use](/use), [Build](/build) , and [ { label: 'Use', value: 'use', }, { label: 'Build', value: 'developer', }, { label: 'API', value: 'api', }, - { label: 'Tutorials', value: 'tutorials', }, + + ]}>

Using QRL

@@ -204,34 +205,7 @@ The docs are broken into 3 main categories, [Use](/use), [Build](/build) , and [
- -

Tutorials

-

Tutorial guides to get started using The QRL. Walking through basic tasks like setting up a node, requesting blockchain data etc.

- -
- - -
-
-
+ --- diff --git a/docusaurus.config.js b/docusaurus.config.js index ca665be..cdabd4c 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -54,8 +54,8 @@ const config = { theme: { -// customCss: require.resolve('./src/css/custom.css'), - customCss: [require.resolve('./static/assets/css/overrides.css'), require.resolve('./src/css/custom.css')] + customCss: require.resolve('./src/css/custom.css'), +// customCss: [require.resolve('./static/assets/css/overrides.css'), require.resolve('./src/css/custom.css')] }, }), ], @@ -139,10 +139,6 @@ const config = { label: 'OTS Keys', href: '/build/fundamentals/ots-keys' }, - { - label: 'On-Chain Voting', - href: '/learn/on-chain-voting' - }, // ... more learn items ], @@ -204,7 +200,7 @@ const config = { }, { label: 'QRL Helpers', - href: '/developers/helpers' + href: '/build/helpers' }, ], }, diff --git a/sidebars.js b/sidebars.js index cc308ca..a8b86da 100644 --- a/sidebars.js +++ b/sidebars.js @@ -53,7 +53,6 @@ const sidebars = { 'Learn/whitepaper', 'Learn/qrl-emission', 'Learn/ots-keys', - 'Learn/on-chain-voting', // Learn Blockchain /*{ type: 'category', @@ -317,7 +316,7 @@ const sidebars = { link: { type: 'generated-index', title: 'QRL Tools', - description: 'Covering QRL Tools and integrations.', + description: 'Covering QRL Tools.', slug: '/use/tools', keywords: ['use-tool'], image: '/assets/img/icons/yellow.png', @@ -431,6 +430,7 @@ const sidebars = { collapsed: true, // Set the category to be initially collapsed or open by default }, // Tools Integrations + /* { type: 'category', label: 'Integrations', @@ -447,7 +447,7 @@ const sidebars = { ], collapsible: true, // Set the category to be collapsible collapsed: true, // Set the category to be initially collapsed or open by default - }, + }, */ ], collapsible: true, // Set the category to be collapsible collapsed: true, // Set the category to be initially collapsed or open by default @@ -483,14 +483,13 @@ const sidebars = { 'Build/Mining/qrandomx', 'Build/QIP/qip-overview', 'Build/QRL-CLI/qrl-cli', - 'Build/Vote-QRL/vote-qrl', { // Fundamentals// type: 'category', label: 'QRL Fundamentals', link: { type: 'generated-index', title: 'QRL Fundamental Topics', - description: 'Covering general topics related to the QRL', + description: 'Covering some fundamental topics related to the QRL', slug: '/build/fundamentals', keywords: ['learn'], image: '/assets/img/icons/yellow.png', @@ -499,7 +498,6 @@ const sidebars = { 'Build/Fundamentals/ots-keys', 'Build/Fundamentals/whitepaper', 'Build/Fundamentals/qrl-emission', - 'Build/Fundamentals/on-chain-voting', ], collapsible: true, // Set the category to be collapsible collapsed: true, // Set the category to be initially collapsed or open by default @@ -510,7 +508,7 @@ const sidebars = { link: { type: 'generated-index', title: 'QRL Message Encoding Documentation', - description: 'Message encoding standard for the QRL Message Transactions', + description: 'Message encoding standard for the various QRL Message Transaction types', slug: '/build/messages', keywords: ['learn'], image: '/assets/img/icons/yellow.png', @@ -569,8 +567,8 @@ const sidebars = { link: { type: 'generated-index', title: 'QRL Code Libraries and helpers', - description: 'Main QRL node CLI tools and usage.', - slug: '/developers/helpers', + description: 'Various helper scripts developed to aid and assist in developing on the QRL.', + slug: '/build/helpers', keywords: ['qrl-helpers', 'node-helpers'], image: '/assets/img/icons/yellow.png', }, @@ -620,7 +618,7 @@ const sidebars = { link: { type: 'generated-index', title: 'API Docs', - description: 'Advanced documentation for developers and adventurers building on the QRL.', + description: 'API documentation for developers building on the QRL.', slug: '/api', keywords: ['api', 'developers', 'rest', 'grpc'], image: '/assets/img/icons/yellow.png', diff --git a/site-layout.md b/site-layout.md index b0c1419..ec62dbf 100644 --- a/site-layout.md +++ b/site-layout.md @@ -102,7 +102,6 @@ getting-started ↳ qrandomx ↳ qip ↳ qrl-cli - ↳ vote-qrl ↳ helpers/ ↳ node-helpers ↳ validate-address diff --git a/src/css/custom.css b/src/css/custom.css index 212cb8d..f757e90 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -5,6 +5,8 @@ */ /* You can override the default Infima variables here. */ + +/* :root { --ifm-color-primary: #ffa729; --ifm-color-primary-dark: #ff9b0b; @@ -24,6 +26,34 @@ --ifm-color-primary-lightest: #addbff; } +*/ + +:root { + --ifm-color-primary: #4aafff; + --ifm-color-primary-dark: #29a0ff; + --ifm-color-primary-darker: #1999ff; + --ifm-color-primary-darkest: #0081e6; + --ifm-color-primary-light: #6bbeff; + --ifm-color-primary-lighter: #7bc5ff; + --ifm-color-primary-lightest: #addbff; + --ifm-color-primary: #4aafff; + --ifm-color-secondary: #ffa729; + --ifm-color-success: #00a400; + --ifm-color-info: #54c7ec; + --ifm-color-warning: #ffba00; + --ifm-color-danger: #fa383e; +} +[data-theme='dark'] { + --ifm-color-primary: #ffa729; + --ifm-color-primary-dark: #ff9b0b; + --ifm-color-primary-darker: #fc9400; + --ifm-color-primary-darkest: #cf7a00; + --ifm-color-primary-light: #ffb347; + --ifm-color-primary-lighter: #ffb955; + --ifm-color-primary-lightest: #ffcc82; +} + + .grid-container { display: grid; gap: 10px; @@ -65,4 +95,6 @@ html[data-theme='dark'] .docusaurus-highlight-code-line { [data-theme='dark'] li code { border: 1px solid var(--ifm-color-emphasis-100); background-color: #282A36; - } \ No newline at end of file + } + + diff --git a/static/assets/css/overrides.css b/static/assets/css/overrides.css index 52fdf28..68fd3bd 100644 --- a/static/assets/css/overrides.css +++ b/static/assets/css/overrides.css @@ -1,399 +1,4744 @@ -/* blog-inner.scss:107 */ -.blogPageInner .blog-article ul p { - margin: 0 0 10px 0px; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* Common */ + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +:root { + --ifm-color-scheme: light; + + /* Colors. */ + --ifm-dark-value: 10%; + --ifm-darker-value: 15%; + --ifm-darkest-value: 30%; + --ifm-light-value: 15%; + --ifm-lighter-value: 30%; + --ifm-lightest-value: 50%; + + /* + This seems like a lot, but we want to ensure enough contrast. + Goal is to have a min score of 3 on https://www.myndex.com/APCA/fullmatrix + For fontWeight 400 + score 3, the cell must show a value < 16px (fontsize we use in places like alerts) + See also https://github.com/facebookincubator/infima/issues/55#issuecomment-884023075 + */ + --ifm-contrast-background-value: 90%; + --ifm-contrast-foreground-value: 70%; + /* Using slightly different values for dark mode */ + --ifm-contrast-background-dark-value: 70%; + --ifm-contrast-foreground-dark-value: 90%; + + --ifm-color-primary: #4aafff; + --ifm-color-secondary: #ffa729; + --ifm-color-success: #00a400; + --ifm-color-info: #54c7ec; + --ifm-color-warning: #ffba00; + --ifm-color-danger: #fa383e; + --ifm-color-primary-dark: rgb(48, 108, 206); + --ifm-color-primary-darker: rgb(45, 102, 195); + --ifm-color-primary-darkest: rgb(37, 84, 160); + --ifm-color-primary-light: rgb(83, 140, 233); + --ifm-color-primary-lighter: rgb(114, 161, 237); + --ifm-color-primary-lightest: rgb(154, 188, 242); + --ifm-color-primary-contrast-background: rgb(235, 242, 252); + --ifm-color-primary-contrast-foreground: rgb(16, 36, 69); + --ifm-color-secondary-dark: rgb(212, 213, 216); + --ifm-color-secondary-darker: rgb(200, 201, 204); + --ifm-color-secondary-darkest: rgb(164, 166, 168); + --ifm-color-secondary-light: rgb(238, 240, 242); + --ifm-color-secondary-lighter: rgb(241, 242, 245); + --ifm-color-secondary-lightest: rgb(245, 246, 248); + --ifm-color-secondary-contrast-background: rgb(253, 253, 254); + --ifm-color-secondary-contrast-foreground: rgb(71, 71, 72); + --ifm-color-success-dark: rgb(0, 148, 0); + --ifm-color-success-darker: rgb(0, 139, 0); + --ifm-color-success-darkest: rgb(0, 115, 0); + --ifm-color-success-light: rgb(38, 178, 38); + --ifm-color-success-lighter: rgb(77, 191, 77); + --ifm-color-success-lightest: rgb(128, 210, 128); + --ifm-color-success-contrast-background: rgb(230, 246, 230); + --ifm-color-success-contrast-foreground: rgb(0, 49, 0); + --ifm-color-info-dark: rgb(76, 179, 212); + --ifm-color-info-darker: rgb(71, 169, 201); + --ifm-color-info-darkest: rgb(59, 139, 165); + --ifm-color-info-light: rgb(110, 207, 239); + --ifm-color-info-lighter: rgb(135, 216, 242); + --ifm-color-info-lightest: rgb(170, 227, 246); + --ifm-color-info-contrast-background: rgb(238, 249, 253); + --ifm-color-info-contrast-foreground: rgb(25, 60, 71); + --ifm-color-warning-dark: rgb(230, 167, 0); + --ifm-color-warning-darker: rgb(217, 158, 0); + --ifm-color-warning-darkest: rgb(179, 130, 0); + --ifm-color-warning-light: rgb(255, 196, 38); + --ifm-color-warning-lighter: rgb(255, 207, 77); + --ifm-color-warning-lightest: rgb(255, 221, 128); + --ifm-color-warning-contrast-background: rgb(255, 248, 230); + --ifm-color-warning-contrast-foreground: rgb(77, 56, 0); + --ifm-color-danger-dark: rgb(225, 50, 56); + --ifm-color-danger-darker: rgb(213, 48, 53); + --ifm-color-danger-darkest: rgb(175, 39, 43); + --ifm-color-danger-light: rgb(251, 86, 91); + --ifm-color-danger-lighter: rgb(251, 116, 120); + --ifm-color-danger-lightest: rgb(253, 156, 159); + --ifm-color-danger-contrast-background: rgb(255, 235, 236); + --ifm-color-danger-contrast-foreground: rgb(75, 17, 19); + + --ifm-color-white: #fff; + --ifm-color-black: #000; + + --ifm-color-gray-0: var(--ifm-color-white); + --ifm-color-gray-100: #f5f6f7; + --ifm-color-gray-200: #ebedf0; + --ifm-color-gray-300: #dadde1; + --ifm-color-gray-400: #ccd0d5; + --ifm-color-gray-500: #bec3c9; + --ifm-color-gray-600: #8d949e; + --ifm-color-gray-700: #606770; + --ifm-color-gray-800: #444950; + --ifm-color-gray-900: #1c1e21; + --ifm-color-gray-1000: var(--ifm-color-black); + + --ifm-color-emphasis-0: var(--ifm-color-gray-0); + --ifm-color-emphasis-100: var(--ifm-color-gray-100); + --ifm-color-emphasis-200: var(--ifm-color-gray-200); + --ifm-color-emphasis-300: var(--ifm-color-gray-300); + --ifm-color-emphasis-400: var(--ifm-color-gray-400); + --ifm-color-emphasis-500: var(--ifm-color-gray-500); + --ifm-color-emphasis-600: var(--ifm-color-gray-600); + --ifm-color-emphasis-700: var(--ifm-color-gray-700); + --ifm-color-emphasis-800: var(--ifm-color-gray-800); + --ifm-color-emphasis-900: var(--ifm-color-gray-900); + --ifm-color-emphasis-1000: var(--ifm-color-gray-1000); + + /* Base. */ + --ifm-color-content: var(--ifm-color-emphasis-900); + --ifm-color-content-inverse: var(--ifm-color-emphasis-0); + --ifm-color-content-secondary: #525860; + + --ifm-background-color: transparent; /* Body's background. */ + --ifm-background-surface-color: var(--ifm-color-content-inverse); + --ifm-global-border-width: 1px; + --ifm-global-radius: 0.4rem; + + --ifm-hover-overlay: rgba(0, 0, 0, 0.05); + + /* Typography. */ + --ifm-font-color-base: var(--ifm-color-content); + --ifm-font-color-base-inverse: var(--ifm-color-content-inverse); + --ifm-font-color-secondary: var(--ifm-color-content-secondary); + --ifm-font-family-base: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, + 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', + 'Segoe UI Emoji', 'Segoe UI Symbol'; + --ifm-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, + 'Liberation Mono', 'Courier New', monospace; + --ifm-font-size-base: 100%; + + --ifm-font-weight-light: 300; + --ifm-font-weight-normal: 400; + --ifm-font-weight-semibold: 500; + --ifm-font-weight-bold: 700; + + --ifm-font-weight-base: var(--ifm-font-weight-normal); + --ifm-line-height-base: 1.65; + + /* Spacing. */ + --ifm-global-spacing: 1rem; + --ifm-spacing-vertical: var(--ifm-global-spacing); + --ifm-spacing-horizontal: var(--ifm-global-spacing); + + /* Transitions. */ + --ifm-transition-fast: 200ms; + --ifm-transition-slow: 400ms; + --ifm-transition-timing-default: cubic-bezier(0.08, 0.52, 0.52, 1); + + /* Shadows. */ + --ifm-global-shadow-lw: 0 1px 2px 0 rgba(0, 0, 0, 0.1); + --ifm-global-shadow-md: 0 5px 40px rgba(0, 0, 0, 0.2); + --ifm-global-shadow-tl: 0 12px 28px 0 rgba(0, 0, 0, 0.2), + 0 2px 4px 0 rgba(0, 0, 0, 0.1); + + /* Z-index. */ + --ifm-z-index-dropdown: 100; + --ifm-z-index-fixed: 200; + --ifm-z-index-overlay: 400; + --ifm-container-width: 1140px; + --ifm-container-width-xl: 1320px; + --ifm-code-background: rgb(246, 247, 248); + --ifm-code-border-radius: var(--ifm-global-radius); + --ifm-code-font-size: 90%; + --ifm-code-padding-horizontal: 0.1rem; + --ifm-code-padding-vertical: 0.1rem; + + --ifm-pre-background: var(--ifm-code-background); + --ifm-pre-border-radius: var(--ifm-code-border-radius); + --ifm-pre-color: inherit; + --ifm-pre-line-height: 1.45; + --ifm-pre-padding: 1rem; + --ifm-heading-color: inherit; + --ifm-heading-margin-top: 0; + --ifm-heading-margin-bottom: var(--ifm-spacing-vertical); + --ifm-heading-font-family: var(--ifm-font-family-base); + --ifm-heading-font-weight: var(--ifm-font-weight-bold); + --ifm-heading-line-height: 1.25; + + --ifm-h1-font-size: 2rem; + --ifm-h2-font-size: 1.5rem; + --ifm-h3-font-size: 1.25rem; + --ifm-h4-font-size: 1rem; + --ifm-h5-font-size: 0.875rem; + --ifm-h6-font-size: 0.85rem; + --ifm-image-alignment-padding: 1.25rem; + /* Leading is the distance between two baselines */ + /* TODO: add appropriate mobile leading */ + --ifm-leading-desktop: 1.25; + --ifm-leading: calc(var(--ifm-leading-desktop) * 1rem); + --ifm-list-left-padding: 2rem; + --ifm-list-margin: 1rem; + --ifm-list-item-margin: 0.25rem; + --ifm-list-paragraph-margin: 1rem; + --ifm-table-cell-padding: 0.75rem; + + --ifm-table-background: transparent; + --ifm-table-stripe-background: rgba(0, 0, 0, 0.03); + + --ifm-table-border-width: 1px; + --ifm-table-border-color: var(--ifm-color-emphasis-300); + + --ifm-table-head-background: inherit; + --ifm-table-head-color: inherit; + --ifm-table-head-font-weight: var(--ifm-font-weight-bold); + + --ifm-table-cell-color: inherit; + /* Links. */ + --ifm-link-color: var(--ifm-color-primary); + --ifm-link-decoration: none; + --ifm-link-hover-color: var(--ifm-link-color); + --ifm-link-hover-decoration: underline; + + /* Paragraphs. */ + --ifm-paragraph-margin-bottom: var(--ifm-leading); + + /* Blockquotes. */ + --ifm-blockquote-font-size: var(--ifm-font-size-base); + --ifm-blockquote-border-left-width: 2px; + --ifm-blockquote-padding-horizontal: var(--ifm-spacing-horizontal); + --ifm-blockquote-padding-vertical: 0; + --ifm-blockquote-shadow: none; + --ifm-blockquote-color: var(--ifm-color-emphasis-800); + --ifm-blockquote-border-color: var(--ifm-color-emphasis-300); + + /* Horizontal Rules. */ + --ifm-hr-background-color: var(--ifm-color-emphasis-500); + --ifm-hr-height: 1px; + --ifm-hr-margin-vertical: 1.5rem; + --ifm-scrollbar-size: 7px; + --ifm-scrollbar-track-background-color: #f1f1f1; + --ifm-scrollbar-thumb-background-color: #c0c0c0; + --ifm-scrollbar-thumb-hover-background-color: #a7a7a7; + --ifm-alert-background-color: inherit; /* Set a default which will be overridden later. */ + --ifm-alert-border-color: inherit; /* Set a default which will be overridden later. */ + --ifm-alert-border-radius: var(--ifm-global-radius); + --ifm-alert-border-width: 0px; /* For users that want to easily add a border */ + --ifm-alert-border-left-width: 5px; + --ifm-alert-color: var(--ifm-font-color-base); + --ifm-alert-padding-horizontal: var(--ifm-spacing-horizontal); + --ifm-alert-padding-vertical: var(--ifm-spacing-vertical); + --ifm-alert-shadow: var(--ifm-global-shadow-lw); + --ifm-avatar-intro-margin: 1rem; + --ifm-avatar-intro-alignment: inherit; + --ifm-avatar-photo-size: 3rem; + --ifm-badge-background-color: inherit; /* Set a default which will be overridden later. */ + --ifm-badge-border-color: inherit; /* Set a default which will be overridden later. */ + --ifm-badge-border-radius: var(--ifm-global-radius); + --ifm-badge-border-width: var(--ifm-global-border-width); + --ifm-badge-color: var(--ifm-color-white); + --ifm-badge-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 0.5); + --ifm-badge-padding-vertical: calc(var(--ifm-spacing-vertical) * 0.25); + --ifm-breadcrumb-border-radius: 1.5rem; + --ifm-breadcrumb-spacing: 0.5rem; + --ifm-breadcrumb-color-active: var(--ifm-color-primary); + --ifm-breadcrumb-item-background-active: var(--ifm-hover-overlay); + --ifm-breadcrumb-padding-horizontal: 0.8rem; + --ifm-breadcrumb-padding-vertical: 0.4rem; + --ifm-breadcrumb-size-multiplier: 1; + --ifm-breadcrumb-separator: url('data:image/svg+xml;utf8,'); + --ifm-breadcrumb-separator-filter: none; + --ifm-breadcrumb-separator-size: 0.5rem; + --ifm-breadcrumb-separator-size-multiplier: 1.25; + --ifm-button-background-color: inherit; + --ifm-button-border-color: var(--ifm-button-background-color); + --ifm-button-border-width: var(--ifm-global-border-width); + --ifm-button-color: var(--ifm-font-color-base-inverse); + --ifm-button-font-weight: var(--ifm-font-weight-bold); + --ifm-button-padding-horizontal: 1.5rem; + --ifm-button-padding-vertical: 0.375rem; + --ifm-button-size-multiplier: 1; + --ifm-button-transition-duration: var(--ifm-transition-fast); + --ifm-button-border-radius: calc( + var(--ifm-global-radius) * var(--ifm-button-size-multiplier) + ); + --ifm-button-group-spacing: 2px; + --ifm-card-background-color: var(--ifm-background-surface-color); + --ifm-card-border-radius: calc(var(--ifm-global-radius) * 2); + --ifm-card-horizontal-spacing: var(--ifm-global-spacing); + --ifm-card-vertical-spacing: var(--ifm-global-spacing); + --ifm-toc-border-color: var(--ifm-color-emphasis-300); + --ifm-toc-link-color: var(--ifm-color-content-secondary); + --ifm-toc-padding-vertical: 0.5rem; + --ifm-toc-padding-horizontal: 0.5rem; + --ifm-dropdown-background-color: var(--ifm-background-surface-color); + --ifm-dropdown-font-weight: var(--ifm-font-weight-semibold); + --ifm-dropdown-link-color: var(--ifm-font-color-base); + --ifm-dropdown-hover-background-color: var(--ifm-hover-overlay); + --ifm-footer-background-color: var(--ifm-color-emphasis-100); + --ifm-footer-color: inherit; + --ifm-footer-link-color: var(--ifm-color-emphasis-700); + --ifm-footer-link-hover-color: var(--ifm-color-primary); + --ifm-footer-link-horizontal-spacing: 0.5rem; + --ifm-footer-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 2); + --ifm-footer-padding-vertical: calc(var(--ifm-spacing-vertical) * 2); + --ifm-footer-title-color: inherit; + --ifm-footer-logo-max-width: min(30rem, 90vw); + --ifm-hero-background-color: var(--ifm-background-surface-color); + --ifm-hero-text-color: var(--ifm-color-emphasis-800); + --ifm-menu-color: var(--ifm-color-emphasis-700); + --ifm-menu-color-active: var(--ifm-color-primary); + --ifm-menu-color-background-active: var(--ifm-hover-overlay); + --ifm-menu-color-background-hover: var(--ifm-hover-overlay); + --ifm-menu-link-padding-horizontal: 0.75rem; + --ifm-menu-link-padding-vertical: 0.375rem; + --ifm-menu-link-sublist-icon: url('data:image/svg+xml;utf8,'); + --ifm-menu-link-sublist-icon-filter: none; + --ifm-navbar-background-color: var(--ifm-background-surface-color); + --ifm-navbar-height: 3.75rem; + --ifm-navbar-item-padding-horizontal: 0.75rem; + --ifm-navbar-item-padding-vertical: 0.25rem; + --ifm-navbar-link-color: var(--ifm-font-color-base); + --ifm-navbar-link-hover-color: var(--ifm-color-primary); + --ifm-navbar-link-active-color: var(--ifm-link-color); + --ifm-navbar-padding-horizontal: var(--ifm-spacing-horizontal); + --ifm-navbar-padding-vertical: calc(var(--ifm-spacing-vertical) * 0.5); + --ifm-navbar-shadow: var(--ifm-global-shadow-lw); + --ifm-navbar-search-input-background-color: var(--ifm-color-emphasis-200); + --ifm-navbar-search-input-color: var(--ifm-color-emphasis-800); + --ifm-navbar-search-input-placeholder-color: var(--ifm-color-emphasis-500); + --ifm-navbar-search-input-icon: url('data:image/svg+xml;utf8,'); + --ifm-navbar-sidebar-width: 83vw; + --ifm-pagination-border-radius: var(--ifm-global-radius); + --ifm-pagination-color-active: var(--ifm-color-primary); + --ifm-pagination-font-size: 1rem; + --ifm-pagination-item-active-background: var(--ifm-hover-overlay); + --ifm-pagination-page-spacing: 0.2em; + --ifm-pagination-padding-horizontal: calc(var(--ifm-spacing-horizontal) * 1); + --ifm-pagination-padding-vertical: calc(var(--ifm-spacing-vertical) * 0.25); + --ifm-pagination-nav-border-radius: var(--ifm-global-radius); + --ifm-pagination-nav-color-hover: var(--ifm-color-primary); + --ifm-pills-color-active: var(--ifm-color-primary); + --ifm-pills-color-background-active: var(--ifm-hover-overlay); + --ifm-pills-spacing: 0.125rem; + --ifm-tabs-color: var(--ifm-font-color-secondary); + --ifm-tabs-color-active: var(--ifm-color-primary); + --ifm-tabs-color-active-border: var(--ifm-tabs-color-active); + --ifm-tabs-padding-horizontal: 1rem; + --ifm-tabs-padding-vertical: 1rem; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +* { + box-sizing: border-box; +} + +html { + background-color: var(--ifm-background-color); + color: var(--ifm-font-color-base); + color-scheme: var(--ifm-color-scheme); + font: var(--ifm-font-size-base) / var(--ifm-line-height-base) + var(--ifm-font-family-base); + -webkit-font-smoothing: antialiased; + -webkit-tap-highlight-color: transparent; + text-rendering: optimizelegibility; + text-size-adjust: 100%; +} + +body { + margin: 0; + word-wrap: break-word; +} + +iframe { + border: 0; + color-scheme: auto; +} + +/* Layout */ + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.container { + margin: 0 auto; + max-width: var(--ifm-container-width); + padding: 0 var(--ifm-spacing-horizontal); + width: 100%; +} + +.container--fluid { + max-width: inherit; + } + +.row { + display: flex; + flex-wrap: wrap; + margin: 0 calc(var(--ifm-spacing-horizontal) * -1); +} + +.row--no-gutters { + margin-left: 0; + margin-right: 0; + } + +.row--no-gutters > .col { + padding-left: 0; + padding-right: 0; + } + +.row--align-top { + align-items: flex-start; + } + +.row--align-bottom { + align-items: flex-end; + } + +.row--align-center { + align-items: center; + } + +.row--align-stretch { + align-items: stretch; + } + +.row--align-baseline { + align-items: baseline; + } + +.col { + --ifm-col-width: 100%; + + flex: 1 0; + margin-left: 0; + max-width: var(--ifm-col-width); + padding: 0 var(--ifm-spacing-horizontal); + width: 100%; +} + +.col[class*='col--'] { + flex: 0 0 var(--ifm-col-width); + } + +.col--1 { + --ifm-col-width: calc(1 / 12 * 100%); + } + +.col--offset-1 { + margin-left: calc(1 / 12 * 100%); + } + +.col--2 { + --ifm-col-width: calc(2 / 12 * 100%); + } + +.col--offset-2 { + margin-left: calc(2 / 12 * 100%); + } + +.col--3 { + --ifm-col-width: calc(3 / 12 * 100%); + } + +.col--offset-3 { + margin-left: calc(3 / 12 * 100%); + } + +.col--4 { + --ifm-col-width: calc(4 / 12 * 100%); + } + +.col--offset-4 { + margin-left: calc(4 / 12 * 100%); + } + +.col--5 { + --ifm-col-width: calc(5 / 12 * 100%); + } + +.col--offset-5 { + margin-left: calc(5 / 12 * 100%); + } + +.col--6 { + --ifm-col-width: calc(6 / 12 * 100%); + } + +.col--offset-6 { + margin-left: calc(6 / 12 * 100%); + } + +.col--7 { + --ifm-col-width: calc(7 / 12 * 100%); + } + +.col--offset-7 { + margin-left: calc(7 / 12 * 100%); + } + +.col--8 { + --ifm-col-width: calc(8 / 12 * 100%); + } + +.col--offset-8 { + margin-left: calc(8 / 12 * 100%); + } + +.col--9 { + --ifm-col-width: calc(9 / 12 * 100%); + } + +.col--offset-9 { + margin-left: calc(9 / 12 * 100%); + } + +.col--10 { + --ifm-col-width: calc(10 / 12 * 100%); + } + +.col--offset-10 { + margin-left: calc(10 / 12 * 100%); + } + +.col--11 { + --ifm-col-width: calc(11 / 12 * 100%); + } + +.col--offset-11 { + margin-left: calc(11 / 12 * 100%); + } + +.col--12 { + --ifm-col-width: calc(12 / 12 * 100%); + } + +.col--offset-12 { + margin-left: calc(12 / 12 * 100%); + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.margin--none { + margin: 0 !important; + } + +.margin-top--none { + margin-top: 0 !important; + } + +.margin-left--none { + margin-left: 0 !important; + } + +.margin-bottom--none { + margin-bottom: 0 !important; + } + +.margin-right--none { + margin-right: 0 !important; + } + +.margin-vert--none { + margin-bottom: 0 !important; + margin-top: 0 !important; + } + +.margin-horiz--none { + margin-left: 0 !important; + margin-right: 0 !important; + } + +.margin--xs { + margin: 0.25rem !important; + } + +.margin-top--xs { + margin-top: 0.25rem !important; + } + +.margin-left--xs { + margin-left: 0.25rem !important; + } + +.margin-bottom--xs { + margin-bottom: 0.25rem !important; + } + +.margin-right--xs { + margin-right: 0.25rem !important; + } + +.margin-vert--xs { + margin-bottom: 0.25rem !important; + margin-top: 0.25rem !important; + } + +.margin-horiz--xs { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + +.margin--sm { + margin: 0.5rem !important; + } + +.margin-top--sm { + margin-top: 0.5rem !important; + } + +.margin-left--sm { + margin-left: 0.5rem !important; + } + +.margin-bottom--sm { + margin-bottom: 0.5rem !important; + } + +.margin-right--sm { + margin-right: 0.5rem !important; + } + +.margin-vert--sm { + margin-bottom: 0.5rem !important; + margin-top: 0.5rem !important; + } + +.margin-horiz--sm { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + +.margin--md { + margin: 1rem !important; + } + +.margin-top--md { + margin-top: 1rem !important; + } + +.margin-left--md { + margin-left: 1rem !important; + } + +.margin-bottom--md { + margin-bottom: 1rem !important; + } + +.margin-right--md { + margin-right: 1rem !important; + } + +.margin-vert--md { + margin-bottom: 1rem !important; + margin-top: 1rem !important; + } + +.margin-horiz--md { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + +.margin--lg { + margin: 2rem !important; + } + +.margin-top--lg { + margin-top: 2rem !important; + } + +.margin-left--lg { + margin-left: 2rem !important; + } + +.margin-bottom--lg { + margin-bottom: 2rem !important; + } + +.margin-right--lg { + margin-right: 2rem !important; + } + +.margin-vert--lg { + margin-bottom: 2rem !important; + margin-top: 2rem !important; + } + +.margin-horiz--lg { + margin-left: 2rem !important; + margin-right: 2rem !important; + } + +.margin--xl { + margin: 5rem !important; + } + +.margin-top--xl { + margin-top: 5rem !important; + } + +.margin-left--xl { + margin-left: 5rem !important; + } + +.margin-bottom--xl { + margin-bottom: 5rem !important; + } + +.margin-right--xl { + margin-right: 5rem !important; + } + +.margin-vert--xl { + margin-bottom: 5rem !important; + margin-top: 5rem !important; + } + +.margin-horiz--xl { + margin-left: 5rem !important; + margin-right: 5rem !important; + } + +.padding--none { + padding: 0 !important; + } + +.padding-top--none { + padding-top: 0 !important; + } + +.padding-left--none { + padding-left: 0 !important; + } + +.padding-bottom--none { + padding-bottom: 0 !important; + } + +.padding-right--none { + padding-right: 0 !important; + } + +.padding-vert--none { + padding-bottom: 0 !important; + padding-top: 0 !important; + } + +.padding-horiz--none { + padding-left: 0 !important; + padding-right: 0 !important; + } + +.padding--xs { + padding: 0.25rem !important; + } + +.padding-top--xs { + padding-top: 0.25rem !important; + } + +.padding-left--xs { + padding-left: 0.25rem !important; + } + +.padding-bottom--xs { + padding-bottom: 0.25rem !important; + } + +.padding-right--xs { + padding-right: 0.25rem !important; + } + +.padding-vert--xs { + padding-bottom: 0.25rem !important; + padding-top: 0.25rem !important; + } + +.padding-horiz--xs { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + +.padding--sm { + padding: 0.5rem !important; + } + +.padding-top--sm { + padding-top: 0.5rem !important; + } + +.padding-left--sm { + padding-left: 0.5rem !important; + } + +.padding-bottom--sm { + padding-bottom: 0.5rem !important; + } + +.padding-right--sm { + padding-right: 0.5rem !important; + } + +.padding-vert--sm { + padding-bottom: 0.5rem !important; + padding-top: 0.5rem !important; + } + +.padding-horiz--sm { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + +.padding--md { + padding: 1rem !important; + } + +.padding-top--md { + padding-top: 1rem !important; + } + +.padding-left--md { + padding-left: 1rem !important; + } + +.padding-bottom--md { + padding-bottom: 1rem !important; + } + +.padding-right--md { + padding-right: 1rem !important; + } + +.padding-vert--md { + padding-bottom: 1rem !important; + padding-top: 1rem !important; + } + +.padding-horiz--md { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + +.padding--lg { + padding: 2rem !important; + } + +.padding-top--lg { + padding-top: 2rem !important; + } + +.padding-left--lg { + padding-left: 2rem !important; + } + +.padding-bottom--lg { + padding-bottom: 2rem !important; + } + +.padding-right--lg { + padding-right: 2rem !important; + } + +.padding-vert--lg { + padding-bottom: 2rem !important; + padding-top: 2rem !important; + } + +.padding-horiz--lg { + padding-left: 2rem !important; + padding-right: 2rem !important; + } + +.padding--xl { + padding: 5rem !important; + } + +.padding-top--xl { + padding-top: 5rem !important; + } + +.padding-left--xl { + padding-left: 5rem !important; + } + +.padding-bottom--xl { + padding-bottom: 5rem !important; + } + +.padding-right--xl { + padding-right: 5rem !important; + } + +.padding-vert--xl { + padding-bottom: 5rem !important; + padding-top: 5rem !important; + } + +.padding-horiz--xl { + padding-left: 5rem !important; + padding-right: 5rem !important; + } + +/* Content */ + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +code { + background-color: var(--ifm-code-background); + border: 0.1rem solid rgba(0, 0, 0, 0.1); + border-radius: var(--ifm-code-border-radius); + font-family: var(--ifm-font-family-monospace); + font-size: var(--ifm-code-font-size); + padding: var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal); + vertical-align: middle; +} + +a code { + color: inherit; +} + +pre { + background-color: var(--ifm-pre-background); + border-radius: var(--ifm-pre-border-radius); + color: var(--ifm-pre-color); + font: var(--ifm-code-font-size) / var(--ifm-pre-line-height) + var(--ifm-font-family-monospace); + margin: 0 0 var(--ifm-spacing-vertical); + overflow: auto; + padding: var(--ifm-pre-padding); +} + +pre code { + background-color: transparent; + border: none; + font-size: 100%; + line-height: inherit; + padding: 0; + } + +kbd { + background-color: var(--ifm-color-emphasis-0); + border: 1px solid var(--ifm-color-emphasis-400); + border-radius: 0.2rem; + box-shadow: inset 0 -1px 0 var(--ifm-color-emphasis-400); + color: var(--ifm-color-emphasis-800); + font: 80% var(--ifm-font-family-monospace); + padding: 0.15rem 0.3rem; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +h1, +h2, +h3, +h4, +h5, +h6 { + color: var(--ifm-heading-color); + font-family: var(--ifm-heading-font-family); + font-weight: var(--ifm-heading-font-weight); + line-height: var(--ifm-heading-line-height); + margin: var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0; +} + +h1 { + font-size: var(--ifm-h1-font-size); + } + +h2 { + font-size: var(--ifm-h2-font-size); + } + +h3 { + font-size: var(--ifm-h3-font-size); + } + +h4 { + font-size: var(--ifm-h4-font-size); + } + +h5 { + font-size: var(--ifm-h5-font-size); + } + +h6 { + font-size: var(--ifm-h6-font-size); + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +img { + max-width: 100%; +} + +img[align='right'] { + padding-left: var(--image-alignment-padding); +} + +img[align='left'] { + padding-right: var(--image-alignment-padding); +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.markdown { + --ifm-h1-vertical-rhythm-top: 3; + --ifm-h2-vertical-rhythm-top: 2; + --ifm-h3-vertical-rhythm-top: 1.5; + --ifm-heading-vertical-rhythm-top: 1.25; + + --ifm-h1-vertical-rhythm-bottom: 1.25; + --ifm-heading-vertical-rhythm-bottom: 1; +} + +.markdown:before { + content: ''; + display: table; + } + +.markdown:after { + clear: both; + content: ''; + display: table; + } + +.markdown > *:last-child { + margin-bottom: 0 !important; + } + +.markdown h1:first-child { + --ifm-h1-font-size: 3rem; + + margin-bottom: calc( + var(--ifm-h1-vertical-rhythm-bottom) * var(--ifm-leading) + ); + } + +.markdown > h2 { + --ifm-h2-font-size: 2rem; + + margin-bottom: calc( + var(--ifm-heading-vertical-rhythm-bottom) * var(--ifm-leading) + ); + margin-top: calc(var(--ifm-h2-vertical-rhythm-top) * var(--ifm-leading)); + } + +.markdown > h3 { + --ifm-h3-font-size: 1.5rem; + + margin-bottom: calc( + var(--ifm-heading-vertical-rhythm-bottom) * var(--ifm-leading) + ); + margin-top: calc(var(--ifm-h3-vertical-rhythm-top) * var(--ifm-leading)); + } + +.markdown > h4, + .markdown > h5, + .markdown > h6 { + margin-bottom: calc( + var(--ifm-heading-vertical-rhythm-bottom) * var(--ifm-leading) + ); + margin-top: calc( + var(--ifm-heading-vertical-rhythm-top) * var(--ifm-leading) + ); + } + +/* Consistent spacing between content paragraphs. */ + +.markdown > pre, + .markdown > ul, + .markdown > p { + margin-bottom: var(--ifm-leading); + } + +.markdown li { + word-wrap: break-word; + } + +.markdown li > p { + margin-top: var(--ifm-list-paragraph-margin); + } + +.markdown li + li { + margin-top: var(--ifm-list-item-margin); + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* Lists */ + +ul, +ol { + margin: 0 0 var(--ifm-list-margin); + padding-left: var(--ifm-list-left-padding); +} + +ol ol, +ul ol { + list-style-type: lower-roman; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin: 0; +} + +ul ul ol, +ul ol ol, +ol ul ol, +ol ol ol { + list-style-type: lower-alpha; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +table { + border-collapse: collapse; + display: block; + margin-bottom: var(--ifm-spacing-vertical); + overflow: auto; +} + +table thead tr { + border-bottom: 2px solid var(--ifm-table-border-color); + } + +table thead { + background-color: var(--ifm-table-stripe-background); + } + +table tr { + background-color: var(--ifm-table-background); + border-top: var(--ifm-table-border-width) solid + var(--ifm-table-border-color); + } + +table tr:nth-child(2n) { + background-color: var(--ifm-table-stripe-background); + } + +table th, + table td { + border: var(--ifm-table-border-width) solid var(--ifm-table-border-color); + padding: var(--ifm-table-cell-padding); + } + +table th { + background-color: var(--ifm-table-head-background); + color: var(--ifm-table-head-color); + font-weight: var(--ifm-table-head-font-weight); + } + +table td { + color: var(--ifm-table-cell-color); + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +strong { + font-weight: var(--ifm-font-weight-bold); +} + +/* Links */ + +a { + color: var(--ifm-link-color); + /* autoprefixer: ignore next */ + text-decoration: var(--ifm-link-decoration); + transition: color var(--ifm-transition-fast) var(--ifm-transition-timing-default); +} + +a:hover { + color: var(--ifm-link-hover-color); + /* autoprefixer: ignore next */ + text-decoration: var(--ifm-link-hover-decoration); + } + +a:not([href]) { + text-decoration: none; + } + +/* Paragraphs */ + +p { + margin: 0 0 var(--ifm-paragraph-margin-bottom); +} + +/* Blockquotes */ + +blockquote { + border-left: var(--ifm-blockquote-border-left-width) solid + var(--ifm-blockquote-border-color); + box-shadow: var(--ifm-blockquote-shadow); + color: var(--ifm-blockquote-color); + font-size: var(--ifm-blockquote-font-size); + margin: 0 0 var(--ifm-spacing-vertical); + padding: var(--ifm-blockquote-padding-vertical) + var(--ifm-blockquote-padding-horizontal); +} + +blockquote > :first-child { + margin-top: 0; + } + +blockquote > :last-child { + margin-bottom: 0; + } + +/* Horizontal Rules */ + +hr { + background-color: var(--ifm-hr-background-color); + border: 0; + height: var(--ifm-hr-height); + margin: var(--ifm-hr-margin-vertical) 0; +} + +/* Utilities */ + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.shadow--lw { + box-shadow: var(--ifm-global-shadow-lw) !important; + } + +.shadow--md { + box-shadow: var(--ifm-global-shadow-md) !important; + } + +.shadow--tl { + box-shadow: var(--ifm-global-shadow-tl) !important; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.text--primary { + color: var(--ifm-color-primary); + } + +.text--secondary { + color: var(--ifm-color-secondary); + } + +.text--success { + color: var(--ifm-color-success); + } + +.text--info { + color: var(--ifm-color-info); + } + +.text--warning { + color: var(--ifm-color-warning); + } + +.text--danger { + color: var(--ifm-color-danger); + } + +.text--center { + text-align: center; + } + +.text--left { + text-align: left; + } + +.text--justify { + text-align: justify; + } + +.text--right { + text-align: right; + } + +.text--capitalize { + text-transform: capitalize; + } + +.text--lowercase { + text-transform: lowercase; + } + +.text--uppercase { + text-transform: uppercase; + } + +.text--light { + font-weight: var(--ifm-font-weight-light); + } + +.text--normal { + font-weight: var(--ifm-font-weight-normal); + } + +.text--semibold { + font-weight: var(--ifm-font-weight-semibold); + } + +.text--bold { + font-weight: var(--ifm-font-weight-bold); + } + +.text--italic { + font-style: italic; +} + +.text--truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text--break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +.text--no-decoration, + .text--no-decoration:hover { + text-decoration: none; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.clean-btn { + background: none; + border: none; + color: inherit; + cursor: pointer; + font-family: inherit; + padding: 0; +} + +.clean-list { + list-style: none; + padding-left: 0; +} + +/* Components */ + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.alert--primary { + --ifm-alert-background-color: var( + --ifm-color-primary-contrast-background + ); + --ifm-alert-background-color-highlight: rgba(53, 120, 229, 0.15); + --ifm-alert-foreground-color: var( + --ifm-color-primary-contrast-foreground + ); + --ifm-alert-border-color: var(--ifm-color-primary-dark); + } + +.alert--secondary { + --ifm-alert-background-color: var( + --ifm-color-secondary-contrast-background + ); + --ifm-alert-background-color-highlight: rgba(235, 237, 240, 0.15); + --ifm-alert-foreground-color: var( + --ifm-color-secondary-contrast-foreground + ); + --ifm-alert-border-color: var(--ifm-color-secondary-dark); + } + +.alert--success { + --ifm-alert-background-color: var( + --ifm-color-success-contrast-background + ); + --ifm-alert-background-color-highlight: rgba(0, 164, 0, 0.15); + --ifm-alert-foreground-color: var( + --ifm-color-success-contrast-foreground + ); + --ifm-alert-border-color: var(--ifm-color-success-dark); + } + +.alert--info { + --ifm-alert-background-color: var( + --ifm-color-info-contrast-background + ); + --ifm-alert-background-color-highlight: rgba(84, 199, 236, 0.15); + --ifm-alert-foreground-color: var( + --ifm-color-info-contrast-foreground + ); + --ifm-alert-border-color: var(--ifm-color-info-dark); + } + +.alert--warning { + --ifm-alert-background-color: var( + --ifm-color-warning-contrast-background + ); + --ifm-alert-background-color-highlight: rgba(255, 186, 0, 0.15); + --ifm-alert-foreground-color: var( + --ifm-color-warning-contrast-foreground + ); + --ifm-alert-border-color: var(--ifm-color-warning-dark); + } + +.alert--danger { + --ifm-alert-background-color: var( + --ifm-color-danger-contrast-background + ); + --ifm-alert-background-color-highlight: rgba(250, 56, 62, 0.15); + --ifm-alert-foreground-color: var( + --ifm-color-danger-contrast-foreground + ); + --ifm-alert-border-color: var(--ifm-color-danger-dark); + } + +.alert { + + --ifm-code-background: var(--ifm-alert-background-color-highlight); + --ifm-link-color: var(--ifm-alert-foreground-color); + --ifm-link-hover-color: var(--ifm-alert-foreground-color); + --ifm-link-decoration: underline; + --ifm-tabs-color: var(--ifm-alert-foreground-color); + --ifm-tabs-color-active: var(--ifm-alert-foreground-color); + --ifm-tabs-color-active-border: var(--ifm-alert-border-color); + + background-color: var(--ifm-alert-background-color); + border: var(--ifm-alert-border-width) solid var(--ifm-alert-border-color); + border-left-width: var(--ifm-alert-border-left-width); + border-radius: var(--ifm-alert-border-radius); + box-shadow: var(--ifm-alert-shadow); + color: var(--ifm-alert-foreground-color); + padding: var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal); +} + +.alert__heading { + align-items: center; + display: flex; + font: bold var(--ifm-h5-font-size) / var(--ifm-heading-line-height) + var(--ifm-heading-font-family); + margin-bottom: 0.5rem; + text-transform: uppercase; + } + +.alert__icon { + display: inline-flex; + margin-right: 0.4em; + } + +.alert__icon svg { + fill: var(--ifm-alert-foreground-color); + stroke: var(--ifm-alert-foreground-color); + stroke-width: 0; + } + +.alert .close { + color: var(--ifm-alert-foreground-color); + margin: calc(var(--ifm-alert-padding-vertical) * -1) + calc(var(--ifm-alert-padding-horizontal) * -1) 0 0; + + opacity: 0.75; + } + +.alert .close:hover, + .alert .close:focus { + opacity: 1; + } + +.alert a { + text-decoration-color: var(--ifm-alert-border-color); + } + +.alert a:hover { + text-decoration-thickness: 2px; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.avatar { + column-gap: var(--ifm-avatar-intro-margin); + display: flex; +} + +.avatar__photo { + border-radius: 50%; + display: block; + height: var(--ifm-avatar-photo-size); + overflow: hidden; + width: var(--ifm-avatar-photo-size); + } + +.avatar__photo--sm { + --ifm-avatar-photo-size: 2rem; + } + +.avatar__photo--lg { + --ifm-avatar-photo-size: 4rem; + } + +.avatar__photo--xl { + --ifm-avatar-photo-size: 6rem; + } + +.avatar__intro { + display: flex; + flex: 1 1; + flex-direction: column; + justify-content: center; + text-align: var(--ifm-avatar-intro-alignment); + } + +.avatar__name { + font: bold var(--ifm-h4-font-size) / var(--ifm-heading-line-height) + var(--ifm-font-family-base); + } + +.avatar__subtitle { + margin-top: 0.25rem; + } + +.avatar--vertical { + --ifm-avatar-intro-alignment: center; + --ifm-avatar-intro-margin: 0.5rem; + + align-items: center; + flex-direction: column; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.badge { + background-color: var(--ifm-badge-background-color); + border: var(--ifm-badge-border-width) solid var(--ifm-badge-border-color); + border-radius: var(--ifm-badge-border-radius); + color: var(--ifm-badge-color); + display: inline-block; + font-size: 75%; + font-weight: var(--ifm-font-weight-bold); + line-height: 1; + padding: var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal); +} + +.badge--primary { + --ifm-badge-background-color: var(--ifm-color-primary); + --ifm-badge-border-color: var(--ifm-badge-background-color); + } + +.badge--secondary { + --ifm-badge-background-color: var(--ifm-color-secondary); + --ifm-badge-border-color: var(--ifm-badge-background-color); + color: var(--ifm-color-black); + } + +.badge--success { + --ifm-badge-background-color: var(--ifm-color-success); + --ifm-badge-border-color: var(--ifm-badge-background-color); + } + +.badge--info { + --ifm-badge-background-color: var(--ifm-color-info); + --ifm-badge-border-color: var(--ifm-badge-background-color); + } + +.badge--warning { + --ifm-badge-background-color: var(--ifm-color-warning); + --ifm-badge-border-color: var(--ifm-badge-background-color); + } + +.badge--danger { + --ifm-badge-background-color: var(--ifm-color-danger); + --ifm-badge-border-color: var(--ifm-badge-background-color); + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.breadcrumbs { + margin-bottom: 0; + padding-left: 0; +} + +.breadcrumbs__item { + display: inline-block; + } + +.breadcrumbs__item:not(:last-child):after { + background: var(--ifm-breadcrumb-separator) center; + content: ' '; + display: inline-block; + filter: var(--ifm-breadcrumb-separator-filter); + height: calc( + var(--ifm-breadcrumb-separator-size) * + var(--ifm-breadcrumb-size-multiplier) * + var(--ifm-breadcrumb-separator-size-multiplier) + ); + margin: 0 var(--ifm-breadcrumb-spacing); + opacity: 0.5; + width: calc( + var(--ifm-breadcrumb-separator-size) * + var(--ifm-breadcrumb-size-multiplier) * + var(--ifm-breadcrumb-separator-size-multiplier) + ); + /*rtl:raw: + transform: rotate(180deg); + */ + } + +.breadcrumbs__item--active .breadcrumbs__link { + background: var(--ifm-breadcrumb-item-background-active); + color: var(--ifm-breadcrumb-color-active); + } + +.breadcrumbs__link { + border-radius: var(--ifm-breadcrumb-border-radius); + color: var(--ifm-font-color-base); + display: inline-block; + font-size: calc(1rem * var(--ifm-breadcrumb-size-multiplier)); + padding: calc( + var(--ifm-breadcrumb-padding-vertical) * + var(--ifm-breadcrumb-size-multiplier) + ) + calc( + var(--ifm-breadcrumb-padding-horizontal) * + var(--ifm-breadcrumb-size-multiplier) + ); + transition-property: background, color; + transition-duration: var(--ifm-transition-fast); + transition-timing-function: var(--ifm-transition-timing-default); + } + +.breadcrumbs__link:link:hover, .breadcrumbs__link:visited:hover, area[href].breadcrumbs__link:hover { + background: var(--ifm-breadcrumb-item-background-active); + text-decoration: none; + } + +.breadcrumbs__link:any-link:hover { + background: var(--ifm-breadcrumb-item-background-active); + text-decoration: none; + } + +.breadcrumbs--sm { + --ifm-breadcrumb-size-multiplier: 0.8; + } + +.breadcrumbs--lg { + --ifm-breadcrumb-size-multiplier: 1.2; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.button { + background-color: var(--ifm-button-background-color); + border: var(--ifm-button-border-width) solid var(--ifm-button-border-color); + border-radius: var(--ifm-button-border-radius); + color: var(--ifm-button-color); + cursor: pointer; + display: inline-block; + font-size: calc(0.875rem * var(--ifm-button-size-multiplier)); + font-weight: var(--ifm-button-font-weight); + line-height: 1.5; + padding: calc( + var(--ifm-button-padding-vertical) * var(--ifm-button-size-multiplier) + ) + calc( + var(--ifm-button-padding-horizontal) * var(--ifm-button-size-multiplier) + ); + text-align: center; + -webkit-user-select: none; + user-select: none; + vertical-align: middle; + white-space: nowrap; + transition-property: color, background, border-color; + transition-duration: var(--ifm-button-transition-duration); + transition-timing-function: var(--ifm-transition-timing-default); +} + +.button:hover { + color: var(--ifm-button-color); /* Override for button links. */ + text-decoration: none; + } + +.button--outline { + --ifm-button-background-color: transparent; + --ifm-button-color: var(--ifm-button-border-color); + } + +.button--outline:hover { + --ifm-button-background-color: var(--ifm-button-border-color); + } + +.button--outline:hover, + .button--outline:active, + .button--outline.button--active { + --ifm-button-color: var(--ifm-font-color-base-inverse); + } + +.button--link { + --ifm-button-background-color: transparent; + --ifm-button-border-color: transparent; + + color: var(--ifm-link-color); + /* autoprefixer: ignore next */ + text-decoration: var(--ifm-link-decoration); + } + +.button--link:hover, + .button--link:active, + .button--link.button--active { + color: var(--ifm-link-hover-color); + /* autoprefixer: ignore next */ + text-decoration: var(--ifm-link-hover-decoration); + } + +.button.disabled, + .button:disabled, + .button[disabled] { + opacity: 0.65; + pointer-events: none; + } + +.button--sm { + --ifm-button-size-multiplier: 0.8; + } + +.button--lg { + --ifm-button-size-multiplier: 1.35; + } + +.button--block { + display: block; + width: 100%; + } + +.button.button--secondary { + color: var(--ifm-color-gray-900); + } + +.button.button--secondary.button--outline:not(.button--active):not(:hover) { + color: var(--ifm-font-color-base); + } + +:where(.button--primary) { + --ifm-button-background-color: var(--ifm-color-primary); + --ifm-button-border-color: var(--ifm-color-primary); + } + +:where(.button--primary):not(.button--outline):hover { + --ifm-button-background-color: var(--ifm-color-primary-dark); + --ifm-button-border-color: var(--ifm-color-primary-dark); + } + +.button--primary:active, + .button--primary.button--active { + --ifm-button-background-color: var(--ifm-color-primary-darker); + --ifm-button-border-color: var(--ifm-color-primary-darker); + } + +:where(.button--secondary) { + --ifm-button-background-color: var(--ifm-color-secondary); + --ifm-button-border-color: var(--ifm-color-secondary); + } + +:where(.button--secondary):not(.button--outline):hover { + --ifm-button-background-color: var(--ifm-color-secondary-dark); + --ifm-button-border-color: var(--ifm-color-secondary-dark); + } + +.button--secondary:active, + .button--secondary.button--active { + --ifm-button-background-color: var(--ifm-color-secondary-darker); + --ifm-button-border-color: var(--ifm-color-secondary-darker); + } + +:where(.button--success) { + --ifm-button-background-color: var(--ifm-color-success); + --ifm-button-border-color: var(--ifm-color-success); + } + +:where(.button--success):not(.button--outline):hover { + --ifm-button-background-color: var(--ifm-color-success-dark); + --ifm-button-border-color: var(--ifm-color-success-dark); + } + +.button--success:active, + .button--success.button--active { + --ifm-button-background-color: var(--ifm-color-success-darker); + --ifm-button-border-color: var(--ifm-color-success-darker); + } + +:where(.button--info) { + --ifm-button-background-color: var(--ifm-color-info); + --ifm-button-border-color: var(--ifm-color-info); + } + +:where(.button--info):not(.button--outline):hover { + --ifm-button-background-color: var(--ifm-color-info-dark); + --ifm-button-border-color: var(--ifm-color-info-dark); + } + +.button--info:active, + .button--info.button--active { + --ifm-button-background-color: var(--ifm-color-info-darker); + --ifm-button-border-color: var(--ifm-color-info-darker); + } + +:where(.button--warning) { + --ifm-button-background-color: var(--ifm-color-warning); + --ifm-button-border-color: var(--ifm-color-warning); + } + +:where(.button--warning):not(.button--outline):hover { + --ifm-button-background-color: var(--ifm-color-warning-dark); + --ifm-button-border-color: var(--ifm-color-warning-dark); + } + +.button--warning:active, + .button--warning.button--active { + --ifm-button-background-color: var(--ifm-color-warning-darker); + --ifm-button-border-color: var(--ifm-color-warning-darker); + } + +:where(.button--danger) { + --ifm-button-background-color: var(--ifm-color-danger); + --ifm-button-border-color: var(--ifm-color-danger); + } + +:where(.button--danger):not(.button--outline):hover { + --ifm-button-background-color: var(--ifm-color-danger-dark); + --ifm-button-border-color: var(--ifm-color-danger-dark); + } + +.button--danger:active, + .button--danger.button--active { + --ifm-button-background-color: var(--ifm-color-danger-darker); + --ifm-button-border-color: var(--ifm-color-danger-darker); + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.button-group { + display: inline-flex; + gap: var(--ifm-button-group-spacing); +} + +.button-group > .button:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; + } + +.button-group > .button:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + } + +.button-group--block { + display: flex; + justify-content: stretch; + } + +.button-group--block > .button { + flex-grow: 1; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.card { + background-color: var(--ifm-card-background-color); + border-radius: var(--ifm-card-border-radius); + box-shadow: var(--ifm-global-shadow-lw); + display: flex; + flex-direction: column; + overflow: hidden; +} + +/* Because of border-radius. */ + +.card--full-height { + height: 100%; + } + +.card__image { + padding-top: var(--ifm-card-vertical-spacing); + } + +.card__image:first-child { + padding-top: 0; + } + +.card__header, + .card__body, + .card__footer { + padding: var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing); + } + +.card__header:not(:last-child), .card__body:not(:last-child), .card__footer:not(:last-child) { + padding-bottom: 0; + } + +.card__header > :last-child, .card__body > :last-child, .card__footer > :last-child { + margin-bottom: 0; + } + +.card__footer { + margin-top: auto; /* Pushes the footer to the bottom of the card. */ + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.table-of-contents { + font-size: 0.8rem; + margin-bottom: 0; + padding: var(--ifm-toc-padding-vertical) 0; +} + +.table-of-contents, + .table-of-contents ul { + list-style: none; + padding-left: var(--ifm-toc-padding-horizontal); + } + +.table-of-contents li { + margin: var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal); + } + +.table-of-contents__left-border { + border-left: 1px solid var(--ifm-toc-border-color); + } + +.table-of-contents__link { + color: var(--ifm-toc-link-color); + display: block; + } + +.table-of-contents__link:hover, + .table-of-contents__link:hover code, + .table-of-contents__link--active, + .table-of-contents__link--active code { + color: var(--ifm-color-primary); + text-decoration: none; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.close { + color: var(--ifm-color-black); + float: right; + font-size: 1.5rem; + font-weight: var(--ifm-font-weight-bold); + line-height: 1; + opacity: 0.5; + padding: 1rem; + transition: opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default); +} + +.close:hover { + opacity: 0.7; + } + +.close:focus { + opacity: 0.8; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.dropdown { + display: inline-flex; + font-weight: var(--ifm-dropdown-font-weight); + position: relative; + vertical-align: top; +} + +.dropdown--hoverable:hover .dropdown__menu, .dropdown--show .dropdown__menu { + opacity: 1; + pointer-events: all; + transform: translateY(-1px); + visibility: visible; + } + +.dropdown--right .dropdown__menu { + left: inherit; + right: 0; + } + +.dropdown--nocaret .navbar__link:after { + content: none !important; + } + +.dropdown__menu { + background-color: var(--ifm-dropdown-background-color); + border-radius: var(--ifm-global-radius); + box-shadow: var(--ifm-global-shadow-md); + left: 0; + list-style: none; + max-height: 80vh; + min-width: 10rem; + opacity: 0; + overflow-y: auto; + padding: 0.5rem; + pointer-events: none; + position: absolute; + top: calc(100% - var(--ifm-navbar-item-padding-vertical) + 0.3rem); + transform: translateY(-0.625rem); + visibility: hidden; + z-index: var(--ifm-z-index-dropdown); + transition-property: opacity, transform, visibility; + transition-duration: var(--ifm-transition-fast); + transition-timing-function: var(--ifm-transition-timing-default); + } + +.dropdown__link { + border-radius: 0.25rem; + color: var(--ifm-dropdown-link-color); + display: block; + font-size: 0.875rem; + margin-top: 0.2rem; + padding: 0.25rem 0.5rem; + white-space: nowrap; + } + +.dropdown__link:hover, + .dropdown__link--active { + background-color: var(--ifm-dropdown-hover-background-color); + color: var(--ifm-dropdown-link-color); + text-decoration: none; + } + +.dropdown__link--active, + .dropdown__link--active:hover { + --ifm-dropdown-link-color: var(--ifm-link-color); + } + +.dropdown > .navbar__link:after { + border-color: currentColor transparent; + border-style: solid; + border-width: 0.4em 0.4em 0; + content: ''; + display: inline-block; + margin-left: 0.3em; + position: relative; + top: 2px; + transform: translateY(-50%); + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.footer { + background-color: var(--ifm-footer-background-color); + color: var(--ifm-footer-color); + padding: var(--ifm-footer-padding-vertical) + var(--ifm-footer-padding-horizontal); +} + +.footer--dark { + --ifm-footer-background-color: #303846; + --ifm-footer-color: var(--ifm-footer-link-color); + --ifm-footer-link-color: var(--ifm-color-secondary); + --ifm-footer-title-color: var(--ifm-color-white); + } + +.footer__links { + margin-bottom: 1rem; + } + +.footer__link-item { + color: var(--ifm-footer-link-color); + line-height: 2; + } + +.footer__link-item:hover { + color: var(--ifm-footer-link-hover-color); + } + +.footer__link-separator { + margin: 0 var(--ifm-footer-link-horizontal-spacing); + } + +.footer__logo { + margin-top: 1rem; + max-width: var(--ifm-footer-logo-max-width); + } + +.footer__title { + color: var(--ifm-footer-title-color); + font: bold var(--ifm-h4-font-size) / var(--ifm-heading-line-height) + var(--ifm-font-family-base); + margin-bottom: var(--ifm-heading-margin-bottom); + } + +.footer__item { + margin-top: 0; + } + +.footer__items { + margin-bottom: 0; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +[type='checkbox'] { + padding: 0; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.hero { + align-items: center; + background-color: var(--ifm-hero-background-color); + color: var(--ifm-hero-text-color); + display: flex; + padding: 4rem 2rem; +} + +.hero--primary { + --ifm-hero-background-color: var(--ifm-color-primary); + --ifm-hero-text-color: var(--ifm-font-color-base-inverse); + } + +.hero--dark { + --ifm-hero-background-color: #303846; + --ifm-hero-text-color: var(--ifm-color-white); + } + +.hero__title { + font-size: 3rem; + } + +.hero__subtitle { + font-size: 1.5rem; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.menu { + font-weight: var(--ifm-font-weight-semibold); + overflow-x: hidden; +} + +.menu__list { + list-style: none; + margin: 0; + padding-left: 0; + } + +/* Non-top level menus */ + +.menu__list .menu__list { + flex: 0 0 100%; + margin-top: 0.25rem; + padding-left: var(--ifm-menu-link-padding-horizontal); + } + +.menu__list-item:not(:first-child) { + margin-top: 0.25rem; + } + +.menu__list-item--collapsed .menu__list { + height: 0; + overflow: hidden; + } + +.menu__list-item--collapsed .menu__link--sublist:after, + .menu__list-item--collapsed .menu__caret:before { + transform: rotateZ(90deg); + } + +.menu__list-item-collapsible { + flex-wrap: wrap; + position: relative; + border-radius: 0.25rem; + display: flex; + transition: background var(--ifm-transition-fast) var(--ifm-transition-timing-default); + } + +.menu__list-item-collapsible:hover { + background: var(--ifm-menu-color-background-hover); + } + +.menu__list-item-collapsible--active { + background: var(--ifm-menu-color-background-hover); + } + +.menu__list-item-collapsible .menu__link:hover, + .menu__list-item-collapsible .menu__link--active { + background: none !important; + } + +.menu__link, + .menu__caret { + align-items: center; + border-radius: 0.25rem; + display: flex; + transition: background var(--ifm-transition-fast) var(--ifm-transition-timing-default); + } + +.menu__link:hover, .menu__caret:hover { + background: var(--ifm-menu-color-background-hover); + } + +.menu__link { + color: var(--ifm-menu-color); + flex: 1; + line-height: 1.25; + padding: var(--ifm-menu-link-padding-vertical) + var(--ifm-menu-link-padding-horizontal); + } + +.menu__link:hover { + text-decoration: none; + color: var(--ifm-menu-color); + transition: color var(--ifm-transition-fast) var(--ifm-transition-timing-default); + } + +.menu__link--sublist-caret:after { + content: ''; + margin-left: auto; + min-width: 1.25rem; + background: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem; + filter: var(--ifm-menu-link-sublist-icon-filter); + height: 1.25rem; + transform: rotate(180deg); + width: 1.25rem; + transition: transform var(--ifm-transition-fast) linear; + } + +.menu__link--active { + color: var(--ifm-menu-color-active); + } + +.menu__link--active:hover { + color: var(--ifm-menu-color-active); + } + +.menu__link--active:not(.menu__link--sublist) { + background-color: var(--ifm-menu-color-background-active); + } + +.menu__caret { + padding: var(--ifm-menu-link-padding-vertical) + var(--ifm-menu-link-padding-horizontal); + } + +.menu__caret:before { + content: ''; + background: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem; + filter: var(--ifm-menu-link-sublist-icon-filter); + height: 1.25rem; + transform: rotate(180deg); + width: 1.25rem; + transition: transform var(--ifm-transition-fast) linear; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +html[data-theme='dark'], +.navbar--dark { + --ifm-menu-link-sublist-icon-filter: invert(100%) sepia(94%) saturate(17%) + hue-rotate(223deg) brightness(104%) contrast(98%); +} + +.navbar { + background-color: var(--ifm-navbar-background-color); + box-shadow: var(--ifm-navbar-shadow); + display: flex; + height: var(--ifm-navbar-height); + padding: var(--ifm-navbar-padding-vertical) + var(--ifm-navbar-padding-horizontal); +} + +.navbar > .container, + .navbar > .container-fluid { + display: flex; + } + +.navbar--fixed-top { + position: sticky; + top: 0; + z-index: var(--ifm-z-index-fixed); + } + +.navbar__inner { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + width: 100%; + } + +.navbar__brand { + align-items: center; + color: var(--ifm-navbar-link-color); + display: flex; + margin-right: 1rem; + min-width: 0; + } + +.navbar__brand:hover { + color: var(--ifm-navbar-link-hover-color); + text-decoration: none; + } + +.navbar__title { + flex: 1 1 auto; + } + +.navbar__toggle { + display: none; + margin-right: 0.5rem; + } + +.navbar__logo { + flex: 0 0 auto; + height: 2rem; + margin-right: 0.5rem; + } + +.navbar__logo img { + height: 100%; + } + +.navbar__items { + align-items: center; + display: flex; + flex: 1; + min-width: 0; + } + +.navbar__items--center { + flex: 0 0 auto; + } + +.navbar__items--center .navbar__brand { + margin: 0; + } + +.navbar__items--center + .navbar__items--right { + flex: 1; + } + +.navbar__items--right { + flex: 0 0 auto; + justify-content: flex-end; + } + +.navbar__items--right > :last-child { + padding-right: 0; + } + +.navbar__item { + display: inline-block; + padding: var(--ifm-navbar-item-padding-vertical) + var(--ifm-navbar-item-padding-horizontal); + } + +.navbar__item.dropdown .navbar__link:not([href]) { + pointer-events: none; + } + +.navbar__link { + color: var(--ifm-navbar-link-color); + font-weight: var(--ifm-font-weight-semibold); + } + +.navbar__link:hover, + .navbar__link--active { + color: var(--ifm-navbar-link-hover-color); + text-decoration: none; + } + +.navbar--dark, + .navbar--primary { + --ifm-menu-color: var(--ifm-color-gray-300); + --ifm-navbar-link-color: var(--ifm-color-gray-100); + --ifm-navbar-search-input-background-color: rgba(255, 255, 255, 0.1); + --ifm-navbar-search-input-placeholder-color: rgba(255, 255, 255, 0.5); + + color: var(--ifm-color-white); + } + +.navbar--dark { + --ifm-navbar-background-color: #242526; + --ifm-navbar-link-hover-color: var(--ifm-color-primary); + --ifm-menu-color-background-active: rgba(255, 255, 255, 0.05); + --ifm-navbar-search-input-color: var(--ifm-color-white); + } + +.navbar--primary { + --ifm-navbar-background-color: var(--ifm-color-primary); + --ifm-navbar-link-hover-color: var(--ifm-color-white); + --ifm-menu-color-active: var(--ifm-color-white); + --ifm-navbar-search-input-color: var(--ifm-color-emphasis-500); + } + +.navbar__search-input { + appearance: none; /* Algolia will add type="search" to the input in Safari and Safari's styling will override the styling here. */ + background: var(--ifm-navbar-search-input-background-color) + var(--ifm-navbar-search-input-icon) no-repeat 0.75rem center / 1rem 1rem; + border: none; + border-radius: 2rem; + color: var(--ifm-navbar-search-input-color); + cursor: text; + display: inline-block; + font-size: 0.9rem; + height: 2rem; + padding: 0 0.5rem 0 2.25rem; + width: 12.5rem; + } + +.navbar__search-input::placeholder { + color: var(--ifm-navbar-search-input-placeholder-color); + } + +.navbar-sidebar { + background-color: var(--ifm-navbar-background-color); + bottom: 0; + box-shadow: var(--ifm-global-shadow-md); + left: 0; + opacity: 0; + overflow-x: hidden; + position: fixed; + top: 0; + transform: translate3d(-100%, 0, 0); + visibility: hidden; + width: var(--ifm-navbar-sidebar-width); + transition-property: opacity, visibility, transform; + transition-duration: var(--ifm-transition-fast); + transition-timing-function: ease-in-out; + } + +.navbar-sidebar--show .navbar-sidebar, + .navbar-sidebar--show .navbar-sidebar__backdrop { + opacity: 1; + visibility: visible; + } + +.navbar-sidebar--show .navbar-sidebar { + transform: translate3d(0, 0, 0); + } + +.navbar-sidebar__backdrop { + background-color: rgba(0, 0, 0, 0.6); + bottom: 0; + left: 0; + opacity: 0; + position: fixed; + right: 0; + top: 0; + visibility: hidden; + transition-property: opacity, visibility; + transition-duration: var(--ifm-transition-fast); + transition-timing-function: ease-in-out; + } + +.navbar-sidebar__brand { + align-items: center; + box-shadow: var(--ifm-navbar-shadow); + display: flex; + flex: 1; + height: var(--ifm-navbar-height); + padding: var(--ifm-navbar-padding-vertical) + var(--ifm-navbar-padding-horizontal); + } + +.navbar-sidebar__items { + display: flex; + height: calc(100% - var(--ifm-navbar-height)); + transform: translateZ(0); + transition: transform var(--ifm-transition-fast) ease-in-out; + } + +.navbar-sidebar__items--show-secondary { + transform: translate3d( + calc((var(--ifm-navbar-sidebar-width)) * -1), + 0, + 0 + ); + } + +.navbar-sidebar__item { + flex-shrink: 0; + padding: 0.5rem; + width: calc(var(--ifm-navbar-sidebar-width)); + } + +.navbar-sidebar__back { + background: var(--ifm-menu-color-background-active); + font-size: 15px; + font-weight: var(--ifm-button-font-weight); + margin: 0 0 0.2rem -0.5rem; + padding: 0.6rem 1.5rem; + position: relative; + text-align: left; + top: -0.5rem; + width: calc(100% + 1rem); + } + +.navbar-sidebar__close { + display: flex; + margin-left: auto; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.pagination { + column-gap: var(--ifm-pagination-page-spacing); + display: flex; + font-size: var(--ifm-pagination-font-size); + padding-left: 0; +} + +.pagination--sm { + --ifm-pagination-font-size: 0.8rem; + --ifm-pagination-padding-horizontal: 0.8rem; + --ifm-pagination-padding-vertical: 0.2rem; + } + +.pagination--lg { + --ifm-pagination-font-size: 1.2rem; + --ifm-pagination-padding-horizontal: 1.2rem; + --ifm-pagination-padding-vertical: 0.3rem; + } + +.pagination__item { + display: inline-flex; + } + +.pagination__item > span { + padding: var(--ifm-pagination-padding-vertical); + } + +.pagination__item--active .pagination__link { + background: var(--ifm-pagination-item-active-background); + color: var(--ifm-pagination-color-active); + } + +.pagination__item:not(.pagination__item--active):hover .pagination__link { + background: var(--ifm-pagination-item-active-background); + } + +.pagination__item--disabled, + .pagination__item[disabled] { + opacity: 0.25; + pointer-events: none; + } + +.pagination__link { + border-radius: var(--ifm-pagination-border-radius); + color: var(--ifm-font-color-base); + display: inline-block; + padding: var(--ifm-pagination-padding-vertical) + var(--ifm-pagination-padding-horizontal); + transition: background var(--ifm-transition-fast) var(--ifm-transition-timing-default); + } + +.pagination__link:hover { + text-decoration: none; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.pagination-nav { + display: grid; + grid-gap: var(--ifm-spacing-horizontal); + gap: var(--ifm-spacing-horizontal); + grid-template-columns: repeat(2, 1fr); +} + +.pagination-nav__link { + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: var(--ifm-pagination-nav-border-radius); + display: block; + height: 100%; + line-height: var(--ifm-heading-line-height); + padding: var(--ifm-global-spacing); + transition: border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default); + } + +.pagination-nav__link:hover { + border-color: var(--ifm-pagination-nav-color-hover); + text-decoration: none; + } + +.pagination-nav__link--next { + grid-column: 2/3; + text-align: right; + } + +.pagination-nav__label { + font-size: var(--ifm-h4-font-size); + font-weight: var(--ifm-heading-font-weight); + word-break: break-word; + } + +.pagination-nav__link--prev .pagination-nav__label::before { + content: '« '; + } + +.pagination-nav__link--next .pagination-nav__label::after { + content: ' »'; + } + +.pagination-nav__sublabel { + color: var(--ifm-color-content-secondary); + font-size: var(--ifm-h5-font-size); + font-weight: var(--ifm-font-weight-semibold); + margin-bottom: 0.25rem; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.pills { + display: flex; + gap: var(--ifm-pills-spacing); + padding-left: 0; +} + +.pills__item { + border-radius: 0.5rem; + cursor: pointer; + display: inline-block; + font-weight: var(--ifm-font-weight-bold); + padding: 0.25rem 1rem; + transition: background var(--ifm-transition-fast) var(--ifm-transition-timing-default); + } + +.pills__item--active { + background: var(--ifm-pills-color-background-active); + color: var(--ifm-pills-color-active); + } + +.pills__item:not(.pills__item--active):hover { + background: var(--ifm-pills-color-background-active); + } + +.pills--block { + justify-content: stretch; + } + +.pills--block .pills__item { + flex-grow: 1; + text-align: center; + } + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.tabs { + color: var(--ifm-tabs-color); + display: flex; + font-weight: var(--ifm-font-weight-bold); + margin-bottom: 0; + overflow-x: auto; + padding-left: 0; +} + +.tabs__item { + border-bottom: 3px solid transparent; + border-radius: var(--ifm-global-radius); + cursor: pointer; + display: inline-flex; + padding: var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal); + transition: background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default); + } + +.tabs__item--active { + border-bottom-color: var(--ifm-tabs-color-active-border); + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + color: var(--ifm-tabs-color-active); + } + +.tabs__item:hover { + background-color: var(--ifm-hover-overlay); + } + +.tabs--block { + justify-content: stretch; + } + +.tabs--block .tabs__item { + flex-grow: 1; + justify-content: center; + } + +/* Mode */ + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +html[data-theme='dark'] { + --ifm-color-scheme: dark; + + --ifm-color-emphasis-0: var(--ifm-color-gray-1000); + --ifm-color-emphasis-100: var(--ifm-color-gray-900); + --ifm-color-emphasis-200: var(--ifm-color-gray-800); + --ifm-color-emphasis-300: var(--ifm-color-gray-700); + --ifm-color-emphasis-400: var(--ifm-color-gray-600); + --ifm-color-emphasis-500: var(--ifm-color-gray-500); + --ifm-color-emphasis-600: var(--ifm-color-gray-400); + --ifm-color-emphasis-700: var(--ifm-color-gray-300); + --ifm-color-emphasis-800: var(--ifm-color-gray-200); + --ifm-color-emphasis-900: var(--ifm-color-gray-100); + --ifm-color-emphasis-1000: var(--ifm-color-gray-0); + + --ifm-background-color: #1b1b1d; + --ifm-background-surface-color: #242526; + + --ifm-hover-overlay: rgba(255, 255, 255, 0.05); + + --ifm-color-content: #e3e3e3; + --ifm-color-content-secondary: rgba(255, 255, 255, 1); + + --ifm-breadcrumb-separator-filter: invert(64%) sepia(11%) saturate(0%) + hue-rotate(149deg) brightness(99%) contrast(95%); + + --ifm-code-background: rgba(255, 255, 255, 0.1); + + --ifm-scrollbar-track-background-color: #444444; + --ifm-scrollbar-thumb-background-color: #686868; + --ifm-scrollbar-thumb-hover-background-color: #7a7a7a; + + --ifm-table-stripe-background: rgba(255, 255, 255, 0.07); + + --ifm-toc-border-color: var(--ifm-color-emphasis-200); + --ifm-color-primary-contrast-background: rgb(16, 36, 69); + --ifm-color-primary-contrast-foreground: rgb(235, 242, 252); + --ifm-color-secondary-contrast-background: rgb(71, 71, 72); + --ifm-color-secondary-contrast-foreground: rgb(253, 253, 254); + --ifm-color-success-contrast-background: rgb(0, 49, 0); + --ifm-color-success-contrast-foreground: rgb(230, 246, 230); + --ifm-color-info-contrast-background: rgb(25, 60, 71); + --ifm-color-info-contrast-foreground: rgb(238, 249, 253); + --ifm-color-warning-contrast-background: rgb(77, 56, 0); + --ifm-color-warning-contrast-foreground: rgb(255, 248, 230); + --ifm-color-danger-contrast-background: rgb(75, 17, 19); + --ifm-color-danger-contrast-foreground: rgb(255, 235, 236) +} + +@media (min-width: 1440px) { + .container { + max-width: var(--ifm-container-width-xl); + } +} + +@media (max-width: 996px) { + .col { + --ifm-col-width: 100%; + flex-basis: var(--ifm-col-width); + margin-left: 0; + } + +.footer { + --ifm-footer-padding-horizontal: 0 +} + + .footer__link-separator { + display: none; + } + + .footer__col { + margin-bottom: calc(var(--ifm-spacing-vertical) * 3); + } + + .footer__link-item { + display: block; + } + +.hero { + padding-left: 0; + padding-right: 0 +} + +.navbar > .container, + .navbar > .container-fluid { + padding: 0 + } + +.navbar__toggle { + display: inherit + } + +.navbar__item { + display: none + } + +.navbar__search-input { + width: 9rem + } + +.pills--block { + flex-direction: column + } + +.tabs--block { + flex-direction: column + } +} + +@media (max-width: 576px) { + .markdown h1:first-child { + --ifm-h1-font-size: 2rem; + } + .markdown > h2 { + --ifm-h2-font-size: 1.5rem; + } + .markdown > h3 { + --ifm-h3-font-size: 1.25rem; + } +} + +@media (pointer: fine) { + .thin-scrollbar { + scrollbar-width: thin; + } + .thin-scrollbar::-webkit-scrollbar { + height: var(--ifm-scrollbar-size); + width: var(--ifm-scrollbar-size); + } + .thin-scrollbar::-webkit-scrollbar-track { + background: var(--ifm-scrollbar-track-background-color); + border-radius: 10px; + } + .thin-scrollbar::-webkit-scrollbar-thumb { + background: var(--ifm-scrollbar-thumb-background-color); + border-radius: 10px; + } + .thin-scrollbar::-webkit-scrollbar-thumb:hover { + background: var(--ifm-scrollbar-thumb-hover-background-color); + } +} + +@media (prefers-reduced-motion: reduce) { + :root { + --ifm-transition-fast: 0ms; + --ifm-transition-slow: 0ms; + } +} + +@media print { + +.table-of-contents { + display: none +} + +.footer { + display: none +} + +.menu { + display: none +} + +.navbar { + display: none +} + +.pagination-nav { + display: none +} + +.tabs { + page-break-inside: avoid +} +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * Styles for NProgress + * Copied over to remove unused styles for the spinner. + * https://github.com/rstacruz/nprogress/blob/master/nprogress.css + */ + +:root { + --docusaurus-progress-bar-color: var(--ifm-color-primary); +} + +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + background: var(--docusaurus-progress-bar-color); + position: fixed; + z-index: 1031; + top: 0; + left: 0; + width: 100%; + height: 2px; +} + +#nprogress .peg { + position: absolute; + right: 0; + width: 100px; + height: 100%; + box-shadow: 0 0 10px var(--docusaurus-progress-bar-color), + 0 0 5px var(--docusaurus-progress-bar-color); + opacity: 1; + transform: rotate(3deg) translate(0, -4px); +} + +.card { + background-color: var(--ifm-table-head-background); +} +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ + +/* +:root { + --ifm-color-primary: #ffa729; + --ifm-color-primary-dark: #ff9b0b; + --ifm-color-primary-darker: #fc9400; + --ifm-color-primary-darkest: #cf7a00; + --ifm-color-primary-light: #ffb347; + --ifm-color-primary-lighter: #ffb955; + --ifm-color-primary-lightest: #ffcc82; +} +[data-theme='dark'] { + --ifm-color-primary: #4aafff; + --ifm-color-primary-dark: #29a0ff; + --ifm-color-primary-darker: #1999ff; + --ifm-color-primary-darkest: #0081e6; + --ifm-color-primary-light: #6bbeff; + --ifm-color-primary-lighter: #7bc5ff; + --ifm-color-primary-lightest: #addbff; +} + +*/ + +:root { + --ifm-color-primary: #4aafff; + --ifm-color-primary-dark: #29a0ff; + --ifm-color-primary-darker: #1999ff; + --ifm-color-primary-darkest: #0081e6; + --ifm-color-primary-light: #6bbeff; + --ifm-color-primary-lighter: #7bc5ff; + --ifm-color-primary-lightest: #addbff; +} +[data-theme='dark'] { + --ifm-color-primary: #ffa729; + --ifm-color-primary-dark: #ff9b0b; + --ifm-color-primary-darker: #fc9400; + --ifm-color-primary-darkest: #cf7a00; + --ifm-color-primary-light: #ffb347; + --ifm-color-primary-lighter: #ffb955; + --ifm-color-primary-lightest: #ffcc82; +} + + +.grid-container { + display: grid; + gap: 10px; + grid-template-columns: auto auto auto auto; + padding: 5px; +} + +.grid-item { + background-color: var(--ifm-color-secondary-dark); + border: 1px solid rgba(0, 0, 0, 0.8); + padding: 20px; + font-size: 20px; + text-align: center; + border-radius: 7px; + color: #000; +} + +/* Styling one class specially in dark mode */ +[data-theme='dark'] .grid-item { + color: #fff; + background-color: #474748; +} + + +.docusaurus-highlight-code-line { + background-color: rgba(0, 0, 0, 0.1); + +} + +html[data-theme='dark'] .docusaurus-highlight-code-line { + background-color: rgba(0, 0, 0, 0.3); +} + +[data-theme='dark'] p code { + border: 1px solid var(--ifm-color-emphasis-100); + background-color: #282A36; + } + +[data-theme='dark'] li code { + border: 1px solid var(--ifm-color-emphasis-100); + background-color: #282A36; + } + + + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +body:not(.navigation-with-keyboard) *:not(input):focus { + outline: none; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#__docusaurus-base-url-issue-banner-container { + display: none; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.skipToContent_node_modules-\@docusaurus-theme-classic-lib-theme-SkipToContent-styles-module { + position: fixed; + top: 1rem; + left: 100%; + z-index: calc(var(--ifm-z-index-fixed) + 1); + padding: calc(var(--ifm-global-spacing) / 2) var(--ifm-global-spacing); + color: var(--ifm-color-emphasis-900); + background-color: var(--ifm-background-surface-color); +} + +.skipToContent_node_modules-\@docusaurus-theme-classic-lib-theme-SkipToContent-styles-module:focus { + left: 1rem; + box-shadow: var(--ifm-global-shadow-md); +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.closeButton_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-CloseButton-styles-module { + padding: 0; + line-height: 0; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.content_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-Content-styles-module { + font-size: 85%; + text-align: center; + padding: 5px 0; +} + +.content_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-Content-styles-module a { + color: inherit; + text-decoration: underline; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +:root { + --docusaurus-announcement-bar-height: auto; +} + +.announcementBar_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module { + display: flex; + align-items: center; + height: var(--docusaurus-announcement-bar-height); + background-color: var(--ifm-color-white); + color: var(--ifm-color-black); + + /* + Unfortunately we can't make announcement bar render above the navbar + IE need to use border-bottom instead of shadow + See https://github.com/facebookincubator/infima/issues/275 + + box-shadow: var(--ifm-global-shadow-lw); + z-index: calc(var(--ifm-z-index-fixed) + 1); + */ + border-bottom: 1px solid var(--ifm-color-emphasis-100); +} + +html[data-announcement-bar-initially-dismissed='true'] .announcementBar_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module { + display: none; +} + +.announcementBarPlaceholder_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module { + flex: 0 0 10px; +} + +.announcementBarClose_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module { + flex: 0 0 30px; + align-self: stretch; +} + +.announcementBarContent_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module { + flex: 1 1 auto; +} + +@media print { + .announcementBar_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module { + display: none; + } +} + +@media (min-width: 997px) { + :root { + --docusaurus-announcement-bar-height: 30px; + } + + .announcementBarPlaceholder_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module, + .announcementBarClose_node_modules-\@docusaurus-theme-classic-lib-theme-AnnouncementBar-styles-module { + flex-basis: 50px; + } +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.toggle_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module { + width: 2rem; + height: 2rem; +} + +.toggleButton_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module { + -webkit-tap-highlight-color: transparent; + align-items: center; + display: flex; + justify-content: center; + width: 100%; + height: 100%; + border-radius: 50%; + transition: background var(--ifm-transition-fast); +} + +.toggleButton_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module:hover { + background: var(--ifm-color-emphasis-200); +} + +[data-theme='light'] .darkToggleIcon_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module, +[data-theme='dark'] .lightToggleIcon_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module { + display: none; +} + +.toggleButtonDisabled_node_modules-\@docusaurus-theme-classic-lib-theme-ColorModeToggle-styles-module { + cursor: not-allowed; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.darkNavbarColorModeToggle_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-ColorModeToggle-styles-module:hover { + background: var(--ifm-color-gray-800); +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.themedImage_node_modules-\@docusaurus-theme-classic-lib-theme-ThemedImage-styles-module { + display: none; +} + +[data-theme='light'] .themedImage--light_node_modules-\@docusaurus-theme-classic-lib-theme-ThemedImage-styles-module { + display: initial; +} + +[data-theme='dark'] .themedImage--dark_node_modules-\@docusaurus-theme-classic-lib-theme-ThemedImage-styles-module { + display: initial; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.iconExternalLink_node_modules-\@docusaurus-theme-classic-lib-theme-Icon-ExternalLink-styles-module { + margin-left: 0.3rem; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.iconLanguage_node_modules-\@docusaurus-theme-classic-lib-theme-NavbarItem-LocaleDropdownNavbarItem-styles-module { + vertical-align: text-bottom; + margin-right: 5px; +} + +/*! @algolia/autocomplete-theme-classic 1.7.3 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */ +:root{--aa-search-input-height:44px;--aa-input-icon-size:20px;--aa-base-unit:16;--aa-spacing-factor:1;--aa-spacing:calc(var(--aa-base-unit)*var(--aa-spacing-factor)*1px);--aa-spacing-half:calc(var(--aa-spacing)/2);--aa-panel-max-height:650px;--aa-base-z-index:9999;--aa-font-size:calc(var(--aa-base-unit)*1px);--aa-font-family:inherit;--aa-font-weight-medium:500;--aa-font-weight-semibold:600;--aa-font-weight-bold:700;--aa-icon-size:20px;--aa-icon-stroke-width:1.6;--aa-icon-color-rgb:119,119,163;--aa-icon-color-alpha:1;--aa-action-icon-size:20px;--aa-text-color-rgb:38,38,39;--aa-text-color-alpha:1;--aa-primary-color-rgb:62,52,211;--aa-primary-color-alpha:0.2;--aa-muted-color-rgb:128,126,163;--aa-muted-color-alpha:0.6;--aa-panel-border-color-rgb:128,126,163;--aa-panel-border-color-alpha:0.3;--aa-input-border-color-rgb:128,126,163;--aa-input-border-color-alpha:0.8;--aa-background-color-rgb:255,255,255;--aa-background-color-alpha:1;--aa-input-background-color-rgb:255,255,255;--aa-input-background-color-alpha:1;--aa-selected-color-rgb:179,173,214;--aa-selected-color-alpha:0.205;--aa-description-highlight-background-color-rgb:245,223,77;--aa-description-highlight-background-color-alpha:0.5;--aa-detached-media-query:(max-width:680px);--aa-detached-modal-media-query:(min-width:680px);--aa-detached-modal-max-width:680px;--aa-detached-modal-max-height:500px;--aa-overlay-color-rgb:115,114,129;--aa-overlay-color-alpha:0.4;--aa-panel-shadow:0 0 0 1px rgba(35,38,59,0.1),0 6px 16px -4px rgba(35,38,59,0.15);--aa-scrollbar-width:13px;--aa-scrollbar-track-background-color-rgb:234,234,234;--aa-scrollbar-track-background-color-alpha:1;--aa-scrollbar-thumb-background-color-rgb:var(--aa-background-color-rgb);--aa-scrollbar-thumb-background-color-alpha:1}@media (hover:none) and (pointer:coarse){:root{--aa-spacing-factor:1.2;--aa-action-icon-size:22px}}body.dark,body[data-theme=dark]{--aa-text-color-rgb:183,192,199;--aa-primary-color-rgb:146,138,255;--aa-muted-color-rgb:146,138,255;--aa-input-background-color-rgb:0,3,9;--aa-background-color-rgb:21,24,42;--aa-selected-color-rgb:146,138,255;--aa-selected-color-alpha:0.25;--aa-description-highlight-background-color-rgb:0 255 255;--aa-description-highlight-background-color-alpha:0.25;--aa-icon-color-rgb:119,119,163;--aa-panel-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--aa-scrollbar-track-background-color-rgb:44,46,64;--aa-scrollbar-thumb-background-color-rgb:var(--aa-background-color-rgb)}.aa-Autocomplete *,.aa-DetachedFormContainer *,.aa-Panel *{box-sizing:border-box}.aa-Autocomplete,.aa-DetachedFormContainer,.aa-Panel{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-family:inherit;font-family:var(--aa-font-family);font-size:16px;font-size:var(--aa-font-size);font-weight:400;line-height:1em;margin:0;padding:0;text-align:left}.aa-Form{align-items:center;background-color:#fff;background-color:rgba(var(--aa-input-background-color-rgb),var(--aa-input-background-color-alpha));border:1px solid rgba(128,126,163,.8);border:1px solid rgba(var(--aa-input-border-color-rgb),var(--aa-input-border-color-alpha));border-radius:3px;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Form[focus-within]{border-color:#3e34d3;border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:medium none currentColor}.aa-Form:focus-within{border-color:#3e34d3;border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:0 0 0 2px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:medium none currentColor}.aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;height:44px;height:var(--aa-search-input-height);order:1}.aa-Label,.aa-LoadingIndicator{cursor:auto;flex-shrink:0;height:100%;padding:0;text-align:left}.aa-Label svg,.aa-LoadingIndicator svg{color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1);height:auto;max-height:20px;max-height:var(--aa-input-icon-size);stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);width:20px;width:var(--aa-input-icon-size)}.aa-LoadingIndicator,.aa-SubmitButton{height:100%;padding-left:11px;padding-left:calc(var(--aa-spacing)*0.75 - 1px);padding-right:8px;padding-right:var(--aa-spacing-half);width:47px;width:calc(var(--aa-spacing)*1.75 + var(--aa-icon-size) - 1px)}@media (hover:none) and (pointer:coarse){.aa-LoadingIndicator,.aa-SubmitButton{padding-left:3px;padding-left:calc(var(--aa-spacing-half)/2 - 1px);width:39px;width:calc(var(--aa-icon-size) + var(--aa-spacing)*1.25 - 1px)}}.aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-LoadingIndicator[hidden]{display:none}.aa-InputWrapper{order:3;position:relative;width:100%}.aa-Input{appearance:none;background:none;border:0;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font:inherit;height:44px;height:var(--aa-search-input-height);padding:0;width:100%}.aa-Input::placeholder{color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));opacity:1}.aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Input::-webkit-search-cancel-button,.aa-Input::-webkit-search-decoration,.aa-Input::-webkit-search-results-button,.aa-Input::-webkit-search-results-decoration{appearance:none}.aa-InputWrapperSuffix{align-items:center;display:flex;height:44px;height:var(--aa-search-input-height);order:4}.aa-ClearButton{align-items:center;background:none;border:0;color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;height:100%;margin:0;padding:0 12.8333333333px;padding:0 calc(var(--aa-spacing)*0.83333 - .5px)}@media (hover:none) and (pointer:coarse){.aa-ClearButton{padding:0 10.1666666667px;padding:0 calc(var(--aa-spacing)*0.66667 - .5px)}}.aa-ClearButton:focus,.aa-ClearButton:hover{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha))}.aa-ClearButton[hidden]{display:none}.aa-ClearButton svg{stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);width:20px;width:var(--aa-icon-size)}.aa-Panel{background-color:#fff;background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:4px;border-radius:calc(var(--aa-spacing)/4);box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:var(--aa-panel-shadow);margin:8px 0 0;overflow:hidden;position:absolute;transition:opacity .2s ease-in,filter .2s ease-in}@media screen and (prefers-reduced-motion){.aa-Panel{transition:none}}.aa-Panel button{appearance:none;background:none;border:0;margin:0;padding:0}.aa-PanelLayout{height:100%;margin:0;max-height:650px;max-height:var(--aa-panel-max-height);overflow-y:auto;padding:0;position:relative;text-align:left}.aa-PanelLayoutColumns--twoGolden{display:grid;grid-template-columns:39.2% auto;overflow:hidden;padding:0}.aa-PanelLayoutColumns--two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;padding:0}.aa-PanelLayoutColumns--three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;padding:0}.aa-Panel--stalled .aa-Source{filter:grayscale(1);opacity:.8}.aa-Panel--scrollable{margin:0;max-height:650px;max-height:var(--aa-panel-max-height);overflow-x:hidden;overflow-y:auto;padding:8px;padding:var(--aa-spacing-half);scrollbar-color:#fff #eaeaea;scrollbar-color:rgba(var(--aa-scrollbar-thumb-background-color-rgb),var(--aa-scrollbar-thumb-background-color-alpha)) rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha));scrollbar-width:thin}.aa-Panel--scrollable::-webkit-scrollbar{width:13px;width:var(--aa-scrollbar-width)}.aa-Panel--scrollable::-webkit-scrollbar-track{background-color:#eaeaea;background-color:rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha))}.aa-Panel--scrollable::-webkit-scrollbar-thumb{background-color:#fff;background-color:rgba(var(--aa-scrollbar-thumb-background-color-rgb),var(--aa-scrollbar-thumb-background-color-alpha));border-radius:9999px;border:3px solid #eaeaea;border-color:rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha));border-right:2px solid rgba(var(--aa-scrollbar-track-background-color-rgb),var(--aa-scrollbar-track-background-color-alpha))}.aa-Source{margin:0;padding:0;position:relative;width:100%}.aa-Source:empty{display:none}.aa-SourceNoResults{font-size:1em;margin:0;padding:16px;padding:var(--aa-spacing)}.aa-List{list-style:none;margin:0}.aa-List,.aa-SourceHeader{padding:0;position:relative}.aa-SourceHeader{margin:8px .5em 8px 0;margin:var(--aa-spacing-half) .5em var(--aa-spacing-half) 0}.aa-SourceHeader:empty{display:none}.aa-SourceHeaderTitle{background:#fff;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1);display:inline-block;font-size:.8em;font-weight:600;font-weight:var(--aa-font-weight-semibold);margin:0;padding:0 8px 0 0;padding:0 var(--aa-spacing-half) 0 0;position:relative;z-index:9999;z-index:var(--aa-base-z-index)}.aa-SourceHeaderLine{border-bottom:1px solid #3e34d3;border-bottom:1px solid rgba(var(--aa-primary-color-rgb),1);display:block;height:2px;left:0;margin:0;opacity:.3;padding:0;position:absolute;right:0;top:8px;top:var(--aa-spacing-half);z-index:9998;z-index:calc(var(--aa-base-z-index) - 1)}.aa-SourceFooterSeeAll{background:linear-gradient(180deg,#fff,rgba(128,126,163,.14));background:linear-gradient(180deg,rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha)),rgba(128,126,163,.14));border:1px solid rgba(128,126,163,.6);border:1px solid rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));border-radius:5px;box-shadow:inset 0 0 2px #fff,0 2px 2px -1px rgba(76,69,88,.15);color:inherit;font-size:.95em;font-weight:500;font-weight:var(--aa-font-weight-medium);padding:.475em 1em .6em;text-decoration:none}.aa-SourceFooterSeeAll:focus,.aa-SourceFooterSeeAll:hover{border:1px solid #3e34d3;border:1px solid rgba(var(--aa-primary-color-rgb),1);color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1)}.aa-Item{align-items:center;border-radius:3px;cursor:pointer;display:grid;min-height:40px;min-height:calc(var(--aa-spacing)*2.5);padding:4px;padding:calc(var(--aa-spacing-half)/2)}.aa-Item[aria-selected=true]{background-color:rgba(179,173,214,.205);background-color:rgba(var(--aa-selected-color-rgb),var(--aa-selected-color-alpha))}.aa-Item[aria-selected=true] .aa-ActiveOnly,.aa-Item[aria-selected=true] .aa-ItemActionButton{visibility:visible}.aa-ItemIcon{align-items:center;background:#fff;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:3px;box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));color:#7777a3;color:rgba(var(--aa-icon-color-rgb),var(--aa-icon-color-alpha));display:flex;flex-shrink:0;font-size:.7em;height:28px;height:calc(var(--aa-icon-size) + var(--aa-spacing-half));justify-content:center;overflow:hidden;stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);text-align:center;width:28px;width:calc(var(--aa-icon-size) + var(--aa-spacing-half))}.aa-ItemIcon img{height:auto;max-height:20px;max-height:calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px);max-width:20px;max-width:calc(var(--aa-icon-size) + var(--aa-spacing-half) - 8px);width:auto}.aa-ItemIcon svg{height:20px;height:var(--aa-icon-size);width:20px;width:var(--aa-icon-size)}.aa-ItemIcon--alignTop{align-self:flex-start}.aa-ItemIcon--noBorder{background:none;box-shadow:none}.aa-ItemIcon--picture{height:96px;width:96px}.aa-ItemIcon--picture img{max-height:100%;max-width:100%;padding:8px;padding:var(--aa-spacing-half)}.aa-ItemContent{align-items:center;cursor:pointer;display:grid;grid-gap:8px;gap:8px;grid-gap:var(--aa-spacing-half);gap:var(--aa-spacing-half);grid-auto-flow:column;line-height:1.25em;overflow:hidden}.aa-ItemContent:empty{display:none}.aa-ItemContent mark{background:none;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-style:normal;font-weight:700;font-weight:var(--aa-font-weight-bold)}.aa-ItemContent--dual{display:flex;flex-direction:column;justify-content:space-between;text-align:left}.aa-ItemContent--dual .aa-ItemContentSubtitle,.aa-ItemContent--dual .aa-ItemContentTitle{display:block}.aa-ItemContent--indented{padding-left:36px;padding-left:calc(var(--aa-icon-size) + var(--aa-spacing))}.aa-ItemContentBody{display:grid;grid-gap:4px;gap:4px;grid-gap:calc(var(--aa-spacing-half)/2);gap:calc(var(--aa-spacing-half)/2)}.aa-ItemContentTitle{display:inline-block;margin:0 .5em 0 0;max-width:100%;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.aa-ItemContentSubtitle{font-size:.92em}.aa-ItemContentSubtitleIcon:before{border-color:rgba(128,126,163,.64);border-color:rgba(var(--aa-muted-color-rgb),.64);border-style:solid;content:"";display:inline-block;left:1px;position:relative;top:-3px}.aa-ItemContentSubtitle--inline .aa-ItemContentSubtitleIcon:before{border-width:0 0 1.5px;margin-left:8px;margin-left:var(--aa-spacing-half);margin-right:4px;margin-right:calc(var(--aa-spacing-half)/2);width:10px;width:calc(var(--aa-spacing-half) + 2px)}.aa-ItemContentSubtitle--standalone{align-items:center;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));display:grid;grid-gap:8px;gap:8px;grid-gap:var(--aa-spacing-half);gap:var(--aa-spacing-half);grid-auto-flow:column;justify-content:start}.aa-ItemContentSubtitle--standalone .aa-ItemContentSubtitleIcon:before{border-radius:0 0 0 3px;border-width:0 0 1.5px 1.5px;height:8px;height:var(--aa-spacing-half);width:8px;width:var(--aa-spacing-half)}.aa-ItemContentSubtitleCategory{color:#807ea3;color:rgba(var(--aa-muted-color-rgb),1);font-weight:500}.aa-ItemContentDescription{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-size:.85em;max-width:100%;overflow-x:hidden;text-overflow:ellipsis}.aa-ItemContentDescription:empty{display:none}.aa-ItemContentDescription mark{background:rgba(245,223,77,.5);background:rgba(var(--aa-description-highlight-background-color-rgb),var(--aa-description-highlight-background-color-alpha));color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));font-style:normal;font-weight:500;font-weight:var(--aa-font-weight-medium)}.aa-ItemContentDash{color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));display:none;opacity:.4}.aa-ItemContentTag{background-color:rgba(62,52,211,.2);background-color:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha));border-radius:3px;margin:0 .4em 0 0;padding:.08em .3em}.aa-ItemLink,.aa-ItemWrapper{align-items:center;color:inherit;display:grid;grid-gap:4px;gap:4px;grid-gap:calc(var(--aa-spacing-half)/2);gap:calc(var(--aa-spacing-half)/2);grid-auto-flow:column;justify-content:space-between;width:100%}.aa-ItemLink{color:inherit;text-decoration:none}.aa-ItemActions{display:grid;grid-auto-flow:column;height:100%;justify-self:end;margin:0 -5.3333333333px;margin:0 calc(var(--aa-spacing)/-3);padding:0 2px 0 0}.aa-ItemActionButton{align-items:center;background:none;border:0;color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;flex-shrink:0;padding:0}.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha))}@media (hover:none) and (pointer:coarse){.aa-ItemActionButton:focus svg,.aa-ItemActionButton:hover svg{color:inherit}}.aa-ItemActionButton svg{color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));margin:5.3333333333px;margin:calc(var(--aa-spacing)/3);stroke-width:1.6;stroke-width:var(--aa-icon-stroke-width);width:20px;width:var(--aa-action-icon-size)}.aa-ActiveOnly{visibility:hidden}.aa-PanelHeader{align-items:center;background:#3e34d3;background:rgba(var(--aa-primary-color-rgb),1);color:#fff;display:grid;height:var(--aa-modal-header-height);margin:0;padding:8px 16px;padding:var(--aa-spacing-half) var(--aa-spacing);position:relative}.aa-PanelHeader:after{background-image:linear-gradient(#fff,hsla(0,0%,100%,0));background-image:linear-gradient(rgba(var(--aa-background-color-rgb),1),rgba(var(--aa-background-color-rgb),0));bottom:-8px;bottom:calc(var(--aa-spacing-half)*-1);content:"";height:8px;height:var(--aa-spacing-half);left:0;pointer-events:none;position:absolute;right:0}.aa-PanelFooter,.aa-PanelHeader:after{z-index:9999;z-index:var(--aa-base-z-index)}.aa-PanelFooter{background-color:#fff;background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));box-shadow:inset 0 1px 0 rgba(128,126,163,.3);box-shadow:inset 0 1px 0 rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));display:flex;justify-content:space-between;margin:0;padding:16px;padding:var(--aa-spacing);position:relative}.aa-PanelFooter:after{background-image:linear-gradient(hsla(0,0%,100%,0),rgba(128,126,163,.6));background-image:linear-gradient(rgba(var(--aa-background-color-rgb),0),rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha)));content:"";height:16px;height:var(--aa-spacing);left:0;opacity:.12;pointer-events:none;position:absolute;right:0;top:-16px;top:calc(var(--aa-spacing)*-1);z-index:9998;z-index:calc(var(--aa-base-z-index) - 1)}.aa-DetachedContainer{background:#fff;background:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));bottom:0;box-shadow:0 0 0 1px rgba(35,38,59,.1),0 6px 16px -4px rgba(35,38,59,.15);box-shadow:var(--aa-panel-shadow);display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:9999;z-index:var(--aa-base-z-index)}.aa-DetachedContainer:after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:8px 0 8px 2px;margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;background-color:rgba(var(--aa-background-color-rgb),var(--aa-background-color-alpha));border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{border-bottom:1px solid rgba(128,126,163,.3);border-bottom:1px solid rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha));display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:8px;padding:var(--aa-spacing-half)}.aa-DetachedCancelButton{background:none;border:0;border-radius:3px;color:inherit;color:#262627;color:rgba(var(--aa-text-color-rgb),var(--aa-text-color-alpha));cursor:pointer;font:inherit;margin:0 0 0 8px;margin:0 0 0 var(--aa-spacing-half);padding:0 8px;padding:0 var(--aa-spacing-half)}.aa-DetachedCancelButton:focus,.aa-DetachedCancelButton:hover{box-shadow:inset 0 0 0 1px rgba(128,126,163,.3);box-shadow:inset 0 0 0 1px rgba(var(--aa-panel-border-color-rgb),var(--aa-panel-border-color-alpha))}.aa-DetachedContainer--modal{border-radius:6px;bottom:inherit;height:auto;margin:0 auto;max-width:680px;max-width:var(--aa-detached-modal-max-width);position:absolute;top:3%}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:500px;max-height:var(--aa-detached-modal-max-height);padding-bottom:8px;padding-bottom:var(--aa-spacing-half);position:static}.aa-DetachedSearchButton{align-items:center;background-color:#fff;background-color:rgba(var(--aa-input-background-color-rgb),var(--aa-input-background-color-alpha));border:1px solid rgba(128,126,163,.8);border:1px solid rgba(var(--aa-input-border-color-rgb),var(--aa-input-border-color-alpha));border-radius:3px;color:rgba(128,126,163,.6);color:rgba(var(--aa-muted-color-rgb),var(--aa-muted-color-alpha));cursor:pointer;display:flex;font:inherit;font-family:inherit;font-family:var(--aa-font-family);font-size:16px;font-size:var(--aa-font-size);height:44px;height:var(--aa-search-input-height);margin:0;padding:0 5.5px;padding:0 calc(var(--aa-search-input-height)/8);position:relative;text-align:left;width:100%}.aa-DetachedSearchButton:focus{border-color:#3e34d3;border-color:rgba(var(--aa-primary-color-rgb),1);box-shadow:0 0 0 3px rgba(62,52,211,.2),inset 0 0 0 2px rgba(62,52,211,.2);box-shadow:rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 3px,inset rgba(var(--aa-primary-color-rgb),var(--aa-primary-color-alpha)) 0 0 0 2px;outline:medium none currentColor}.aa-DetachedSearchButtonIcon{align-items:center;color:#3e34d3;color:rgba(var(--aa-primary-color-rgb),1);cursor:auto;display:flex;height:100%;justify-content:center;width:36px;width:calc(var(--aa-icon-size) + var(--aa-spacing))}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(115,114,129,.4);background-color:rgba(var(--aa-overlay-color-rgb),var(--aa-overlay-color-alpha));height:100vh;left:0;margin:0;padding:0;position:fixed;right:0;top:0;z-index:9998;z-index:calc(var(--aa-base-z-index) - 1)}.aa-GradientBottom,.aa-GradientTop{height:8px;height:var(--aa-spacing-half);left:0;pointer-events:none;position:absolute;right:0;z-index:9999;z-index:var(--aa-base-z-index)}.aa-GradientTop{background-image:linear-gradient(#fff,hsla(0,0%,100%,0));background-image:linear-gradient(rgba(var(--aa-background-color-rgb),1),rgba(var(--aa-background-color-rgb),0));top:0}.aa-GradientBottom{background-image:linear-gradient(hsla(0,0%,100%,0),#fff);background-image:linear-gradient(rgba(var(--aa-background-color-rgb),0),rgba(var(--aa-background-color-rgb),1));border-bottom-left-radius:4px;border-bottom-left-radius:calc(var(--aa-spacing)/4);border-bottom-right-radius:4px;border-bottom-right-radius:calc(var(--aa-spacing)/4);bottom:0}@media (hover:none) and (pointer:coarse){.aa-DesktopOnly{display:none}}@media (hover:hover){.aa-TouchOnly{display:none}} +:root { + --aa-search-input-height: 36px; +} + +body.dark, +body[data-theme="dark"] { + --aa-muted-color-alpha: 1; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@media (max-width: 996px) { + .searchBox_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Search-styles-module { + position: absolute; + right: var(--ifm-navbar-padding-horizontal); + } +} + +@media (min-width: 997px) { + .searchBox_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Search-styles-module { + padding: var(--ifm-navbar-item-padding-vertical) + var(--ifm-navbar-item-padding-horizontal); + } +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.navbarHideable_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Layout-styles-module { + transition: transform var(--ifm-transition-fast) ease; +} + +.navbarHidden_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Layout-styles-module { + transform: translate3d(0, calc(-100% - 2px), 0); +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* +Hide color mode toggle in small viewports + */ +@media (max-width: 996px) { + .colorModeToggle_node_modules-\@docusaurus-theme-classic-lib-theme-Navbar-Content-styles-module { + display: none; + } +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.errorBoundaryError_node_modules-\@docusaurus-theme-common-lib-utils-errorBoundaryUtils-module { + white-space: pre-wrap; + color: red; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.footerLogoLink_node_modules-\@docusaurus-theme-classic-lib-theme-Footer-Logo-styles-module { + opacity: 0.5; + transition: opacity var(--ifm-transition-fast) + var(--ifm-transition-timing-default); +} + +.footerLogoLink_node_modules-\@docusaurus-theme-classic-lib-theme-Footer-Logo-styles-module:hover { + opacity: 1; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +html, +body { + height: 100%; +} + +.mainWrapper_node_modules-\@docusaurus-theme-classic-lib-theme-Layout-styles-module { + flex: 1 0 auto; + display: flex; + flex-direction: column; +} + +/* Docusaurus-specific utility class */ +.docusaurus-mt-lg { + margin-top: 3rem; +} + +#__docusaurus { + min-height: 100%; + display: flex; + flex-direction: column; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.container_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module { + padding: 20px; + padding-top: 80px; + overflow-x: hidden; + background-color: #18191a; + color: white; + min-height: 100vh; +} + +.container_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module code { + color: white; + background-color: #444950; +} + +.nav_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module { + position: fixed; + display: flex; + justify-content: space-evenly; + align-items: center; + height: 3.75rem; + background-color: #242526; + width: 100%; + z-index: 1; +} + +.navlink_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module { + color: white; + font-weight: 500; + font-size: clamp(12px, 4vw, 16px); + text-align: center; + border-radius: 4px; + padding: 6px; +} + +.navlink_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module:hover { + text-decoration: none; + background-color: #292a2b; +} + +.active_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module { + background-color: #363739; +} + +@media screen and (min-width: 800px) { + .nav_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module { + flex-direction: column; + justify-content: flex-start; + align-items: center; + height: 100vh; + width: 200px; + float: left; + background-color: #18191a; + border-right: 1px solid #606770; + padding-top: 20px; + } + + .navlink_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module { + width: 80%; + margin-top: 20px; + text-align: left; + } + + .container_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugLayout-styles-module { + padding-top: 40px; + float: right; + width: calc(100% - 200px); + } +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.listItem_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugRegistry-styles-module { + background-color: #242526; + padding: 10px; + border-radius: 4px; + margin-bottom: 20px; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.listItem_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugRoutes-styles-module { + background-color: #242526; + padding: 10px; + border-radius: 4px; + margin-bottom: 20px; +} + +.route_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugRoutes-styles-module { + margin-bottom: 10px; +} + +.routeName_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugRoutes-styles-module { + color: #e06b6b; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.sectionTitle_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugSiteMetadata-styles-module { + margin-top: 20px; +} + +.listItem_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugSiteMetadata-styles-module { + background-color: #242526; + padding: 10px; + border-radius: 4px; + margin-bottom: 20px; +} + +.version_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugSiteMetadata-styles-module { + float: right; +} + +.name_node_modules-\@docusaurus-plugin-debug-lib-theme-DebugSiteMetadata-styles-module { + font-weight: 800; + color: #e06b6b; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.cardContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocCard-styles-module { + --ifm-link-color: var(--ifm-color-emphasis-800); + --ifm-link-hover-color: var(--ifm-color-emphasis-700); + --ifm-link-hover-decoration: none; + + box-shadow: 0 1.5px 3px 0 rgb(0 0 0 / 15%); + border: 1px solid var(--ifm-color-emphasis-200); + transition: all var(--ifm-transition-fast) ease; + transition-property: border, box-shadow; +} + +.cardContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocCard-styles-module:hover { + border-color: var(--ifm-color-primary); + box-shadow: 0 3px 6px 0 rgb(0 0 0 / 20%); +} + +.cardContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocCard-styles-module *:last-child { + margin-bottom: 0; +} + +.cardTitle_node_modules-\@docusaurus-theme-classic-lib-theme-DocCard-styles-module { + font-size: 1.2rem; +} + +.cardDescription_node_modules-\@docusaurus-theme-classic-lib-theme-DocCard-styles-module { + font-size: 0.8rem; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.iconEdit_node_modules-\@docusaurus-theme-classic-lib-theme-Icon-Edit-styles-module { + margin-right: 0.3em; + vertical-align: sub; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +:root { + --docusaurus-tag-list-border: var(--ifm-color-emphasis-300); +} + +.tag_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module { + border: 1px solid var(--docusaurus-tag-list-border); + transition: border var(--ifm-transition-fast); +} + +.tag_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module:hover { + --docusaurus-tag-list-border: var(--ifm-link-color); + text-decoration: none; +} + +.tagRegular_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module { + border-radius: var(--ifm-global-radius); + padding: 0.2rem 0.5rem 0.3rem; + font-size: 90%; +} + +.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module { + display: flex; + align-items: center; + position: relative; + padding: 0 0.5rem 0 1rem; + border-left: 0; +} + +.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module::before, +.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module::after { + content: ''; + position: absolute; + top: 50%; + border: 1px solid var(--docusaurus-tag-list-border); + transition: inherit; +} + +.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module::before { + right: 100%; + transform: translate(50%, -50%) rotate(-45deg); + width: 1.18rem; + height: 1.18rem; + border-right: 0; + border-bottom: 0; +} + +.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module::after { + left: 0; + transform: translateY(-50%); + width: 0.5rem; + height: 0.5rem; + border-radius: 50%; +} + +.tagWithCount_node_modules-\@docusaurus-theme-classic-lib-theme-Tag-styles-module span { + background: var(--ifm-color-secondary); + color: var(--ifm-color-black); + font-size: 0.7rem; + line-height: 1.2; + border-radius: var(--ifm-global-radius); + padding: 0.1rem 0.4rem; + margin-left: 0.3rem; } +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ -.twitter-tweet { - margin: 10px auto; +.tags_node_modules-\@docusaurus-theme-classic-lib-theme-TagsListInline-styles-module { + display: inline; +} + +.tag_node_modules-\@docusaurus-theme-classic-lib-theme-TagsListInline-styles-module { + margin: 0 0.4rem 0.5rem 0; + display: inline-block; } -/* .blogPageInner .blog-article img:first-of-type { - text-align: center; - margin-left: auto; - margin-right: auto; -} */ -p code { - border: 1px solid #AAB; - background-color: #EFEFEF; - padding: 0 3px; - margin: 0 1px; - border-radius: 4px; - word-wrap: anywhere; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.lastUpdated_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-Footer-styles-module { + margin-top: 0.2rem; + font-style: italic; + font-size: smaller; } -.highlight code { - font-family: monospace; + +@media (min-width: 997px) { + .lastUpdated_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-Footer-styles-module { + text-align: right; + } } -.blogPageInner .blog-article ol { - font-size: 18px; - line-height: 26px; - padding-left: 18px; - margin: 40px 0; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.tocCollapsibleButton_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-CollapseButton-styles-module { + font-size: inherit; + display: flex; + justify-content: space-between; + align-items: center; + padding: 0.4rem 0.8rem; + width: 100%; } -.blogPageInner .blog-article ol > li { - list-style-type: decimal; - font-size: 18px; - line-height: 26px; +.tocCollapsibleButton_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-CollapseButton-styles-module::after { + content: ''; + background: var(--ifm-menu-link-sublist-icon) 50% 50% / 2rem 2rem no-repeat; + filter: var(--ifm-menu-link-sublist-icon-filter); + height: 1.25rem; + width: 1.25rem; + transform: rotate(180deg); + transition: transform var(--ifm-transition-fast); } -.blogPageInner .blog-article ol > li, -.blogPageInner .blog-article ul > li { - margin: 5px; + +.tocCollapsibleButtonExpanded_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-CollapseButton-styles-module::after { + transform: none; } -.blogPageInner .blog-article ol ul, -.blogPageInner .blog-article ol ol { - margin-bottom: 0px; margin-top: 0px; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.tocCollapsible_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module { + background-color: var(--ifm-menu-color-background-active); + border-radius: var(--ifm-global-radius); + margin: 1rem 0; } -.blogPageInner .blog-article ol p { - margin: 0; +.tocCollapsibleContent_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module > ul { + border-left: none; + border-top: 1px solid var(--ifm-color-emphasis-300); + padding: 0.2rem 0; + font-size: 15px; } -/* This might have unintended consequences, but I haven't seen any */ -.blogPage .blogPageInner { - padding-top: 0; +.tocCollapsibleContent_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module ul li { + margin: 0.4rem 0.8rem; } -.blogPageInner .blog-article pre { - tab-size: 4; - margin: revert; +.tocCollapsibleContent_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module a { + display: block; } -.blogPageInner .blog-article code span { - font-size: unset; +.tocCollapsibleExpanded_node_modules-\@docusaurus-theme-classic-lib-theme-TOCCollapsible-styles-module { + transform: none; } -.security__text a { - color: #4aafff; - -webkit-transition: opacity .3s ease-in-out,color .3s ease-in-out; - -o-transition: opacity .3s ease-in-out,color .3s ease-in-out; - transition: opacity .3s ease-in-out,color .3s ease-in-out; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@media (min-width: 997px) { + /* Prevent hydration FOUC, as the mobile TOC needs to be server-rendered */ + .tocMobile_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-TOC-Mobile-styles-module { + display: none; + } } -.security__text a:hover { - color: #ffa729; +@media print { + .tocMobile_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-TOC-Mobile-styles-module { + display: none; + } } -.grid-markets { +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +.tableOfContents_node_modules-\@docusaurus-theme-classic-lib-theme-TOC-styles-module { + max-height: calc(100vh - (var(--ifm-navbar-height) + 2rem)); + overflow-y: auto; + position: sticky; + top: calc(var(--ifm-navbar-height) + 1rem); } -.grid-markets .core__el__img img { - object-fit: contain; + +@media (max-width: 996px) { + .tableOfContents_node_modules-\@docusaurus-theme-classic-lib-theme-TOC-styles-module { + display: none; + } + + .docItemContainer_node_modules-\@docusaurus-theme-classic-lib-theme-TOC-styles-module { + padding: 0 0.3rem; + } } -.grid-markets .core__el__img { - text-align: center; - padding: 40px; - background-color:#FCFCFC; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.backToTopButton_node_modules-\@docusaurus-theme-classic-lib-theme-BackToTopButton-styles-module { + position: fixed; + right: 1.3rem; + bottom: 1.3rem; + border-radius: 50%; + background-color: var(--ifm-color-emphasis-200); + width: 3rem; + height: 3rem; + z-index: calc(var(--ifm-z-index-fixed) - 1); + box-shadow: var(--ifm-global-shadow-lw); + transition: all var(--ifm-transition-fast) + var(--ifm-transition-timing-default); + opacity: 0; + transform: scale(0); + visibility: hidden; } -.grid-markets span.market { - background-color: #4AAFFF; - color: #FFF; - padding:5px 7px; - margin-right: 3px; margin-top:3px; - border-radius: 5px; - font-weight:bold; - font-size: 16px; +.backToTopButton_node_modules-\@docusaurus-theme-classic-lib-theme-BackToTopButton-styles-module::after { + content: ' '; + display: inline-block; + -webkit-mask: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem no-repeat; + mask: var(--ifm-menu-link-sublist-icon) 50% / 2rem 2rem no-repeat; + background-color: var(--ifm-color-emphasis-1000); + width: 100%; + height: 100%; } -.coreTeam .grid-markets .core__el { - /*margin-top: 0;*/ - margin-bottom: 40px; +@media (hover: hover) { + .backToTopButton_node_modules-\@docusaurus-theme-classic-lib-theme-BackToTopButton-styles-module:hover { + background-color: var(--ifm-color-emphasis-300); + } } -.core-team-head__inner { - margin-bottom:20px; + +.backToTopButtonShow_node_modules-\@docusaurus-theme-classic-lib-theme-BackToTopButton-styles-module { + opacity: 1; + transform: scale(1); + visibility: visible; } -.coreTeam .core-page .grid-three-cols { - /*margin-bottom: 80px;*/ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +:root { + --docusaurus-collapse-button-bg: transparent; + --docusaurus-collapse-button-bg-hover: rgb(0 0 0 / 10%); } -.timeline-content { - margin-top: 50px; - text-align: center; +[data-theme='dark']:root { + --docusaurus-collapse-button-bg: rgb(255 255 255 / 5%); + --docusaurus-collapse-button-bg-hover: rgb(255 255 255 / 10%); } -/* .core__el__inner { - overflow: hidden; - white-space: normal; -} */ -.timeline { - border-left: 3px solid #FFA729; - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; - background: #ECEDED; - color: rgba(0, 0, 0, 0.8); - margin: 50px auto; - letter-spacing: 0.5px; - position: relative; - line-height: 1.4em; - font-size: 1.03em; - padding: 50px; - list-style: none; - text-align: left; - font-weight: 100; - max-width: 90%; -} -.timeline h1 { - letter-spacing: 1.5px; - font-weight: 100; - font-size: 1.4em; -} -.timeline h2, -.timeline h3 { - letter-spacing: 1.5px; - font-weight: 400; - font-size: 1.4em; -} -.timeline .event { - border-bottom: 1px dashed rgba(0, 0, 0, 0.1); - padding-bottom: 25px; - margin-bottom: 50px; - position: relative; + +@media (min-width: 997px) { + .collapseSidebarButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module { + display: block !important; + background-color: var(--docusaurus-collapse-button-bg); + height: 40px; + position: sticky; + bottom: 0; + border-radius: 0; + border: 1px solid var(--ifm-toc-border-color); + } + + .collapseSidebarButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module { + transform: rotate(180deg); + margin-top: 4px; + } + + [dir='rtl'] .collapseSidebarButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module { + transform: rotate(0); + } + + .collapseSidebarButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module:hover, + .collapseSidebarButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module:focus { + background-color: var(--docusaurus-collapse-button-bg-hover); + } } -.timeline ul { - padding-left:20px; - list-style: disc; +.collapseSidebarButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-CollapseButton-styles-module { + display: none; + margin: 0; } -.timeline .event:last-of-type { - padding-bottom: 0; - margin-bottom: 0; - border: none; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.menuExternalLink_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebarItem-Link-styles-module { + align-items: center; } -.timeline .event:before, -.timeline .event:after { - position: absolute; - display: block; - top: 0; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@media (min-width: 997px) { + .menuHtmlItem_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebarItem-Html-styles-module { + padding: var(--ifm-menu-link-padding-vertical) + var(--ifm-menu-link-padding-horizontal); + } } -.timeline .event:before { - left: -217.5px; - color: #444; - content: attr(data-date); - text-align: right; - font-weight: 100; - font-size: 0.9em; - min-width: 140px; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@media (min-width: 997px) { + .menu_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-Content-styles-module { + flex-grow: 1; + padding: 0.5rem; + } + @supports (scrollbar-gutter: stable) { + .menu_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-Content-styles-module { + padding: 0.5rem 0 0.5rem 0.5rem; + scrollbar-gutter: stable; + } + } + + .menuWithAnnouncementBar_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-Content-styles-module { + margin-bottom: var(--docusaurus-announcement-bar-height); + } } -.timeline .event:after { - left: -56.85px; - background: #FFA729; - border-radius: 50%; - height: 11px; - width: 11px; - content: ""; - top: 5px; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@media (min-width: 997px) { + .sidebar_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module { + display: flex; + flex-direction: column; + height: 100%; + padding-top: var(--ifm-navbar-height); + width: var(--doc-sidebar-width); + } + + .sidebarWithHideableNavbar_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module { + padding-top: 0; + } + + .sidebarHidden_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module { + opacity: 0; + visibility: hidden; + } + + .sidebarLogo_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module { + display: flex !important; + align-items: center; + margin: 0 var(--ifm-navbar-padding-horizontal); + min-height: var(--ifm-navbar-height); + max-height: var(--ifm-navbar-height); + color: inherit !important; + text-decoration: none !important; + } + + .sidebarLogo_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module img { + margin-right: 0.5rem; + height: 2rem; + } } -.future .timeline .event:after { - background: #4AAFFF; + +.sidebarLogo_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop-styles-module { + display: none; } -.future .timeline { - border-left: 3px solid #4AAFFF; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@media (min-width: 997px) { + .expandButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-ExpandButton-styles-module { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + transition: background-color var(--ifm-transition-fast) ease; + background-color: var(--docusaurus-collapse-button-bg); + } + + .expandButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-ExpandButton-styles-module:hover, + .expandButton_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-ExpandButton-styles-module:focus { + background-color: var(--docusaurus-collapse-button-bg-hover); + } + + .expandButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-ExpandButton-styles-module { + transform: rotate(0); + } + + [dir='rtl'] .expandButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-ExpandButton-styles-module { + transform: rotate(180deg); + } } -.timeline-content .container-mini > h2:after { - display:none; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +:root { + --doc-sidebar-width: 300px; + --doc-sidebar-hidden-width: 30px; } -.timeline .date { - display:none; +.docSidebarContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-styles-module { + display: none; } -@media screen and (max-width: 767px) { - .grid-markets.grid-three-cols { - grid-template-columns: repeat(1, 1fr); - grid-column-gap: 30px; - grid-row-gap: 30px; +@media (min-width: 997px) { + .docSidebarContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-styles-module { + display: block; + width: var(--doc-sidebar-width); + margin-top: calc(-1 * var(--ifm-navbar-height)); + border-right: 1px solid var(--ifm-toc-border-color); + will-change: width; + transition: width var(--ifm-transition-fast) ease; + clip-path: inset(0); } - .timeline .event:before { - display:none; - left: -217.5px; - color: #444; - content: ''; - text-align: right; - font-weight: 100; - font-size: 0.9em; - min-width: 140px; + + .docSidebarContainerHidden_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-styles-module { + width: var(--doc-sidebar-hidden-width); + cursor: pointer; } - .timeline .date { - display: block; + .sidebarViewport_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Sidebar-styles-module { + top: 0; + position: sticky; + height: 100%; + max-height: 100vh; + } +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.docMainContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Main-styles-module { + display: flex; + width: 100%; +} + +@media (min-width: 997px) { + .docMainContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Main-styles-module { + flex-grow: 1; + max-width: calc(100% - var(--doc-sidebar-width)); + } + + .docMainContainerEnhanced_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Main-styles-module { + max-width: calc(100% - var(--doc-sidebar-hidden-width)); } + .docItemWrapperEnhanced_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-Main-styles-module { + max-width: calc( + var(--ifm-container-width) + var(--doc-sidebar-width) + ) !important; + } } -.popup-edit h3 { - margin-bottom: 10px; - line-height: 24px; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.docPage_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-styles-module { + display: flex; + width: 100%; + flex: 1 0; } -.contributors .list li a { - border-bottom: unset; +.docsWrapper_node_modules-\@docusaurus-theme-classic-lib-theme-DocPage-Layout-styles-module { + display: flex; + flex: 1 0 auto; } -.ghover path { - transition: 500ms ease-in-out; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.tabList_node_modules-\@docusaurus-theme-classic-lib-theme-Tabs-styles-module { + margin-bottom: var(--ifm-leading); } -.ghover:hover path { - fill: #4aafff; +.tabItem_node_modules-\@docusaurus-theme-classic-lib-theme-Tabs-styles-module { + margin-top: 0 !important; } -.others { - margin-top: -10px; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.tabItem_node_modules-\@docusaurus-theme-classic-lib-theme-TabItem-styles-module > *:last-child { + margin-bottom: 0; } -.others a { - display: inline; - border-radius: 0; - color: rgba(10,23,32,0.5); - text-transform: none; - background-color: unset; -} -.others a:hover { - color: #ffa729; - background-color: unset; -} -.single-md ul { - font-size: 18px; - line-height: 26px; - margin: 40px 0; -} -.single-md ul li { - list-style-type: disc; - font-size: 18px; - line-height: 26px; - margin-bottom: 10px; -} -.single-md h2 { - font-size: 32px; - line-height: 150%; - text-transform: uppercase; -/* font-family: 'Alte DIN 1451 Mittelschrift';*/ - font-weight: bold; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.codeBlockContainer_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Container-styles-module { + background: var(--prism-background-color); + color: var(--prism-color); + margin-bottom: var(--ifm-leading); + box-shadow: var(--ifm-global-shadow-lw); + border-radius: var(--ifm-code-border-radius); } -.single-md a { - text-decoration: underline; - transition: 500ms ease-in-out; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.codeBlockContent_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module { + position: relative; + /* rtl:ignore */ + direction: ltr; + border-radius: inherit; +} + +.codeBlockTitle_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module { + border-bottom: 1px solid var(--ifm-color-emphasis-300); + font-size: var(--ifm-code-font-size); + font-weight: 500; + padding: 0.75rem var(--ifm-pre-padding); + border-top-left-radius: inherit; + border-top-right-radius: inherit; } -.single-md a:hover { - color: #ffa729; + +.codeBlock_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module { + --ifm-pre-background: var(--prism-background-color); + margin: 0; + padding: 0; } -.no-ul { - text-decoration: none !important; + +.codeBlockTitle_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module + .codeBlockContent_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module .codeBlock_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module { + border-top-left-radius: 0; + border-top-right-radius: 0; } -.blog .small-p a { - background-color: rgba(255,167,41,0.2); + +.codeBlockStandalone_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module { + padding: 0; } -.blog .small-p a:hover { - color: #FFA729; + +.codeBlockLines_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module { + font: inherit; + /* rtl:ignore */ + float: left; + min-width: 100%; + padding: var(--ifm-pre-padding); } -/* MailChimp Form Embed Code - Classic - 12/17/2015 v10.7 */ -#mc_embed_signup { - background-color: #0a1720; - margin-top: 10px; - padding: 20px 26px; - transition: .5s ease-in-out; - position: relative; - transition-property: color,background-color; - z-index: 2; - color: #FFF; - font-size: 16px; - line-height: 20px; - font-family: sans-serif; - cursor: default; - border-top: 6px solid #4AAFFF; - border-radius: 6px; -} -#mc_embed_signup form {display:block; position:relative; text-align:left; padding:10px 0 10px 3%} -#mc_embed_signup h2 {font-weight:bold; padding:0; margin:15px 0; font-size:36px; line-height: 48px;} -#mc_embed_signup input {color:#FFF;border: 1px solid #FFF; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px;} - -#mc_embed_signup input[type=radio]{-webkit-appearance:radio;} -#mc_embed_signup input:focus {border-color:#4AAFFF;caret-color: #FFF;} -#mc_embed_signup .button { - border: 0; - height: 40px; - width: 156px; - line-height: 40px; - text-transform: uppercase; - color: #fff; - text-align: center; - border-radius: 4px; +.codeBlockLinesWithNumbering_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module { + display: table; + padding: var(--ifm-pre-padding) 0; +} + +@media print { + .codeBlockLines_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module { + white-space: pre-wrap; + } +} + +.buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module { + display: flex; + column-gap: 0.2rem; + position: absolute; + /* rtl:ignore */ + right: calc(var(--ifm-pre-padding) / 2); + top: calc(var(--ifm-pre-padding) / 2); +} + +.buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module button { + display: flex; + align-items: center; + background: var(--prism-background-color); + color: var(--prism-color); + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: var(--ifm-global-radius); + padding: 0.4rem; + line-height: 0; + transition: opacity var(--ifm-transition-fast) ease-in-out; + opacity: 0; +} + +.buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module button:focus-visible, +.buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module button:hover { + opacity: 1 !important; +} + +.theme-code-block:hover .buttonGroup_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Content-styles-module button { + opacity: 0.4; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* Intentionally has zero specificity, so that to be able to override +the background in custom CSS file due bug https://github.com/facebook/docusaurus/issues/3678 */ +:where(:root) { + --docusaurus-highlighted-code-line-bg: rgb(72 77 91); +} + +:where([data-theme='dark']) { + --docusaurus-highlighted-code-line-bg: rgb(100 100 100); +} + +.theme-code-block-highlighted-line { + background-color: var(--docusaurus-highlighted-code-line-bg); display: block; - background-color: #4AAFFF; - font-size: 14px; - font-family: sans-serif; - transition: 300ms ease-in-out; + margin: 0 calc(-1 * var(--ifm-pre-padding)); + padding: 0 var(--ifm-pre-padding); +} + +.codeLine_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module { + display: table-row; + counter-increment: line-count; +} + +.codeLineNumber_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module { + display: table-cell; + text-align: right; + width: 1%; + position: sticky; + left: 0; + padding: 0 var(--ifm-pre-padding); + background: var(--ifm-pre-background); + overflow-wrap: normal; +} + +.codeLineNumber_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module::before { + content: counter(line-count); + opacity: 0.4; +} + +.theme-code-block-highlighted-line .codeLineNumber_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module::before { + opacity: 0.8; +} + +.codeLineContent_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-Line-styles-module { + padding-right: var(--ifm-pre-padding); +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.theme-code-block:hover .copyButtonCopied_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module { + opacity: 1 !important; +} + +.copyButtonIcons_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module { + position: relative; + width: 1.125rem; + height: 1.125rem; +} + +.copyButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module, +.copyButtonSuccessIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module { + position: absolute; + top: 0; + left: 0; + fill: currentColor; + opacity: inherit; + width: inherit; + height: inherit; + transition: all var(--ifm-transition-fast) ease; +} + +.copyButtonSuccessIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module { + top: 50%; + left: 50%; + transform: translate(-50%, -50%) scale(0.33); + opacity: 0; + color: #00d600; +} + +.copyButtonCopied_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module .copyButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module { + transform: scale(0.33); + opacity: 0; +} + +.copyButtonCopied_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module .copyButtonSuccessIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-CopyButton-styles-module { + transform: translate(-50%, -50%) scale(1); + opacity: 1; + transition-delay: 0.075s; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.wordWrapButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-WordWrapButton-styles-module { + width: 1.2rem; + height: 1.2rem; +} + +.wordWrapButtonEnabled_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-WordWrapButton-styles-module .wordWrapButtonIcon_node_modules-\@docusaurus-theme-classic-lib-theme-CodeBlock-WordWrapButton-styles-module { + color: var(--ifm-color-primary); +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* +When the navbar is sticky, ensure that on anchor click, +the browser does not scroll that anchor behind the navbar +See https://twitter.com/JoshWComeau/status/1332015868725891076 + */ +.anchorWithStickyNavbar_node_modules-\@docusaurus-theme-classic-lib-theme-Heading-styles-module { + scroll-margin-top: calc(var(--ifm-navbar-height) + 0.5rem); +} + +.anchorWithHideOnScrollNavbar_node_modules-\@docusaurus-theme-classic-lib-theme-Heading-styles-module { + scroll-margin-top: 0.5rem; +} + +.hash-link { + opacity: 0; + padding-left: 0.5rem; + transition: opacity var(--ifm-transition-fast); + -webkit-user-select: none; + user-select: none; +} + +.hash-link::before { + content: '#'; +} + +.hash-link:focus, +*:hover > .hash-link { + opacity: 1; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/* +CSS variables, meant to be overridden by final theme + */ +.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module { + --docusaurus-details-summary-arrow-size: 0.38rem; + --docusaurus-details-transition: transform 200ms ease; + --docusaurus-details-decoration-color: grey; +} + +.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > summary { + position: relative; cursor: pointer; + list-style: none; + padding-left: 1rem; } -#mc_embed_signup .button:hover { background-color: #0891ff;} -#mc_embed_signup .small-meta {font-size: 11px;} -#mc_embed_signup .nowrap {white-space:nowrap;} - -#mc_embed_signup .mc-field-group {clear:left; position:relative; width:96%; padding-bottom:5px;} -#mc_embed_signup .size1of2 {clear:none; float:left; display:inline-block; width:46%; margin-right:4%;} -* html #mc_embed_signup .size1of2 {margin-right:2%; /* Fix for IE6 double margins. */} -#mc_embed_signup .mc-field-group label {display:block; margin-bottom:3px;font-weight: bold;} -#mc_embed_signup .mc-field-group input {display:block; width:100%; padding:8px 0; text-indent:2%;} -#mc_embed_signup .mc-field-group select {display:inline-block; width:99%; padding:5px 0; margin-bottom:2px;} - -#mc_embed_signup .datefield, #mc_embed_signup .phonefield-us{padding:5px 0;} -#mc_embed_signup .datefield input, #mc_embed_signup .phonefield-us input{display:inline; width:60px; margin:0 2px; letter-spacing:1px; text-align:center; padding:5px 0 2px 0;} -#mc_embed_signup .phonefield-us .phonearea input, #mc_embed_signup .phonefield-us .phonedetail1 input{width:40px;} -#mc_embed_signup .datefield .monthfield input, #mc_embed_signup .datefield .dayfield input{width:30px;} -#mc_embed_signup .datefield label, #mc_embed_signup .phonefield-us label{display:none;} - -#mc_embed_signup .indicates-required {text-align:right; font-size:11px; margin-right:4%;} -#mc_embed_signup .asterisk {color:#e85c41; font-size:150%; font-weight:normal; position:relative; top:5px;} -#mc_embed_signup .clear {clear:both;} - -#mc_embed_signup .mc-field-group.input-group ul {margin:0; padding:5px 0; list-style:none;} -#mc_embed_signup .mc-field-group.input-group ul li {display:block; padding:3px 0; margin:0;} -#mc_embed_signup .mc-field-group.input-group label {display:inline;} -#mc_embed_signup .mc-field-group.input-group input {display:inline; width:auto; border:none;} - -#mc_embed_signup div#mce-responses {float:left; top:-1.4em; padding:0em .5em 0em .5em; overflow:hidden; width:90%; margin: 0 5%; clear: both;} -#mc_embed_signup div.response {margin:1em 0; padding:1em .5em .5em 0; font-weight:bold; float:left; top:-1.5em; z-index:1; width:80%;} -#mc_embed_signup #mce-error-response {display:none;} -#mc_embed_signup #mce-success-response {color:#529214; display:none;} -#mc_embed_signup label.error {display:block; float:none; width:auto; margin-left:1.05em; text-align:left; padding:.5em 0;} - -#mc-embedded-subscribe {clear:both; width:auto; display:block; margin:0;} -#mc_embed_signup #num-subscribers {font-size:1.1em;} -#mc_embed_signup #num-subscribers span {padding:.5em; border:1px solid #ccc; margin-right:.5em; font-weight:bold;} - -#mc_embed_signup #mc-embedded-subscribe-form div.mce_inline_error {display:inline-block; margin:2px 0 1em 0; padding:5px 10px; background-color:rgba(255,255,255,0.85); -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; font-size:14px; font-weight:normal; z-index:1; color:#e85c41;} -#mc_embed_signup #mc-embedded-subscribe-form input.mce_inline_error {border:2px solid #e85c41;} -#mc_embed_signup .subfield { - display: inline; - width: fit-content; + +/* TODO: deprecation, need to remove this after Safari will support `::marker` */ +.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > summary::-webkit-details-marker { + display: none; } -#mc_embed_signup input[type=checkbox]{ - -webkit-appearance:checkbox;height:20px; - display: inline; + +.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > summary::before { + position: absolute; + top: 0.45rem; + left: 0; + + /* CSS-only Arrow */ + content: ''; + border-width: var(--docusaurus-details-summary-arrow-size); + border-style: solid; + border-color: transparent transparent transparent + var(--docusaurus-details-decoration-color); + + /* Arrow rotation anim */ + transform: rotate(0deg); + transition: var(--docusaurus-details-transition); + transform-origin: calc(var(--docusaurus-details-summary-arrow-size) / 2) 50%; } -#mc_embed_signup a { - text-decoration: underline; - transition: 300ms ease-in-out; + +/* When JS disabled/failed to load: we use the open property for arrow animation: */ +.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module[open]:not(.isBrowser_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module) > summary::before, + +.details_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module[data-collapsed='false'].isBrowser_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > summary::before { + transform: rotate(90deg); +} + +.collapsibleContent_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module { + margin-top: 1rem; + border-top: 1px solid var(--docusaurus-details-decoration-color); + padding-top: 1rem; +} + +.collapsibleContent_node_modules-\@docusaurus-theme-common-lib-components-Details-styles-module > *:last-child { + margin-bottom: 0; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.details_node_modules-\@docusaurus-theme-classic-lib-theme-Details-styles-module { + --docusaurus-details-decoration-color: var(--ifm-alert-border-color); + --docusaurus-details-transition: transform var(--ifm-transition-fast) ease; + margin: 0 0 var(--ifm-spacing-vertical); + border: 1px solid var(--ifm-alert-border-color); +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.containsTaskList_node_modules-\@docusaurus-theme-classic-lib-theme-MDXComponents-Ul-styles-module { + list-style: none; } -#mc_embed_signup a:hover { - color: #FFA729; + +:not(.containsTaskList_node_modules-\@docusaurus-theme-classic-lib-theme-MDXComponents-Ul-styles-module > li) > .containsTaskList_node_modules-\@docusaurus-theme-classic-lib-theme-MDXComponents-Ul-styles-module { + padding-left: 0; } -.joanclarke { - position: inherit; +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.img_node_modules-\@docusaurus-theme-classic-lib-theme-MDXComponents-Img-styles-module { + height: auto; } -.av-checkbox { - position: absolute !important; - width: auto !important; + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.admonition_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-styles-module { + margin-bottom: 1em; } -.checkbox > span { - margin-left: 20px !important; + +.admonitionHeading_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-styles-module { + font: var(--ifm-heading-font-weight) var(--ifm-h5-font-size) / + var(--ifm-heading-line-height) var(--ifm-heading-font-family); + text-transform: uppercase; + margin-bottom: 0.3rem; } +.admonitionHeading_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-styles-module code { + text-transform: none; +} -html { - scroll-padding-top: 96px; +.admonitionIcon_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-styles-module { + display: inline-block; + vertical-align: middle; + margin-right: 0.4em; +} + +.admonitionIcon_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-styles-module svg { + display: inline-block; + height: 1.6em; + width: 1.6em; + fill: var(--ifm-alert-foreground-color); +} + +.admonitionContent_node_modules-\@docusaurus-theme-classic-lib-theme-Admonition-styles-module > :last-child { + margin-bottom: 0; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.container_node_modules-\@docusaurus-theme-mermaid-lib-theme-Mermaid-styles-module { + max-width: 100%; +} + +.container_node_modules-\@docusaurus-theme-mermaid-lib-theme-Mermaid-styles-module > svg { + max-width: 100%; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.breadcrumbHomeIcon_node_modules-\@docusaurus-theme-classic-lib-theme-DocBreadcrumbs-Items-Home-styles-module { + position: relative; + top: 1px; + vertical-align: top; + height: 1.1rem; + width: 1.1rem; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.breadcrumbsContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocBreadcrumbs-styles-module { + --ifm-breadcrumb-size-multiplier: 0.8; + margin-bottom: 0.8rem; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +@media (min-width: 997px) { + .generatedIndexPage_node_modules-\@docusaurus-theme-classic-lib-theme-DocCategoryGeneratedIndexPage-styles-module { + max-width: 75% !important; + } + + .list_node_modules-\@docusaurus-theme-classic-lib-theme-DocCategoryGeneratedIndexPage-styles-module article:nth-last-child(-n + 2) { + margin-bottom: 0 !important; + } +} + +/* Duplicated from .markdown h1 */ +.title_node_modules-\@docusaurus-theme-classic-lib-theme-DocCategoryGeneratedIndexPage-styles-module { + --ifm-h1-font-size: 3rem; + margin-bottom: calc(1.25 * var(--ifm-leading)); +} + +.list_node_modules-\@docusaurus-theme-classic-lib-theme-DocCategoryGeneratedIndexPage-styles-module article:last-child { + margin-bottom: 0 !important; +} + +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +.docItemContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-Layout-styles-module header + *, +.docItemContainer_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-Layout-styles-module article > *:first-child { + margin-top: 0; +} + +@media (min-width: 997px) { + .docItemCol_node_modules-\@docusaurus-theme-classic-lib-theme-DocItem-Layout-styles-module { + max-width: 75% !important; + } } diff --git a/static/assets/img/icons/arrow-1-w.svg b/static/assets/img/icons.bak/arrow-1-w.svg similarity index 100% rename from static/assets/img/icons/arrow-1-w.svg rename to static/assets/img/icons.bak/arrow-1-w.svg diff --git a/static/assets/img/icons/arrow-1-y.svg b/static/assets/img/icons.bak/arrow-1-y.svg similarity index 100% rename from static/assets/img/icons/arrow-1-y.svg rename to static/assets/img/icons.bak/arrow-1-y.svg diff --git a/static/assets/img/icons/arrow-1.svg b/static/assets/img/icons.bak/arrow-1.svg similarity index 100% rename from static/assets/img/icons/arrow-1.svg rename to static/assets/img/icons.bak/arrow-1.svg diff --git a/static/assets/img/icons/arrow-2-y.svg b/static/assets/img/icons.bak/arrow-2-y.svg similarity index 100% rename from static/assets/img/icons/arrow-2-y.svg rename to static/assets/img/icons.bak/arrow-2-y.svg diff --git a/static/assets/img/icons/arrow-2.svg b/static/assets/img/icons.bak/arrow-2.svg similarity index 100% rename from static/assets/img/icons/arrow-2.svg rename to static/assets/img/icons.bak/arrow-2.svg diff --git a/static/assets/img/icons/arrow-more-w.svg b/static/assets/img/icons.bak/arrow-more-w.svg similarity index 100% rename from static/assets/img/icons/arrow-more-w.svg rename to static/assets/img/icons.bak/arrow-more-w.svg diff --git a/static/assets/img/icons/arrow-more.svg b/static/assets/img/icons.bak/arrow-more.svg similarity index 100% rename from static/assets/img/icons/arrow-more.svg rename to static/assets/img/icons.bak/arrow-more.svg diff --git a/static/assets/img/icons.bak/black.png b/static/assets/img/icons.bak/black.png new file mode 100644 index 0000000..2d86a35 Binary files /dev/null and b/static/assets/img/icons.bak/black.png differ diff --git a/static/assets/img/icons/button-app-store.svg b/static/assets/img/icons.bak/button-app-store.svg similarity index 100% rename from static/assets/img/icons/button-app-store.svg rename to static/assets/img/icons.bak/button-app-store.svg diff --git a/static/assets/img/icons/button-google-play.svg b/static/assets/img/icons.bak/button-google-play.svg similarity index 100% rename from static/assets/img/icons/button-google-play.svg rename to static/assets/img/icons.bak/button-google-play.svg diff --git a/static/assets/img/icons/cases_slider_pic1.jpg b/static/assets/img/icons.bak/cases_slider_pic1.jpg similarity index 100% rename from static/assets/img/icons/cases_slider_pic1.jpg rename to static/assets/img/icons.bak/cases_slider_pic1.jpg diff --git a/static/assets/img/icons/cases_slider_pic2.jpg b/static/assets/img/icons.bak/cases_slider_pic2.jpg similarity index 100% rename from static/assets/img/icons/cases_slider_pic2.jpg rename to static/assets/img/icons.bak/cases_slider_pic2.jpg diff --git a/static/assets/img/icons/cases_slider_pic3.jpg b/static/assets/img/icons.bak/cases_slider_pic3.jpg similarity index 100% rename from static/assets/img/icons/cases_slider_pic3.jpg rename to static/assets/img/icons.bak/cases_slider_pic3.jpg diff --git a/static/assets/img/icons/circles.png b/static/assets/img/icons.bak/circles.png similarity index 100% rename from static/assets/img/icons/circles.png rename to static/assets/img/icons.bak/circles.png diff --git a/static/assets/img/icons/copyright.svg b/static/assets/img/icons.bak/copyright.svg similarity index 100% rename from static/assets/img/icons/copyright.svg rename to static/assets/img/icons.bak/copyright.svg diff --git a/static/assets/img/icons.bak/dark_100x100.png b/static/assets/img/icons.bak/dark_100x100.png new file mode 100644 index 0000000..ff9d4f6 Binary files /dev/null and b/static/assets/img/icons.bak/dark_100x100.png differ diff --git a/static/assets/img/icons/features1.jpg b/static/assets/img/icons.bak/features1.jpg similarity index 100% rename from static/assets/img/icons/features1.jpg rename to static/assets/img/icons.bak/features1.jpg diff --git a/static/assets/img/icons/features1_hover.jpg b/static/assets/img/icons.bak/features1_hover.jpg similarity index 100% rename from static/assets/img/icons/features1_hover.jpg rename to static/assets/img/icons.bak/features1_hover.jpg diff --git a/static/assets/img/icons/features2.jpg b/static/assets/img/icons.bak/features2.jpg similarity index 100% rename from static/assets/img/icons/features2.jpg rename to static/assets/img/icons.bak/features2.jpg diff --git a/static/assets/img/icons/features2_hover.jpg b/static/assets/img/icons.bak/features2_hover.jpg similarity index 100% rename from static/assets/img/icons/features2_hover.jpg rename to static/assets/img/icons.bak/features2_hover.jpg diff --git a/static/assets/img/icons/features3.jpg b/static/assets/img/icons.bak/features3.jpg similarity index 100% rename from static/assets/img/icons/features3.jpg rename to static/assets/img/icons.bak/features3.jpg diff --git a/static/assets/img/icons/features3_hover.jpg b/static/assets/img/icons.bak/features3_hover.jpg similarity index 100% rename from static/assets/img/icons/features3_hover.jpg rename to static/assets/img/icons.bak/features3_hover.jpg diff --git a/static/assets/img/icons/icon-contact.svg b/static/assets/img/icons.bak/icon-contact.svg similarity index 100% rename from static/assets/img/icons/icon-contact.svg rename to static/assets/img/icons.bak/icon-contact.svg diff --git a/static/assets/img/icons/icon-developers.svg b/static/assets/img/icons.bak/icon-developers.svg similarity index 100% rename from static/assets/img/icons/icon-developers.svg rename to static/assets/img/icons.bak/icon-developers.svg diff --git a/static/assets/img/icons/icon-developers_w.svg b/static/assets/img/icons.bak/icon-developers_w.svg similarity index 100% rename from static/assets/img/icons/icon-developers_w.svg rename to static/assets/img/icons.bak/icon-developers_w.svg diff --git a/static/assets/img/icons/icon-discord.svg b/static/assets/img/icons.bak/icon-discord.svg similarity index 100% rename from static/assets/img/icons/icon-discord.svg rename to static/assets/img/icons.bak/icon-discord.svg diff --git a/static/assets/img/icons/icon-facebook.svg b/static/assets/img/icons.bak/icon-facebook.svg similarity index 100% rename from static/assets/img/icons/icon-facebook.svg rename to static/assets/img/icons.bak/icon-facebook.svg diff --git a/static/assets/img/icons/icon-github.svg b/static/assets/img/icons.bak/icon-github.svg similarity index 100% rename from static/assets/img/icons/icon-github.svg rename to static/assets/img/icons.bak/icon-github.svg diff --git a/static/assets/img/icons/icon-jobs.svg b/static/assets/img/icons.bak/icon-jobs.svg similarity index 100% rename from static/assets/img/icons/icon-jobs.svg rename to static/assets/img/icons.bak/icon-jobs.svg diff --git a/static/assets/img/icons/icon-linkedin.svg b/static/assets/img/icons.bak/icon-linkedin.svg similarity index 100% rename from static/assets/img/icons/icon-linkedin.svg rename to static/assets/img/icons.bak/icon-linkedin.svg diff --git a/static/assets/img/icons/icon-miners.svg b/static/assets/img/icons.bak/icon-miners.svg similarity index 100% rename from static/assets/img/icons/icon-miners.svg rename to static/assets/img/icons.bak/icon-miners.svg diff --git a/static/assets/img/icons/icon-miners_w.svg b/static/assets/img/icons.bak/icon-miners_w.svg similarity index 100% rename from static/assets/img/icons/icon-miners_w.svg rename to static/assets/img/icons.bak/icon-miners_w.svg diff --git a/static/assets/img/icons/icon-reddit.svg b/static/assets/img/icons.bak/icon-reddit.svg similarity index 100% rename from static/assets/img/icons/icon-reddit.svg rename to static/assets/img/icons.bak/icon-reddit.svg diff --git a/static/assets/img/icons/icon-telegram-new.svg b/static/assets/img/icons.bak/icon-telegram-new.svg similarity index 100% rename from static/assets/img/icons/icon-telegram-new.svg rename to static/assets/img/icons.bak/icon-telegram-new.svg diff --git a/static/assets/img/icons/icon-telegram.svg b/static/assets/img/icons.bak/icon-telegram.svg similarity index 100% rename from static/assets/img/icons/icon-telegram.svg rename to static/assets/img/icons.bak/icon-telegram.svg diff --git a/static/assets/img/icons/icon-telegram_ld.svg b/static/assets/img/icons.bak/icon-telegram_ld.svg similarity index 100% rename from static/assets/img/icons/icon-telegram_ld.svg rename to static/assets/img/icons.bak/icon-telegram_ld.svg diff --git a/static/assets/img/icons/icon-twitter.svg b/static/assets/img/icons.bak/icon-twitter.svg similarity index 100% rename from static/assets/img/icons/icon-twitter.svg rename to static/assets/img/icons.bak/icon-twitter.svg diff --git a/static/assets/img/icons/icon-users.svg b/static/assets/img/icons.bak/icon-users.svg similarity index 100% rename from static/assets/img/icons/icon-users.svg rename to static/assets/img/icons.bak/icon-users.svg diff --git a/static/assets/img/icons/icon-users_w.svg b/static/assets/img/icons.bak/icon-users_w.svg similarity index 100% rename from static/assets/img/icons/icon-users_w.svg rename to static/assets/img/icons.bak/icon-users_w.svg diff --git a/static/assets/img/icons/icon-youtube.svg b/static/assets/img/icons.bak/icon-youtube.svg similarity index 100% rename from static/assets/img/icons/icon-youtube.svg rename to static/assets/img/icons.bak/icon-youtube.svg diff --git a/static/assets/img/icons/img.svg b/static/assets/img/icons.bak/img.svg similarity index 100% rename from static/assets/img/icons/img.svg rename to static/assets/img/icons.bak/img.svg diff --git a/static/assets/img/icons.bak/qrl-logo.svg b/static/assets/img/icons.bak/qrl-logo.svg new file mode 100644 index 0000000..98e9c1e --- /dev/null +++ b/static/assets/img/icons.bak/qrl-logo.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/assets/img/icons/qrl-logo__old.svg b/static/assets/img/icons.bak/qrl-logo__old.svg similarity index 100% rename from static/assets/img/icons/qrl-logo__old.svg rename to static/assets/img/icons.bak/qrl-logo__old.svg diff --git a/static/assets/img/icons/tree.svg b/static/assets/img/icons.bak/tree.svg similarity index 100% rename from static/assets/img/icons/tree.svg rename to static/assets/img/icons.bak/tree.svg diff --git a/static/assets/img/icons.bak/white.png b/static/assets/img/icons.bak/white.png new file mode 100644 index 0000000..4f47b0d Binary files /dev/null and b/static/assets/img/icons.bak/white.png differ diff --git a/static/assets/img/icons/whitepreview.png b/static/assets/img/icons.bak/whitepreview.png similarity index 100% rename from static/assets/img/icons/whitepreview.png rename to static/assets/img/icons.bak/whitepreview.png diff --git a/static/assets/img/icons/x.svg b/static/assets/img/icons.bak/x.svg similarity index 100% rename from static/assets/img/icons/x.svg rename to static/assets/img/icons.bak/x.svg diff --git a/static/assets/img/icons.bak/yellow.png b/static/assets/img/icons.bak/yellow.png new file mode 100644 index 0000000..7f2e2f9 Binary files /dev/null and b/static/assets/img/icons.bak/yellow.png differ diff --git a/static/assets/img/icons.bak/yellow_100x100.png b/static/assets/img/icons.bak/yellow_100x100.png new file mode 100644 index 0000000..9c9fa65 Binary files /dev/null and b/static/assets/img/icons.bak/yellow_100x100.png differ